bgrundmann7k downloadsWrite and view screenplays in Fountain format with index cards and lots of other features.
A plugin for writing screenplays in Fountain format inside Obsidian. Live formatting as you type, an editable index-card view, an outline-style sidebar, PDF export, rehearsal mode, snippets — basically the bits I kept wishing for whenever I tried to use Obsidian for actual scripts.

Type, watch it format:

Toggle between the editor and a near-print readonly view:

Reorder scenes by dragging index cards, then renumber them with two quick commands:

Rehearsal mode blacks out a character's dialogue:

#1#, #1A#, #I-1-A#, etc.) displayed in bold on left and right margins, with commands to automatically add or remove scene numbers^ marker on the second character) renders as two side-by-side columns in the readonly view and PDF; orphan or unpaired carets show in the editor in the theme's error color so you can see when a ^ had no effect[[todo: This is a todo]][[@marker]] syntax) that appear in the margin during reading view[[>target]] or [[>target|display text]]) — clickable in reading view, autocomplete in editor, automatically rewritten when the target is renamed⌘X) and duplicate (⌘C, ↓, ⌘V), or to cut a scene out and paste it into another fileSee here Command Reference.
⚠️ Important: This plugin is incompatible with the Custom File Extensions plugin when configured to handle .fountain files.
If you have Custom File Extensions plugin installed and configured to open .fountain files, the plugin may crash without obvious error messages. To fix this:
.fountain from the list of custom file extensionsThis plugin handles .fountain files natively and doesn't require Custom File Extensions to work properly.
The index card view is the structural read on your script — a map you can rearrange. It is not a second editor; anything that changes scene contents (synopsis text, dialogue, action) lives in the editor.
Press Cmd/Ctrl+Shift+I to flip between the editor (or readonly script) and the index card view. The toggle remembers where you came from:
A round-trip with no edits leaves you (approximately) where you started.
Enter saves, Esc cancels, click outside also saves.## Title form so you can change depth or, by clearing the input, delete the section heading entirely.Hover the left edge of any card (or the right edge of the last scene in a section) to reveal a thin gutter with two stacked buttons: + inserts a new .SCENE HEADING placeholder, # inserts a new # section. The new card or heading auto-focuses its rename input so you can start typing immediately. Empty sections show a dashed + card as the persistent aim point.
A horizontal + section bar shows above the first section (when the doc starts with one) and at the bottom of the doc, so you can prepend or append a section without finding a specific card to anchor to.
There is no per-card menu. Use Select current scene (Cmd/Ctrl+Shift+L) in the editor to set the selection to the whole scene, then compose with the system clipboard:
⌘⇧L, ⌘X — delete a scene.⌘⇧L, ⌘C, ↓, ⌘V — duplicate a scene.⌘⇧L, ⌘X, switch file, ⌘V — move a scene across files.Drag any card onto the snippets section in the sidebar to copy that scene as a new snippet. The original scene stays in the script (snippets are a library, not a destination). Cross-file drags are supported — the dragged scene lands in the destination script's # Snippets section.
The TOC sidebar is where the planning side of the plugin lives. Open it on the right and you get a live outline of your script — sections, scenes, synopses, and todos in one tree.
#, ##, …) as a hierarchy, with their scenes nested inside.= ... Fountain syntax) shown as your outline.[[todo: ...]]) listed under their containing scene.Click any of them to jump to that location in the script.
At the top of the sidebar:
Margin marks are special annotations that render as single words in the page margin during reading view, allowing you to quickly scan for specific moments in your script.
Use [[@marker_word]] where the marker word is alphanumeric with underscores (no spaces):
The magician waves the wand, the ball disappears. [[@effect]]
The audience gasps. [[@laugh]]
The lights dim. [[@lights]]
Magic/Performance Scripts: Mark effects with [[@effect]]
Comedy Scripts: Mark jokes with [[@setup]], [[@punchline]], [[@laugh]]
Drama Scripts: Mark emotional beats with [[@tension]], [[@release]], [[@revelation]]
Technical Scripts: Mark cues with [[@lights]], [[@sound]], [[@music]]
Link to other files in your vault — other fountain scripts, markdown character notes, research documents, etc. Obsidian's standard [[wiki-links]] can't be used inside fountain files because Fountain already uses [[ ]] for notes (comments), so this plugin uses a > prefix:
INT. KITCHEN - DAY
JANE enters, holding the file from earlier. [[>act-one|earlier scenes]]
JANE
(to herself)
This changes everything.
= See [[>characters/jane.md]] for backstory.
[[>target]] — display the target as the link text[[>target|display text]] — show custom text for the linkThe target is resolved the same way as Obsidian's wiki-links — by basename or path, with or without file extension. So [[>jane]], [[>jane.md]], and [[>characters/jane]] all resolve to characters/jane.md if that's the closest matching file.
[[> triggers autocomplete with vault file names — pick one and the closing ]] is added for you.[[ ]] with a > prefix), so they follow the Hide notes option in the PDF dialog. With Hide notes off, the link's display text (or target name) renders inline as plain text. With Hide notes on, links are omitted along with every other note. Use plain prose if you want the word to remain in a notes-hidden export.[[>...]] in your fountain files is updated automatically — preserving the form you originally used (basename vs full path, with/without extension)..fountain file links don't appear in Obsidian's backlinks pane or graph view. The Obsidian plugin API doesn't yet expose link metadata for non-markdown file types.Scene numbers follow the Fountain specification and allow you to number your scenes for production purposes. They appear in bold on both the left and right margins of your script.
Add scene numbers at the end of any scene heading using the format #content#:
INT. HOUSE - DAY #1#
EXT. PARK - NIGHT #2A#
INT. OFFICE - MORNING #I-1-A#
FLASHBACK - INT. CHILDHOOD HOME #110A#
The plugin supports all Fountain specification scene number formats:
#1#, #42#, #999##1A#, #1a#, #2B#, #A1##I-1-A#, #1.5#, #1-2-3##1.#, #2.1#In Reading View: Scene numbers appear in bold on both margins
2A. INT. HOUSE - DAY 2A
In PDF Export: Scene numbers are positioned in the left and right margins with proper spacing to avoid text overlap
The plugin provides two commands to help manage scene numbers automatically:
Add Scene Numbers
Remove Scene Numbers
Access these commands through Obsidian's command palette (Cmd/Ctrl+P) when a fountain file is open.
# markersThe plugin provides three commands to create filtered versions of your scripts, perfect for creating actor sides, technical scripts, or focused drafts.
Create a version of your script with specific characters' dialogue removed:
Selectively remove structural elements from your script:
Filter out specific fountain element types:
Access these commands through Obsidian's command palette (Cmd/Ctrl+P) when a fountain file is open.
The snippets feature allows you to store blocks of content within your fountain document for two main purposes:
Reusable Content: Store frequently used elements like:
Temporary Stash: Use snippets as a holding area for uncertain content:
Unlike the boneyard (which hides content completely), snippets remain visible in the sidebar, making them perfect for content you're actively reconsidering or might want to quickly reintegrate.
Snippets are stored at the end of your fountain document in a special section:
# Snippets
EXT. COFFEE SHOP - DAY
The usual busy morning crowd fills the cozy coffee shop.
===
WAITRESS
(approaching)
What can I get you today?
===
FADE TO BLACK:
Method 1: Direct editing
# Snippets section=== (page breaks)Method 2: Keyboard shortcuts
Method 3: Drag and drop
# Snippets is considered snippet content, even other section headersThis is the result of me realising that https://github.com/Darakah/obsidian-fountain isn't a thing anymore when I setup a new vault.
And obsidian-fountain-editor only solves the editing of markdown files marked as fountain in the header. But doesn't give you a readonly view, and treats fountain notes as links. Which for most people is probably a feature, but for me is primarily annoying, as I do have lots of scripts with fountain notes in them. And while I do want and use synopsis they for me do not do the same thing.
So at first I quickly threw together fountain-js and the css written by Bluemoondragon07 at the obsidian forum.
Than I started adding more features and eventually got fully nerdsniped into writing my own parser (because fountain-js does not give you offsets in the source and it's not a trivial fix because of the way it handles boneyards by pre-processing the source).
Once I got that far I realised that I wanted the ability to integrate the editor and the readonly view, so I ended up taking over the functionality of obsidian-fountain-editor as well.
So here we are. Hopefully this is useful to more people than just me ;-) If it is let me know.