Writing a script in plain text
A script can be a plain text file. Characters and line breaks, and that’s all that’s in there.
The formatting comes from a handful of marks that were already how people typed scripts before there was software to do it for them. Here’s what those are, and what the file gives you afterwards.
What plain text means
A plain text file holds characters and line breaks. There’s no hidden layer underneath describing fonts or margins, so there’s nothing in it to be lost or misread by a program that has never seen it before.
What it carries instead is a convention. If everyone agrees that a line starting with INT. is a scene heading, then that line is a scene heading, and anything that knows the convention sets it correctly.
Fountain and Markdown are those agreements. It’s also why the screenplay conventions feel arbitrary until you know where they came from: the indents were tab stops on a typewriter, and the page-a-minute rule is an accident of how much Courier fits on a sheet of paper. Nobody designed it. It settled.
Markdown, briefly
Markdown is the older and more general of the two, written for the web and now used almost everywhere text gets typed. Its marks are the ones people were already using in email: # for a heading, asterisks for emphasis, a blank line for a new paragraph.
Comic scripts here are Markdown, because a comic script is mostly a hierarchy and that’s what Markdown is good at. A page is a heading, a panel is a heading below it, and everything under a panel belongs to it.
What you type
# EXT. RIVER ROAD - DAWN
## WIDE. Mist sitting on the water.
CAPTION: The bus leaves before the sun does.
Which reads perfectly well before anything renders it. The full set of marks is in the comic script format guide.
Fountain, briefly
Fountain does the same job for screenplays with almost no marks at all, because screenplay layout was conventional long before it. A line in caps with text beneath it is somebody speaking, a line starting with INT. is a scene heading, and the rest is typing.
What you type
INT. NOODLE STALL - NIGHT
Steam off the pots. JANIDA counts coins onto the counter.
JANIDA
Two more and I stop.
What you get
The indents on the right are worked out from the shape of the lines on the left. That’s the whole trick. Full syntax in the Fountain format guide.
What the file gives you
- It outlives the software
- A script written in plain text in 1995 opens today, in anything. That’s a property of the file rather than a promise about any program.
- You can see what changed
- Two drafts compare line by line, in version control or any diff tool, so you can find the scene you cut and get it back. Document formats compare badly, since their markup shifts along with the words.
- It holds what you typed
- No autocorrect on a character’s name, no style drifting on one page, no template underneath it.
- It goes everywhere
- Email it, put it in a repository, paste it into a message, open it on a phone. Every tool that handles text handles it.
- It’s small
- A feature-length screenplay is well under a hundred kilobytes. A whole shelf of drafts fits in the space of one photograph.
What you give up
There are real costs, and they’re worth saying out loud.
- A few marks to learn. Barely any for a screenplay. A comic script asks you to remember that
#is a page and##is a panel. - Some workflows want a particular file. A production office may ask for a format that isn’t this one. Most screenwriting software imports Fountain, so the way across exists, and it’s a step you take.
- No formatting escape hatch. If you want a page to look a particular way for its own sake, plain text gives you the standard layout instead. That’s the deal.
For most writing, most of the time, I take that trade. You’re typing the script either way, and this way the file is one you can still open in twenty years.
Where the formatting comes from
The marks are an agreement, so something still has to read them and set the page. Here that happens while you type: the lines format themselves as you go, and the pages break at the standard length, so the count you see is the count that prints.
Your file doesn’t change underneath you. It holds exactly the characters you typed, with the marks where you put them. Page numbers and panel numbers get worked out when they’re needed, so a script you open a year from now reads the way you left it.