Skip to content
StageType

StageType

A free screenplay editor for students, playwrights, filmmakers and producers. You write the story; StageType handles professional screenplay formatting, page breaks and saving.

No account, no download and no sign-up. It runs in your web browser, and your scripts stay on your device unless you choose to save them somewhere else.

What StageType is for

Screenplays follow strict layout conventions: a set font, margins, indents for character names and dialogue, capital letters in the right places and careful page breaks. Getting those details right by hand takes time away from writing. StageType applies them for you as you type, so students, playwrights and filmmakers can focus on characters, scenes and story.

StageType makes a script look professionally formatted. Formatting can't make a story good; that part is up to you.

How to use it

  1. Open the editor. It starts on a blank script page with the cursor on a Scene Heading, so you can type straight away.
  2. Type a scene heading such as INT. CLASSROOM - DAY (inside or outside, the place, then the time of day). Press Enter.
  3. Write the Action: what the audience sees and hears, in the present tense. Press Enter to start another paragraph.
  4. Start a character's speech by pressing Enter on an empty line (or Tab). Type the name, then press Enter to write their Dialogue.
  5. Keep going. After dialogue, Enter goes back to Action, and Enter again on the empty line starts the next character. StageType sets every indent, capital and page break.
  6. Add a title page from the Title page button, then choose A4 or US Letter paper and print or save as PDF from File → Print.

Here is roughly what that looks like on the page. You never type the spaces; StageType positions each element for you.

INT. SCHOOL CLASSROOM - DAY

An empty classroom. Rain taps against the windows.

SAM, 16, hides a torn envelope beneath his notebook.

                    MAYA
          What are you hiding?

                    SAM
               (too quickly)
          Nothing.

Maya reaches for the notebook. Sam pulls it away.

Keyboard shortcuts

KeyWhat it does
EnterStarts the next likely element: Scene Heading → Action, Character → Dialogue, Dialogue → Action, Transition → Scene Heading.
Enter on an empty lineTurns an empty Action line into a Character cue. Other empty elements go back to Action.
Tab / Shift+TabChanges the current element type forwards or backwards. Your text is kept.
Alt+1 to Alt+6Scene Heading, Action, Character, Parenthetical, Dialogue, Transition.
Ctrl+Z / Ctrl+YUndo and redo.
EscCloses suggestions, or leaves the script so Tab moves around the page normally.
Alt+S, Alt+B, Alt+CSwitch to the Shots, Board or Characters view, and back to the script.

What you can do

Keeping your scripts safe

StageType saves to your browser as you type, but browser storage is not permanent: clearing your browsing data, using a private window, or switching computers means the script isn't there. Download a backup (File → Download script file) regularly, or save to a project folder or Google Drive.

Converting an existing script with an LLM

StageType never sends your writing to AI services. However, if you already have a script or scene written in plain text, a word processor, or another format, you can ask any LLM (such as ChatGPT, Claude, Copilot, or Gemini) to convert your text into a .stagetype.json file and open it in StageType via File → Open script file….

Give the LLM the full machine-readable specification at llms.txt and point it to the complete Humpty Dumpty sample script JSON (humpty-dumpty.stagetype.json) (also viewable in the editor at Open sample script) as a working example, or paste the instructions below along with your existing script:

Instructions for LLMs to convert a script to StageType JSON

  1. Output a single UTF-8 JSON object with "schemaVersion": 4, a unique string "id", "titlePage", "settings", "blocks", "shots": [], "characters": [], "lighting": [], and "assets": [], following the Humpty Dumpty sample (humpty-dumpty.stagetype.json).
  2. Preserve all text in order inside the "blocks" array. Each item must be { "id": "b1", "type": "<type>", "text": "<text>" } with a unique string id and no newline characters inside text.
  3. Use only these six block types for blocks[].type: "scene" (uppercase slugline such as EXT. CASTLE WALL - DAY), "action" (one block per paragraph in normal sentence case), "character" (uppercase speaker cue such as CAPTAIN or NARRATOR (V.O.), without (CONT'D)), "parenthetical" (delivery note in parentheses such as (waving her away)), "dialogue" (spoken words in sentence case without outer quotation marks), and "transition" (uppercase transition such as CUT TO: or FADE OUT.).
  4. Save the output as <title>.stagetype.json and open it in StageType from File → Open script file….

Example StageType JSON from “Humpty Dumpty” (.stagetype.json)

{
  "schemaVersion": 4,
  "id": "sample-humpty-dumpty",
  "createdAt": "2026-11-02T00:00:00.000Z",
  "updatedAt": "2026-11-02T00:00:00.000Z",
  "titlePage": {
    "title": "Humpty Dumpty",
    "credit": "Written by",
    "author": "The StageType Team",
    "source": "Based on the traditional nursery rhyme",
    "draftDate": "Sample script",
    "contact": ""
  },
  "settings": {
    "paperSize": "a4",
    "storyboardFormat": "widescreen",
    "storyboardPaper": "a4",
    "storyboardOrientation": "landscape"
  },
  "blocks": [
    {
      "id": "scene1",
      "type": "scene",
      "text": "EXT. CASTLE WALL - DAY"
    },
    {
      "id": "s1-wall",
      "type": "action",
      "text": "A tall stone wall runs along the edge of a castle garden. The sun is out."
    },
    {
      "id": "s1-humpty",
      "type": "action",
      "text": "HUMPTY DUMPTY, a large egg in a small red bow tie, sits on the very top with his legs swinging."
    },
    {
      "id": "s1-narrator-cue",
      "type": "character",
      "text": "NARRATOR (V.O.)"
    },
    {
      "id": "s1-narrator",
      "type": "dialogue",
      "text": "Humpty Dumpty sat on a wall. He did this every day, and every day somebody told him not to."
    },
    {
      "id": "s1-cap1-cue",
      "type": "character",
      "text": "CAPTAIN"
    },
    {
      "id": "s1-cap1",
      "type": "dialogue",
      "text": "Morning, Humpty. That wall is very high."
    },
    {
      "id": "s1-hum2-cue",
      "type": "character",
      "text": "HUMPTY DUMPTY"
    },
    {
      "id": "s1-hum2-paren",
      "type": "parenthetical",
      "text": "(waving her away)"
    },
    {
      "id": "s1-hum2",
      "type": "dialogue",
      "text": "I have sat up here for years. Nothing is going to..."
    },
    {
      "id": "s3-fade",
      "type": "transition",
      "text": "FADE OUT."
    }
  ],
  "shots": [],
  "characters": [],
  "lighting": [],
  "assets": []
}

Not available yet

Version history for your scripts (saving earlier drafts inside StageType) is not available yet. Download a script file (File → Download script file) to keep copies of earlier drafts.

Version history

Made by

StageType is made by Ben Jones, a Software Engineering and Multimedia teacher. Visit .

StageType includes third-party software. Read the third-party software licences and notices.

Privacy

StageType has no accounts, no adverts and no analytics, and never sends your writing to AI services. Your scripts stay on your device until you save them to your local files or your Google Drive. Read the privacy statement for details.