How to write a comic script

Every comic script is really the same conversation. First you tell the artist where the story is. Then you tell them what happens. Then somebody says something.

This format keeps those three jobs separate and gets out of your way. It lives in a plain text file, so if you’ve ever written a note in a text editor, you’re already looking at the right tool. It’s the format I use for every Sahtu Press comic, and here’s the whole thing.

Start a comic script

The three marks you’ll use all the time

# EXT. NIGHT MARKET - NIGHT

A # starts a new page.

Most of the time I write a scene heading after it, because it’s a handy way to keep my place. It doesn’t have to be one. Write a bare # and the page calls itself PAGE 1, PAGE 2, and on down the script.

## Noi ducks under a table.

A ## starts a panel.

Write the description after it and keep going. Panels number themselves, so don’t bother typing “Panel 6” by hand. If tomorrow you decide something belongs between two panels you’ve already written, add it there. Everything else catches up.

You can name a panel yourself by bolding the label, ## **PANEL 1:** Noi ducks under a table., though most pages don’t need one and I leave them out.

NOI:	Sorry! Borrowing your floor.

A name in ALL CAPS followed by a colon starts a balloon.

Everything after the colon belongs to that balloon. Keep writing underneath and it stays there until another cue appears or the next panel begins. The gap after the colon is a tab, which lines the dialogue up in a column while you write.

That’s really all there is to the format. Everything else on this page is one of those three ideas wearing a different hat.

Sound effects and captions

I write captions exactly the same way as dialogue. Sound effects too. The cue changes, the writing doesn’t.

What you type

## Behind her, two GUARDS shove past a fruit stall.

SFX:	KRAK

GUARD 1 (BURST):	Stop her!

CAPTION:	Three minutes before the lanterns go out.

What you get

Behind her, two GUARDS shove past a fruit stall.

SFX: KRAK

GUARD 1 (BURST): Stop her!

CAPTION: Three minutes before the lanterns go out.

The sound effect comes out heavy and tracked, the caption sits in its own box, the dialogue stays plain. Three cues, one mark, and the lettering follows the name you put in front of it.

Anything you use as a cue works this way, so radio chatter and narration go in the same shape as everybody else.

When the letterer needs to know how it sounds

Every now and then somebody is whispering, or shouting through a door, or thinking rather than talking. That’s what the parenthetical after the name is for.

JANIDA (SMALL):	Half taken.

The ones that come up in my scripts:

  • (BURST) for a shout, shaped to break out of the balloon.
  • (SMALL) for a line lettered quieter than the rest.
  • (THOUGHT) for a thought balloon.
  • (OFF) for somebody speaking from outside the panel.
  • (LINKED) for two balloons joined by a tail, read as one breath.

Whatever you put in the brackets goes through to the letterer, so (SUNG) and (THROUGH THE DOOR) work as well as any of these. I only write one when the letterer genuinely needs it. A parenthetical on every line stops meaning anything.

Keep it in caps, the same as the name. A lowercase (small) lands in the panel description instead of the balloon, and it goes quietly.

When the shape of the panel is the story

Sometimes the beat needs the whole width of the page, or the smallest corner of it. Start the description with a caps keyword and the artist knows what you were after.

  • Size and layout. SPLASH, BIG PANEL, WIDE, TALL PANEL, THIN PANEL, SLIVER, INSET, BORDERLESS, FULL BLEED, BROKEN BORDER
  • Storytelling. FLASHBACK, MONTAGE, REPEAT PANEL, SILENT, DETAIL

I use one where the storytelling depends on it and let the artist lay out the rest. They’ll do it better than I would.

The keywords end with a period rather than a colon, which is what keeps them out of the balloons.

Two-page spreads

A spread is one image across two facing pages. Mark the page with [SPREAD] and open it with SPLASH SPREAD.

What you type

# EXT. LIGHTHOUSE ROCK - NIGHT [SPREAD]

## SPLASH SPREAD. FULL BLEED. The beam cuts the storm in half.

SFX:	VMMMMM

## INSET (far right). BROKEN BORDER. Keo leans out of the frame.

KEO:	Still here! Both of us!

What you get

EXT. LIGHTHOUSE ROCK - NIGHT [SPREAD]

SPLASH SPREAD. FULL BLEED. The beam cuts the storm in half.

SFX: VMMMMM

INSET (far right). BROKEN BORDER. Keo leans out of the frame.

KEO: Still here! Both of us!

A spread eats two pages out of the issue, so I count it as two while I’m planning. After that it behaves like any other page.

Notes to yourself

Some things you want to say to yourself rather than to the artist. Square brackets hold them.

What you type

[9-panel grid page. Even beats, metronome pacing.]

What you get

[9-panel grid page. Even beats, metronome pacing.]

Notes stay in your file where you can see them and stay out of the finished comic. Mine are usually the reason behind a page, or a question I haven’t settled yet.

Keys that save typing

These work while you’re writing a comic.

Tab
The tab after a cue, for dialogue. Shift + Tab still moves focus out.
Alt + 1
Turn the current line into a page.
Alt + 2
Turn the current line into a panel.
Alt + 3
Turn the current line into a balloon. A balloon only needs its cue, so the heading marks come off.

The cover

Everything you write before the first page becomes the cover.

Title: Moon’s Purpose
Series: Vongfai
Issue: 1
Writer: Nor Sanavongsay
Artist:
Letterer:

Series, Issue, Writer, Author, Artist, Illustrator, Penciller, Inker, Colorist, Letterer, Designer, Cover, Translator, Editor, Contact, Date, Draft and Copyright are all recognised on sight.

I leave the roles I haven’t cast sitting there empty, the way they are above. A blank field stays off the cover until there’s a name in it.