arqoJoin waitlist
    Open spec · MIT-licensed · Forkable

    The open conformance suite
    for Final Draft round-tripping.

    20 fixtures. 33 tracked features. One canonical screenplay model. Any implementation can be scored against the same ruler, including ours. The suite, the fixtures, and the reference adapter are MIT-licensed and live in the same repo as the app.

    Fixtures
    20
    Features tracked
    33
    Arqo pass rate
    20 / 20
    Why publish it

    “Does it round-trip FDX?” is the one question every writer asks a new screenwriting tool.

    There was no public test suite for it. So we wrote one. It covers the real gnarly corners — locked scene numbers with letter suffixes (42A), OMITTED scenes, SceneProperties with Title / Length / Color, writer-forced page breaks, revision marks at both paragraph and run level, multi-paragraph script notes with inline bold/italic, and dozens more — and it's MIT-licensed because a shared spec is good for the whole ecosystem.

    If you're a writer, this page tells you how trustworthy a given tool's FDX path is. If you're building a screenwriting app, you can drop in an adapter and score your own implementation in an afternoon.

    How scoring works

    One round trip. One diff. No hand-waving.

    1. Step 1
      Parse

      Your implementation reads the fixture into its own internal representation.

    2. Step 2
      Canonicalize

      Project that representation into the shared canonical screenplay model. This is the only lossy step — anything the canonical doesn't cover is implementation-defined passthrough.

    3. Step 3
      Emit

      Write the internal representation back out to FDX.

    4. Step 4
      Re-parse & compare

      Parse the emitted FDX again, canonicalize, and structurally deep-equal the two canonical forms. Every differing field is a reported gap.

    What the suite covers

    The gnarly corners real writers hit.

    Structure
    • Scene Heading, Action, Character, Dialogue, Parenthetical, Transition, General
    • Character cue extensions: (V.O.), (O.S.), (CONT'D), (filtered)
    • Dual dialogue blocks, including parentheticals inside each speaker
    • Complex act-break and section layouts (MONTAGE, DREAM SEQUENCE, FLASHBACK, INTERCUT)
    Production drafts
    • Locked scene numbers — integer (42) and letter-suffixed (42A)
    • Mixed-lock-state scripts (some scenes locked, others not)
    • SceneProperties — Title, Length, Color (ARGB), Locked, <SceneArcBeats/>
    • OMITTED scenes with Length="0"
    • Writer-forced page breaks (StartsNewPage="Yes")
    Revisions
    • <Revisions> block with per-set metadata and active-set pointer
    • Paragraph-level revision marks (<Paragraph Revised>)
    • Per-run <Text RevisionID> stamps
    • Custom revision Marks (*, **, ***, +) and ARGB colors
    Formatting
    • Bold, Italic, Underline, Strikethrough, and combined-style runs
    • Unicode text (accents, Greek, Japanese, Arabic RTL, Chinese, emoji)
    • XML entity escaping (&, <, >)
    Script notes
    • <ScriptNote> children on paragraphs with ID and ARGB Color attrs
    • Multi-paragraph note bodies with inline Bold / Italic preserved
    Title page
    • Title, Author, Source, Draft Date, Contact, Notes
    • Multiple Contact entries on one page
    • <TitlePage><HeaderAndFooter> content with visibility attrs
    Score your own implementation

    Bring your parser. Run the suite.

    If you're building a screenwriting tool, implement the FdxAdapter interface — a thin wrapper around your parser, writer, and a projection into the canonical model. Run the suite locally. Get a Markdown scorecard showing exactly which fixtures round-trip cleanly and which drop which attribute on which path.

    The scorecard is the same one we run against our own adapter. No comparison matrix lives on this page — we'd rather keep the suite neutral than post a leaderboard we're on.

    Fork the suite on GitHubRead the spec
    Contribute a fixture

    Found a script that breaks the round trip? That's the next fixture.

    Drop your .fdx into tests/fixtures/fdx/, add a .meta.json at fdx-conformance/fixtures/ declaring which features it exercises, and open a PR. If it exposes a real gap in the reference adapter, we fix the adapter in the same PR. The suite grows, the spec sharpens, every implementation gets better.

    Good fixtures

    Short, targeted, one category per file. Real-world source beats synthetic when available.

    Provenance

    Every fixture carries a source label. Public-domain screenplays and trial exports are welcome; copyrighted material is not.

    License

    MIT. Fork it, adapt it, rename it. We only ask that contributed fixtures ship under the same license.

    FDX Conformance · maintained by Arqo · MIT-licensed
    github.com/ahujatries/Arqo1/fdx-conformance