Non-AI Verified

Show how your script was written, not just that it was.

EnsembleWriter keeps a record of how every line of your screenplay got onto the page: typed in the editor, pasted or imported. Turn on the badge and every PDF you export while signed in carries a signed certificate anyone can check.

Turn on the badge → Free on every plan. On by default for new scripts.

EnsembleWriter / Writing record

Night Ferry

Writing record issued October 13, 2026

Typed in Ensemble
94.2%
Pasted
3.1%
Unverified
2.7%
Active writing time
43.6 hours
Writers
1 writer
Length
98 pages
Text fingerprint
9f2c6b0e4a7d1c3f58b2e6a0d4c7f19b3e8a5d2c6f0b4e7a1d3c9f5b2e8a6d04
Example certificate. Figures are illustrative.
Why it matters

Everyone is asking the question. Nobody can answer it from the text alone.

Contests, producers, agents and teachers now want to know whether a script was written by a person. No detector can tell from the finished pages. What can be shown is the process: how the words arrived, over how many hours, from how many hands. That is what Ensemble records, as it happens, and signs when you export.

01

Recorded as you write

Every insert is labelled the moment it happens, keystroke by keystroke. There is nothing to remember to do and nothing to fill in afterwards.

02

One certificate per version

A certificate covers one exact text. Change a comma and the next export gets a new one, while the old one still says what it covered.

03

Checkable by anyone

Each certificate is digitally signed. A reader scans the code on your title page and sees the record, with no account and no request to you.

What a reader sees

A small mark on the title page. A full record behind it.

1

The badge on your PDF

With the badge on, the title page of every PDF you export while signed in gets a small QR code and a one-line address. Your script's share page gets the same link.

2

The certificate page

The link opens a public page showing the title, page count, the typed, pasted and imported shares, active writing time and the number of writers. No names, no text, no account needed.

3

The signed file

Under the page sits the certificate itself: a signed statement that a technical reader can download and check against Ensemble's published key, with no trust in the page required.

NIGHT FERRY
Written by
Jordan Reyes
Writing record: ensemblewriter.com/verify/k7q2m3x4vb3n6ztp5wcd6hjr2a
The mark on an exported title page.
What is recorded

Five labels. Every byte of the script carries one.

The record is a map of the text, not a judgement about it. Each stretch of the script is marked with how it arrived, and the percentages on the certificate are simply those stretches added up.

Typed in Ensemble

Entered in the editor by keyboard, dictation or autocorrect. Cutting and pasting your own text within the script keeps its label, and so do undo and redo.

Pasted

Pasted in from somewhere other than this script. A long replacement from a rewriting tool counts here too, since it is not autocorrect.

Imported

Text that came in from a file you uploaded, or from one of the sample scripts.

Unverified

Text Ensemble's servers did not watch arrive: edits made offline and replayed later, a script written while signed out and saved to an account afterwards, or a restored older version.

Before tracking began

Text that was already in the script when this record started. Older scripts read mostly as this, and that is stated plainly rather than guessed at.

Alongside the labels, the record counts active writing time, one minute for every minute each writer edited the script, and how many people wrote in it. It never records who they are.

How it works

Built so the record cannot flatter the writer.

The design has one rule: only what Ensemble's servers saw happen is counted as seen. Everything else is marked unverified, by construction rather than by policy.

1

Labelled at the keystroke

The editor attaches an origin to every insert as it happens, reading the input event itself: a key press, a paste, a dictation result, an imported file. Moving text around, undo and redo carry the original label with the text.

2

Counted only when the server watched

Labels are recorded only as they stream over the live editing connection, the same channel that keeps collaborators in sync. Any text that reaches the server another way is caught on the next read, compared against the record's own copy, and marked unverified.

3

Fingerprinted to the exact text

When you export, the script's text is hashed with SHA-256. The certificate is tied to that fingerprint, so it vouches for one precise version and nothing else. Edit the script and the next export is issued its own certificate.

4

Signed with a published key

The certificate's contents are signed with Ed25519, a modern public-key signature. The signed bytes are stored exactly as issued, never rebuilt, and the matching public key is published at a fixed address, so anyone can check a certificate offline.

The signed certificate

Every certificate page has a machine-readable twin at the same address with .json on the end. It holds the signed statement verbatim, the signature, the algorithm and where to find the key.

To check one: fetch the public key, verify the signature over the payload bytes, and read the payload. Nothing on the page has to be trusted for that to work.

Certificate page ensemblewriter.com/verify/<id> Signed JSON ensemblewriter.com/verify/<id>.json Public keys ensemblewriter.com/.well-known/ensemble-certificate-keys.json
// GET /verify/<id>.json
{
  "payload": "{\"v\":1,\"id\":\"k7q2m3...\",\"title\":\"Night Ferry\",
     \"page_count\":98,\"text_sha256\":\"9f2c6b0e...\",
     \"shares\":{\"typed\":94.2,\"pasted\":3.1,\"imported\":0,
     \"unverified\":2.7,\"legacy\":0},\"active_minutes\":2614,
     \"writers\":1,\"tracking_since\":\"2026-10-13T14:02:11Z\",
     \"issued_at\":\"2026-10-13T18:31:40Z\",\"key_id\":\"3f9a1c7e02b4d685\"}",
  "signature": "rN3kVq8Jz0b3Yf...1x9wCg==",
  "algorithm": "Ed25519",
  "key_id": "3f9a1c7e02b4d685",
  "public_key_url": "/.well-known/ensemble-certificate-keys.json"
}
What it does not prove

The record shows how the text got into Ensemble. It does not show who thought of the words.

Someone could type in text from somewhere else and it would count as typed. The labels come from the writer's own editor. Read a certificate as a record of process, with the active hours and the writer count beside it, not as a verdict on authorship. The certificate page says exactly this, so a reader is never told more than the record can support.

Privacy

The certificate names the script. Never the writer, never the text.

No names

A certificate shows a writer count. It never shows a name, an email address or anything that identifies a person.

No script text

Only the fingerprint of the text is on the certificate. The hash cannot be turned back into the pages.

Shared by link only

Certificate pages are kept out of search engines, and their addresses are 128-bit random ids that cannot be guessed.

Yours to remove

The badge is a switch only the script's owner can flip. Deleting a script deletes its record and every certificate issued for it.

Full details in the privacy policy.

Questions
Does it cost anything?

No. The writing record and the badge are free on every plan, with nothing to upgrade.

Can I turn it off?

Yes. The Non-AI Verified card at the bottom of the right sidebar opens the record and the Show the badge switch. It is on for new scripts and off for scripts created before the feature existed.

What about scripts I wrote before this existed?

Text already in the script when tracking began is labelled exactly that. The record never guesses backwards, so an older script reads mostly as before tracking began until new pages are written.

I write with a co-writer. Does it still work?

Yes. Every writer's inserts are labelled on the same record, and the certificate shows how many people wrote in the script. Only the owner can change the badge setting.

What if I lose my connection while writing?

Your text is safe, but the edits made offline are marked unverified when they reach the server, because Ensemble did not watch them happen. That is the honest answer, and it is what the record says.

Write the next draft with the record running. Export it with the badge on.

Nothing to install. Scripts stay yours.

Open the editor →
© EnsembleWriter · Terms · Privacy Made with ❤️ in Brooklyn, NY