Create a private, dated proof of your screenplay's existence — without sending it out.
The Screenplay Registry is a free, open-source script registry for writers. It creates a cryptographic record of your exact draft while keeping the script on your computer. The Screenplay Registry hashes your draft on your own machine and anchors only the 32-byte fingerprint to Bitcoin, through OpenTimestamps. The script never goes with it.
Registering gives you two small files: a private .screenreg that keeps your script and its proof together, and a shareable version that proves the date without revealing a line. Anyone with the shareable file can verify your screenplay existed by a certain date — no server, no account.
Three deterministic steps. Two portable files.
Your script is canonicalized into normalized bytes; those bytes are hashed with SHA-256 into a 32-byte digest; the digest is committed to a Bitcoin block via OpenTimestamps. Every step runs in your own browser and is reproducible from open-source code and published test vectors. You get back two small .screenreg files — a shareable proof you can hand to anyone, and a private file you keep — both small enough to email. Only a 32-byte nonce-blinded commitment ever leaves your machine — never the digest itself, and never the script. Bring a Fountain file, plain text, or a PDF — register it right here in your browser (PDF text extraction runs locally in the page), or run the same steps yourself with the screenreg CLI.
UTF-8 NFC, LF line endings, BOM stripped. Cosmetic edits don't change the digest. A Merkle scene-tree is computed so you can later prove a single scene without exposing the rest of the script.
SHA-256 over the canonical bytes produces a 32-byte digest. The digest is the only thing that ever leaves your machine.
The digest is submitted to OpenTimestamps calendars, which aggregate it with thousands of others into a Merkle root that is committed to Bitcoin. No fee, no wallet, no Bitcoin in sight.
Identical inputs always produce an identical digest. A counterparty, a defendant's counsel, an academic auditor, or a future maintainer with no connection to the initial contributors can reproduce verification offline — using the shareable .screenreg file and a Bitcoin node. No server, no account, and no permission from us is ever required.
A proof in layers.
The protocol is designed in layers. The base layer is a free Bitcoin timestamp. Two more layers are specified but not live yet: a public index and an optional on-chain record. Both would be opt-in, and neither would change or replace the Bitcoin proof you already hold.
Bitcoin timestamp
A 32-byte fingerprint of your draft, submitted to OpenTimestamps in about a minute; the Bitcoin confirmation follows within a few hours. The script stays on your machine, and nothing is published unless you ask.
Public index
The public index is designed but not live yet. If you opt in, it would list a title and name, never the script. Each record's proof would still be its own Bitcoin timestamp, independent of any list we keep.
Design: spec §10 · registry index
Optional on-chain record
The on-chain record is designed but not live yet. It would be optional, public, and gasless to you. It would not prove authorship, and it would not replace registering with the Copyright Office.
Design: spec §9 · on-chain anchor
Follow the repository to track work on the public index and on-chain record. The Bitcoin timestamp already works today.
Same draft. Different guarantees.
You already have two places to deposit a screenplay for a dated record: the Writers Guild and the U.S. Copyright Office. Each gives you a different artifact at a different price. The Registry's base layer is a third option that costs nothing and runs in your browser. It is not a replacement for the other two, but something you can do alongside them in the time it takes to read this sentence.
Guild deposit
A copy of the script kept in a guild filing cabinet. Convenient but expires after five years.
Statutory filing
The legally-meaningful registration. Required to sue for infringement. Processing time per the Office's published status page is up to four months for electronic filings; you upload the script.
Cryptographic timestamp
A 32-byte fingerprint submitted to OpenTimestamps in about a minute, with Bitcoin confirmation a few hours later. The script stays on your machine. Use this with the Copyright Office, not instead of it.
FAQ
Short, honest answers. For the long version, see the full FAQ and the threat model.
Does my screenplay ever leave my computer?
No. Your draft is read and fingerprinted on your own machine — in your browser, or with the command-line tool if you prefer — and only a 32-byte fingerprint, not a single line of the script, is ever sent out to be timestamped. There is no upload, no account, and no copy of your screenplay on any server. There is nothing here for anyone to leak, subpoena, or train an AI on.
What does the proof actually prove?
That a draft with a specific fingerprint existed no later than a specific date — priority in time. Once the fingerprint is confirmed on Bitcoin (a few hours after you create it), no one — including us — can backdate or alter it, and anyone can verify it independently, forever, without trusting us.
What does it not prove?
It does not prove who wrote the script — a timestamp shows that bytes existed at a time, not who authored them. Authorship is established by the surrounding chain of custody: drafts, emails, version control, witnesses, and depositions. And it is not a substitute for registering with the U.S. Copyright Office, which is the procedural prerequisite to sue for infringement and the source of statutory damages. Use this alongside the Copyright Office, not instead of it.
To prove it later, do I have to reveal my script?
To prove that the fingerprint is a particular screenplay, yes — you show that screenplay. But you choose when, and to whom. Until then, the only thing that has ever left your machine is an opaque 32-byte fingerprint, which reveals nothing about the content. And when you do reveal it, the math proves it is the exact, unaltered draft that existed on the recorded date — it cannot be a different or edited version.
How is this different from the WGA or the Copyright Office?
The WGA keeps a copy of your script on file for five years (about $25). The Copyright Office is the statutory registration you need before you can sue, and you upload the script to it (about $45, with a processing wait). This is a third, free option that runs in your browser in seconds and keeps the script on your machine. It complements the other two; it doesn't replace them.
Is it really free? Do I need Bitcoin or a wallet?
Free, with no account, no payment, no token, and no wallet. Bitcoin is only the public ledger the timestamp is anchored to, through OpenTimestamps — there is no fee, no coin to buy, and no wallet popup. You never have to think about Bitcoin at all.
Why does the confirmed proof take a few hours?
OpenTimestamps gives you a pending proof almost immediately, then folds your fingerprint together with many others into a single summary that is committed to a Bitcoin block — usually within a few hours. Once that block is mined and the proof is upgraded, it stands on its own, permanently. The wait is Bitcoin's, not ours.
What happens to my proof if this website disappears?
Once your proof is confirmed on Bitcoin, it no longer depends on us at all. It verifies against the Bitcoin blockchain using open-source code — no server and no company required — so anyone can check it even if this site is long gone. That permanence is the whole point.
What can I register, and from where?
Drop a Fountain file, plain text, or a PDF straight into the browser — PDF text extraction runs locally in the page, so nothing is uploaded. Prefer the terminal? The screenreg CLI does the same registration with more options. Either way, the work happens on your own machine.
A new adoptable standard.
Writers can create or verify a proof right on The Screenplay Registry website — no command line required.
Power users can do the same from the screenreg CLI, with advanced options for generating and verifying proofs on their own. And developers can go further still, integrating the open ScreenReg standard directly into their own apps.
The protocol is fully specified, the reference implementation is MIT-licensed TypeScript, and every .screenreg proof verifies on its own against Bitcoin. However it's created — website, CLI, or another app — the proof is identical: portable, trustless, independently verifiable.
No account. No API key. No permission required.
// Embed "register this draft" in your editor — runs in the user's browser. // Vendor the MIT reference modules (src/shared); no package, no CDN, no us. import { register, verify } from "./screenreg/index.js"; // hash + anchor locally; the draft text never leaves the tab const proof = await register(draftText, { format: "fountain" }); proof.screenreg // Uint8Array — full proof (script + timestamp) proof.evidence // Uint8Array — shareable proof, omits the script proof.claimHash // "sha256:9f2c4e7a…d771ba" // verify against Bitcoin — offline, no server in the trust path const r = await verify(proof.screenreg); // → { ok: true, anchoredAt: "2026-…Z", blockHeight: 875432 }
# Install once — Node ≥20, no Python, no native deps. $ npm install -g screenreg # or one-off: npx screenreg … # Generate and anchor the whole proof yourself — your machine, your keys. $ screenreg register draft.fountain --identity # draft.screenreg full proof, signed with your Ed25519 key # power-user options $ screenreg register draft.fountain --loose # separate manifest.json + .ots $ screenreg extract draft.pdf > draft.fountain # PDF → reviewable Fountain $ screenreg scene-prove draft.fountain draft.manifest.json 47 $ screenreg upgrade draft.proof.ots # fold in Bitcoin confirmation # verify anywhere, offline, against Bitcoin alone $ screenreg verify draft.screenreg # ✓ VERIFIED — claim hash matches and a Bitcoin attestation is present
The record belongs to the writer.
Screenwriters have always had to prove a draft is theirs by handing it over to someone for safekeeping. A custodian holds the record, sets the terms, charges the fee, and decides what counts. Proving your own work has meant getting permission to do it.
The Screenplay Registry doesn't work that way. There's no custodian in the middle. A writer can establish that a draft existed at a given moment and prove it to anyone, indefinitely, without needing a single party to vouch for them. The proof is anchored to Bitcoin rather than to us. Nobody can revoke it or take it away.
We're not trying to own this. We wrote the first version, but the goal is a trustless registry that belongs to no one in particular, ourselves included, and a standard like that was never going to stay with its authors for long. For now the initial contributors maintain it. The plan is to hand it to an independent technical council of working screenwriters, integrators, legal practitioners, and protocol engineers.
The license is what makes that real. Anyone can fork the spec, the test vectors, and the reference implementation and carry the work forward, no permission or cooperation from us required. We did that on purpose.
The full spec, by section.
- → Section 01 · Normalization
- → Section 02 · Envelope & Claim record (RFC 8785 canonicalization)
- → Section 03 · Scene + paragraph Merkle trees
- → Section 04 · Encrypted manifest fields (AES-256-GCM)
- → Section 05 · Similarity commitment layer
- → Section 06 · Comparison disclosure bundle
- → Section 07 · Time-locked encrypted fields (Drand)
- → Section 09 · Optional on-chain anchor (specified · not live)
- → Section 10 · Public registry index (specified · not live)
- → docs/threat-model.md · Threat model & non-goals