Skip to main content
ScreenJSON is a JSON Schema for screenplay documents. The authoritative machine-readable definition lives at https://screenjson.com/schema.json.

Top level

{
  "id":       "<uuid>",
  "version":  "1.0.0",
  "title":    { "en": "The Heist" },
  "lang":     "en",
  "charset":  "utf-8",
  "dir":      "ltr",
  "authors":  [ /* one or more */ ],
  "document": { "cover": { ... }, "scenes": [ ... ] }
}

Required at the root

id, version, title, lang, charset, dir, authors, document.

Optional at the root

generator, locale, contributors, characters, colors, sources, registrations, revisions, encrypt, license, taggable, genre, themes, logline, analysis.

Schema draft

Current draft id: https://screenjson.com/draft/2026-01/schema. Documents pin their authored schema via the root version field (semver).

Design commitments

  • Structural, not presentational. Element types describe what a thing is, not how it looks. Presentation lives in the optional layout block.
  • Language as first-class. Every user-facing text field is a BCP 47 keyed map.
  • Stable identity. Every referenceable node carries an RFC 4122 UUID.
  • additionalProperties: false everywhere. Extension data lives only in meta.
  • Analysis is additive. Everything under analysis is optional and discardable.

Reference pages

Document root

Required and optional properties at the top of a document.

Shared types

uuid, slug, lang, text, name, meta, tags, roles, datetime.

Authors & contributors

Credit model.

Characters

Character index.

Scenes

Scene shape with cast and production tags.

Sluglines

Structured scene headings.

Elements

Typed scene body elements.

Revisions & notes

Editorial passes and anchored annotations.

Layout

Optional rendering hints.

Analysis

Embeddings, passages, summaries.

Encryption

AES-256-CTR content encryption.

Conformance

Validation, versioning, extensions.