Proof · our own runs
Marks that survive real edits. Every number with sample, method and date.
Stock decoders lose a rotated image, a screenshot, a crop. Laidline reads them back.
See the original and the marked file side by sideStock decoder, then Laidline
- Rotated 5° either way Stock decoder 2.7% Laidline 100%, n=100, 95% interval 96% to 100%
- Screenshot (synthetic) Stock decoder 0% Laidline 100%, n=100, 95% interval 96% to 100%
- Centre crop to 75% Stock decoder 31.9% Laidline 100%, n=100, 95% interval 96% to 100%
- False positives 0 of 38,500 unmarked photos flagged At most 0.01%, the 95% upper bound
Our runs: n=100 marked photos per edit, 30 Sep 2026, against 493 for the stock decoder; false positives 27 Oct 2026.
A 70-bit keyed audio payload, read exactly or not at all.
Exact reads of 200 clips per codec; poor recordings read lower.
- Wrong payloads
- 0
- 95% interval
- 85% to 99.2%
- Rate
- Weighted by test set
- Wrong payloads
- 0
- 95% interval
- 98% to 100%
- Wrong payloads
- 0
- 95% interval
- 98% to 100%
Even at phone-call quality the payload reads back exactly, and every standard format reads in full.
- GPU deep scan survives trims, excerpts from 24 kbps; at 12 kbps, 94% .
- Otherwise edited audio gets presence plus fingerprint match: 99.7% from 10 s of speech.
Decode rate per edit. A stock decoder against Laidline, edit by edit.
The share of marked items whose exact payload read back after each edit. Benign edits only. Sample sizes differ, and for images the stock run is another scheme: each row names its own.
Stock n=493 · TrustMark Q · 29 Sep 2026
Stock n=493 · TrustMark Q · 29 Sep 2026
Stock n=493 · TrustMark Q · 29 Sep 2026
Stock n=493 · TrustMark Q · 29 Sep 2026
Stock n=493 · TrustMark Q · 29 Sep 2026
Stock n=493 · TrustMark Q · 29 Sep 2026
Stock n=493 · TrustMark Q · 29 Sep 2026
Stock n=43 · VideoSeal fast decoder · 29 Sep 2026
Stock n=43 · VideoSeal fast decoder · 29 Sep 2026
Stock n=43 · VideoSeal fast decoder · 29 Sep 2026
Stock n=43 · VideoSeal fast decoder · 29 Sep 2026
Stock n=43 · VideoSeal fast decoder · 29 Sep 2026
Stock n=43 · VideoSeal fast decoder · 29 Sep 2026
Stock n=41 · fast keyframe vote · 29 Sep 2026
Stock n=100 · AudioSeal fast read at 0.5 · 30 Sep 2026
Stock n=100 · AudioSeal fast read at 0.5 · 30 Sep 2026
Stock n=100 · AudioSeal fast read at 0.5 · 30 Sep 2026
Stock n=100 · AudioSeal fast read at 0.5 · 30 Sep 2026
Stock n=100 · KGW fast test · 29 Sep 2026
Stock n=200 · greedy KGW fast test · 29 Sep 2026
False positives and forgery. The numbers most vendors never publish.
Unmarked media our decoder flagged. Stock decoders were not run on these sets.
The 2026 campaign's pass lines were sealed before any of its results were read.
| Unmarked media | Laidline | Samples |
|---|---|---|
| Photos | 0 of 38,500, at most 0.01% | 38,500 |
| Clips | 0 of 4,854, at most 0.08% | 4,854 |
| Random reads | 0 of 200,000, at most 0.01% | 200,000 |
| Speech, keyed | 0 of 5,000, at most 0.08% | 5,000 |
| Music, keyed | 0.05% | 4,979 |
| Text, KGW grade B | 0 of 20,000, at most 0.02% | 20,000 |
Every value, as a table. With target, n and method.
A dash means no target was set, or no stock run.
Image
All 7 edits, with intervals
PixelSeal with the product embed and default reads, on COCO val2017 photos: 100 per edit, the stock decoder on 493. Measured 30 Sep 2026. Source: Grading: PixelSeal image scheme.
| Edit | Target | Stock | Laidline | 95% interval |
|---|---|---|---|---|
| Rotated 5° either way | 90% | 2.7%13 of 493 | 100%100 of 100 | 96% to 100% |
| Quarter turns and 180° | No target | 0%0 of 493 | 100%100 of 100 | 96% to 100% |
| Screenshot (synthetic) | 80% | 0%0 of 493 | 100%100 of 100 | 96% to 100% |
| Centre crop to 75% | No target | 31.9%157 of 493 | 100%100 of 100 | 96% to 100% |
| Centre crop to 50% | 80% | 0%0 of 493 | 87%87 of 100 | 79% to 93% |
| JPEG at quality 50 | No target | 96.8%477 of 493 | 99%99 of 100 | 94% to 99.9% |
| WebP at quality 50 | No target | 94.0%463 of 493 | 93%93 of 100 | 86% to 97% |
How each row was measured
- Rotated 5° either way
- PixelSeal, product embed and default reads, COCO val2017; rotate +5° and rotate -5° each 100 of 100
- Quarter turns and 180°
- PixelSeal, default reads: rotate 90° read directly 100 of 100, rotate 180° through the half-turn read 100 of 100
- Screenshot (synthetic)
- PixelSeal, default reads: 74 direct, 26 through the border cut
- Centre crop to 75%
- PixelSeal, product embed and default reads, COCO val2017
- Centre crop to 50%
- PixelSeal, product embed and default reads, COCO val2017 (all 9 views: 88)
- JPEG at quality 50
- PixelSeal, product embed and default reads, COCO val2017 (all 9 views: 100)
- WebP at quality 50
- PixelSeal, product embed and default reads, COCO val2017
Video
All 7 edits, with intervals
VideoSeal with the hardened decode and the geometry search, on 43 Xiph derf clips; the last row is the keyframe scheme on 41 clips. Measured 30 Sep 2026. Sources: Grading: Video (VideoSeal) and Grading: Video (keyframe TrustMark).
| Edit | Target | Stock | Laidline | 95% interval |
|---|---|---|---|---|
| Letterboxed | 80% | 34.9%15 of 43 | 100%43 of 43 | 91% to 100% |
| Screen capture | 80% | 69.8%30 of 43 | 100%43 of 43 | 91% to 100% |
| Centre crop to 80% | 90% | 62.8%27 of 43 | 97%42 of 43 | 87% to 99.6% |
| Corner crop to 80% | No target | 41.9%18 of 43 | 90%39 of 43 | 78% to 97% |
| Social re-encode | 80% | 62.8%27 of 43 | 76%33 of 43 | 62% to 87% |
| Rescale to half size | No target | 62.8%27 of 43 | 81%35 of 43 | 67% to 91% |
| Keyframe scheme, trimmed or middle 2 s kept | 90% | 0%0 of 41 | 90%37 of 41 | 77% to 97% |
How each row was measured
- Letterboxed
- VideoSeal, hardened decode with the geometry search, 43 Xiph derf clips, GPU (hardened without the search: 21)
- Screen capture
- VideoSeal, hardened decode with the geometry search, 43 Xiph derf clips (hardened without the search: 33)
- Centre crop to 80%
- VideoSeal, hardened decode with the geometry search, 43 Xiph derf clips (hardened without the search: 35)
- Corner crop to 80%
- VideoSeal, hardened decode with the geometry search, 43 Xiph derf clips (hardened without the search: 29)
- Social re-encode
- VideoSeal, hardened decode; the geometry search adds nothing here; 43 Xiph derf clips
- Rescale to half size
- VideoSeal, hardened decode with the geometry search, 43 Xiph derf clips (hardened without the search: 33)
- Keyframe scheme, trimmed or middle 2 s kept
- Keyframe TrustMark, hardened decode (gated vote, then the scan), 41 marked Xiph derf clips, CPU scheme
Audio, 16-bit mark
All 6 edits, with intervals
The AudioSeal 16-bit mark with the hardened decode, on a fresh set of 100 LibriSpeech clips per edit. Measured 30 Sep 2026. Source: Grading: Hardened audio decode.
| Edit | Target | Stock | Laidline | 95% interval |
|---|---|---|---|---|
| Start offset of 1 to 50 ms, file mark | 95% | 0%0 of 100 | 99%99 of 100 | 94% to 99.9% |
| Middle half of the clip kept, stream mark | No target | 6.0%6 of 100 | 100%100 of 100 | 96% to 100% |
| Mark covering only 25% of the clip | 90% | 0%0 of 100 | 100%100 of 100 | 96% to 100% |
| Mark covering only 10% of the clip | No target | 0%0 of 100 | 54%54 of 100 | 44% to 64% |
| Opus at 12 kbps, issuer exact, file mark | No target | 92.0%92 of 100 | 91%91 of 100 | 83% to 96% |
| Opus at 12 kbps, issuer exact, stream mark | No target | 55.0%55 of 100 | 55%55 of 100 | 45% to 65% |
How each row was measured
- Start offset of 1 to 50 ms, file mark
- AudioSeal 16-bit, hardened decode (phase search), fresh set of 100 LibriSpeech test-clean clips, GPU, replayed at the shipped constants; the lowest offset (8 ms) reads 99, every other 99 or 100
- Middle half of the clip kept, stream mark
- AudioSeal 16-bit, hardened decode, fresh set of 100 clips (middle 50% crop; the batch mark also 100, stock 8)
- Mark covering only 25% of the clip
- AudioSeal 16-bit batch mark, hardened decode (windowed read), fresh set of 100 clips, detection
- Mark covering only 10% of the clip
- AudioSeal 16-bit batch mark, hardened decode, fresh set of 100 clips, detection; reported, no target
- Opus at 12 kbps, issuer exact, file mark
- AudioSeal 16-bit, hardened decode, fresh set of 100 clips; issuer exact (all 16 bits right), not presence
- Opus at 12 kbps, issuer exact, stream mark
- AudioSeal 16-bit streaming mark, hardened decode, fresh set of 100 clips; issuer exact
Text
Both edits, with intervals
KGW with the hardened decode, an offline rescore of the bench texts. Measured 29 Sep 2026. Source: Grading: Per-signal grades.
| Edit | Target | Stock | Laidline | 95% interval |
|---|---|---|---|---|
| Marked text as 10% of a document | 90% | 32.0%32 of 100 | 100%100 of 100 | 96% to 100% |
| Marked text as 25%, greedy KGW | 90% | 17.0%34 of 200 | 79%158 of 200 | 72% to 85% |
How each row was measured
- Marked text as 10% of a document
- KGW at temperature 1.0, hardened decode (whole-text test and windows of 128, 256 and 512 tokens on exact binomial p-values), offline rescore of the 2026-09-29 bench texts (embed sweep, n=100); greedy KGW 6 -> 72
- Marked text as 25%, greedy KGW
- Greedy KGW, hardened decode, offline rescore of the 2026-09-29 bench texts (main row, n=200; k from 79.0% of 200); unedited greedy text reads 95.0%; missed target
Keyed audio payload
All 3 codec rows, with intervals
A keyed 70-bit payload read back exactly, on 200 fresh LibriSpeech clips per row, with 0 wrong payloads. No stock run on these rows. Measured 12 Oct 2026. Source: Benchmarks: The CPU standard, the default read on CPU.
| Edit | Target | Laidline | 95% interval |
|---|---|---|---|
| Opus 12 kbps | 95% | 97%193 of 200 | 85% to 99.2%Weighted by test set |
| Opus 24 kbps | No target | 100%200 of 200 | 98% to 100% |
| Standard formats | No target | 100%200 of 200 | 98% to 100% |
How each row was measured
- Opus 12 kbps
- Keyed 70-bit payload, verified-exact, 200 fresh LibriSpeech clips (F1); post-stratified rate 97.3% (test-clean 35/35, test-other 14/15, dev-clean 144/150, weights 1/2, 1/4, 1/4); 0 wrong payloads
- Opus 24 kbps
- Keyed 70-bit payload, verified-exact, 200 fresh LibriSpeech clips (F1), both envelopes; 0 wrong payloads
- Standard formats
- Keyed 70-bit payload, verified-exact, 200 of 200 on each row, both envelopes, default read on CPU; 0 wrong payloads
False positives and forgery
All 16 rows, with intervals
Unmarked media read as marked, and one analytic bound on forgery. Audio rows are for keyed deployments; text rows are grade B. No stock run on these rows. Measured 29 Sep to 29 Oct 2026. Each row's date and source are under the table.
| Media | Laidline | 95% interval |
|---|---|---|
| Photos, default reads | At most 0.01%0 of 38,500 | 0% to 0.01% |
| Photos, keyed payload accepted | At most 0.01%0 of 38,500 | 0% to 0.01% |
| Photos, TrustMark without its gates | 10.0%249 of 2,500 | 8.8% to 11.2% |
| Forged keyed payload accepted | 10−14Analytic bound | Not applicable |
| Clips, default reads | At most 0.08%0 of 4,854 | 0% to 0.08% |
| Clips, keyed payload accepted | At most 0.08%0 of 4,854 | 0% to 0.08% |
| Clips, keyframe payload accepted | At most 0.08%0 of 4,854 | 0% to 0.08% |
| Random reads, full geometry search | At most 0.01%0 of 200,000 | 0% to 0.01% |
| Speech, single utterances, keyed | At most 0.08%0 of 5,000 | 0% to 0.08% |
| Speech, 30 s joins, keyed | At most 0.08%0 of 5,000 | 0% to 0.08% |
| Speech, 120 s joins, keyed | At most 0.08%0 of 5,000 | 0% to 0.08% |
| Music, keyed | 0.05%2 of 4,979 | 0.01% to 0.15% |
| Environmental sounds, keyed | 0.30%15 of 5,000 | 0.18% to 0.50% |
| Voice calls, keyed | 0.05%2 of 4,000 | 0.01% to 0.19% |
| Text, SynthID, grade B | At most 0.02%0 of 20,000 | 0% to 0.02% |
| Text, KGW, grade B | At most 0.02%0 of 20,000 | 0% to 0.02% |
How each row was measured
- Photos, default reads
- PixelSeal, default reads, presence on 38,500 unmarked photos (19,175 COCO train2017 and 19,325 Open Images), none left out; the pass lines were sealed before any result was read; 2,200 screenshots of unmarked photos also read 0 flagged (upper bound 0.17%)
- Photos, keyed payload accepted
- Keyed PixelSeal, payload tag check on the same 38,500 unmarked photos as the default reads; a tag must verify before an issuer is shown, and none did
- Photos, TrustMark without its gates
- TrustMark soft decoding without its two gates, the fit half of the calibration photos: 249 of 2,500 carry payload version 1, the only version the decoder accepts (any version: 1,526, 61%); with the gates 0 of 5,000. TrustMark is the selectable scheme, not the PixelSeal default
- Forged keyed payload accepted
- Analytic own-accept bound for keyed PixelSeal at one key over the 4 default reads (10−13.4 over the 17 deep reads); a bound, not a measurement
- Clips, default reads
- VideoSeal, default reads, presence on 4,854 unmarked 5 s clips (user-generated clips from the YouTube UGC set 3,041, Wikimedia Commons 1,618, Xiph 93, local 1080p 46, Netflix Meridian 52, Sintel 4); 40 clips at 4096 × 2160 were above the pixel limit and are left out of n; the pass lines were sealed before any result was read
- Clips, keyed payload accepted
- Keyed VideoSeal, payload tag check on the same 4,854 unmarked 5 s clips as the default reads
- Clips, keyframe payload accepted
- Keyframe scheme (TrustMark on keyframes), payload tag check on the same 4,854 unmarked 5 s clips
- Random reads, full geometry search
- 200,000 full-search null draws (19 hypotheses, 4,000,000 hardened decodes), none with a CRC-valid candidate; the source states a one-sided 95% bound of 1.5e-5 per draw
- Speech, single utterances, keyed
- Keyed 70-bit payload deployment, public presence on 5,000 unmarked single utterances (LibriSpeech 3,177, Multilingual LibriSpeech 1,823), after the rule that hides the streaming card's unconfirmed presence in keyed deployments, replayed on the stored reads, not a new run; the payload tag was accepted on none of 26,979 unmarked keyed reads; the pass lines were sealed before any result was read
- Speech, 30 s joins, keyed
- Keyed 70-bit payload deployment, public presence on 5,000 unmarked 30 s joins of read speech, after the streaming-card rule, replayed on the stored reads
- Speech, 120 s joins, keyed
- Keyed 70-bit payload deployment, public presence on 5,000 unmarked 120 s joins of read speech, after the streaming-card rule, replayed on the stored reads
- Music, keyed
- Keyed 70-bit payload deployment, public presence on 4,979 unmarked music tracks (Free Music Archive; 21 files could not be decoded and are left out), after the streaming-card rule, replayed on the stored reads; the payload tag was accepted on none
- Environmental sounds, keyed
- Keyed 70-bit payload deployment, public presence on 5,000 unmarked environmental sounds (FSD50K evaluation set), after the streaming-card rule, replayed on the stored reads; added after the pass lines were sealed, so reported without a line; the payload tag was accepted on none
- Voice calls, keyed
- 1,000 unmarked units per row read keyed on a GPU, shipped default read (phase search off); 0 payload tags accepted; one hit each on the Opus and the packet-loss rows
- Text, SynthID, grade B
- SynthID, grade B at the shipped gate (p below 0.00001) on 20,000 unmarked texts: 5,000 each of human documents at 512, 1,024 and 8,192 tokens (arXiv, C4, mC4, PG-19, Wikipedia) and 5,000 unmarked language-model texts; presence without grade B fired on 19; the gate was chosen on these same documents, so this is not a held-out result; the pass lines were sealed before any result was read
- Text, KGW, grade B
- KGW, grade B at the shipped gate (p below 0.00001, exact binomial tail) on the same 20,000 unmarked texts as SynthID; presence without grade B fired on 32; the gate was chosen on these same documents, so this is not a held-out result, and KGW's rate shifts with the kind of text
Voice calls (keyed stream)
All 14 call paths, with intervals
A keyed 70-bit payload through the stream marker, then a simulated phone path, 100 calls per row. The shipped default, with the phase search off. No stock run on these rows. Measured 28 Oct 2026. Each row's source is under the table.
| Call | Laidline | 95% interval |
|---|---|---|
| 8.0 s delivered, 16 kHz | 100%100 of 100 | 96% to 100% |
| 8.0 s delivered, 24 kHz | 100%100 of 100 | 96% to 100% |
| 10 s utterance, 16 kHz | 100%100 of 100 | 96% to 100% |
| 10 s utterance, 24 kHz | 100%100 of 100 | 96% to 100% |
| 8 s utterance fed (7.5 s delivered), 16 kHz | 0%0 of 100 | 0% to 4% |
| 9.5 s excerpt off the 20 ms grid, 16 kHz | 6%6 of 100 | 2% to 13% |
| G.711 mu-law | 100%100 of 100 | 96% to 100% |
| Opus at 24 kbps | 100%100 of 100 | 96% to 100% |
| Opus at 12 kbps | 98%98 of 100 | 92% to 99.5% |
| Opus at 8 kbps | 0%0 of 100 | 0% to 4% |
| 10% packet loss, repeat-last fill | 100%100 of 100 | 96% to 100% |
| White noise at 25 dB | 83%83 of 100 | 74% to 90% |
| Babble noise at 20 dB | 94%94 of 100 | 87% to 98% |
| Reverberant room, 0 dB direct-to-reverb | 8%8 of 100 | 4% to 15% |
How each row was measured
- 8.0 s delivered, 16 or 24 kHz
- Keyed 70-bit payload through the buffered stream marker, shipped default read (phase search off) on a GPU, 100 units of 30 s cut from their start at 8.0 s delivered, payload read = tag verified and payload equal to the one written; 0 wrong; 7.5 s reads nothing
- 10 s utterance, 16 or 24 kHz
- Keyed 70-bit payload through the buffered stream marker, shipped default read (phase search off) on a GPU, payload read = tag verified and payload equal to the one written; 100 units per cell; 10 s fed delivers 9.5 s
- 8 s utterance fed (7.5 s delivered), 16 kHz
- Keyed 70-bit payload through the buffered stream marker, shipped default read (phase search off) on a GPU, payload read = tag verified and payload equal to the one written; 100 units per cell; 8 s fed delivers 7.5 s, under the floor, so the payload reads nothing and the presence is kept
- 9.5 s excerpt off the 20 ms grid, 16 kHz
- 9.5 s excerpts from random points of 30 s units, starting 1 to 319 samples off the grid; on the grid the same excerpts read 100 of 100; presence fired on 81 %; the phase search added since is not in this run (switched on, the v2 matrix of 2026-10-30 reads 194 of 200 at 16 kHz, pooled over two runs)
- G.711 mu-law
- Keyed 70-bit payload through the buffered stream marker, shipped default read (phase search off) on a GPU, payload read = tag verified and payload equal to the one written; 100 units per cell; A-law also 100 of 100
- Opus at 24 kbps
- Keyed 70-bit payload through the buffered stream marker, shipped default read (phase search off) on a GPU, payload read = tag verified and payload equal to the one written; 100 units per cell; Opus at 32 and 16 kbit/s also 100 of 100
- Opus at 12 kbps
- Keyed 70-bit payload through the buffered stream marker, shipped default read (phase search off) on a GPU, payload read = tag verified and payload equal to the one written; 100 units per cell
- Opus at 8 kbps
- Keyed 70-bit payload through the buffered stream marker, shipped default read (phase search off) on a GPU, payload read = tag verified and payload equal to the one written; 100 units per cell; the codec removes the mark: 4 of 50 even with the delay removed
- 10% packet loss, repeat-last fill
- Keyed 70-bit payload through the buffered stream marker, shipped default read (phase search off) on a GPU, payload read = tag verified and payload equal to the one written; 100 units per cell; zero fill also 100 of 100; 1, 3 and 5 % also 100 of 100
- White noise at 25 dB
- Keyed 70-bit payload through the buffered stream marker, shipped default read (phase search off) on a GPU, payload read = tag verified and payload equal to the one written; 100 units per cell; 30 dB 99 of 100, 20 dB 30 of 100; half the payloads are lost at about 22 dB
- Babble noise at 20 dB
- Keyed 70-bit payload through the buffered stream marker, shipped default read (phase search off) on a GPU, payload read = tag verified and payload equal to the one written; 100 units per cell
- Reverberant room, 0 dB direct-to-reverb
- Keyed 70-bit payload through the buffered stream marker, shipped default read (phase search off) on a GPU, payload read = tag verified and payload equal to the one written; 100 units per cell; presence on the public tier 94 of 100; across RT60 0.1 to 0.5 s the CPU sweep read 3 to 13 % (30 units each)
Opt-in phase search, ships off
Both call paths, with intervals
Keyed audio payload through a simulated phone path, 200 calls per row, read with the phase search switched on. The default keeps it off. No stock run on these rows. Measured 30 Oct 2026. Source: Benchmarks: With the phase search on.
| Call | Laidline | 95% interval |
|---|---|---|
| Opt-in phase search, off-grid calls | 97%194 of 200 | 93% to 99% |
| Opt-in phase search, G.722 calls | 96%192 of 200 | 92% to 98% |
How each row was measured
- Opt-in phase search, off-grid calls
- Opt-in phase search, ships off: keyed 70-bit payload, 9.5 s excerpts of 16 kHz speech starting off the 20 ms grid, read with the phase search switched on, 200 units, payload read = tag verified; with the search off, the shipped default, the same cell reads 6 of 100; on 26,000 unmarked units the search picked a keyless payload twice and the tag check rejected both
- Opt-in phase search, G.722 calls
- Opt-in phase search, ships off: keyed 70-bit payload, 10 s of speech through simulated G.722, read with the phase search switched on, 200 units, payload read = tag verified; with the search off, the shipped default, the same cell reads 0 of 100
Other measurements
All 8 measurements, with intervals
No stock run on these rows. Measured 29 Sep to 27 Oct 2026. Each row's date and source are under the table.
| Edit | Laidline | 95% interval |
|---|---|---|
| Images, lowest of rotate, turns, screenshot and 75% crop | 100%100 of 100 | 96% to 100% |
| Keyframe scheme, clips with no edit | 96%167 of 173 | 92% to 99% |
| Opus 12 kbps, GPU deep scan | 94%188 of 200 | 89% to 97% |
| Fingerprint match, codec rows pooled | 99.7%1,994 of 2,000 | 99.3% to 99.9% |
| Fingerprint match, lowest row (Opus 12 kbps) | 97%194 of 200 | 93% to 99% |
| A 3 s mark inside 30 s of speech | 98%98 of 100 | 92% to 99.5% |
| Same-model paraphrase, SynthID | 49%99 of 200 | 42% to 57% |
| Same-model paraphrase, KGW | 57%114 of 200 | 50% to 64% |
How each row was measured
- Images, lowest of rotate, turns, screenshot and 75% crop
- PixelSeal, product embed and default reads, COCO val2017; the lowest of rotate +5°, rotate -5°, rotate 90°, rotate 180°, screenshot and centre crop 75%, each 100 of 100
- Keyframe scheme, clips with no edit
- Keyframe scheme, keyed payload read back with its tag verified on 173 clips (2 refused by the quality floor) with no edit; the same test reads 169 of 174 for VideoSeal and 172 of 174 for keyed VideoSeal
- Opus 12 kbps, GPU deep scan
- Keyed 70-bit payload, deep scanning (hardened read) on a GPU, excerpts at any sample; best effort, no line; every other binding row 200 of 200
- Fingerprint match, codec rows pooled
- Keyed audio fingerprint confirmation on the product path, F1's 10 s cuts, 200 clips per codec row, ten rows; measured 2026-10-12 and 13
- Fingerprint match, lowest row (Opus 12 kbps)
- As the pooled fingerprint row; the 6 misses are payload reads (194 of 194 confirmed when the payload was chosen)
- A 3 s mark inside 30 s of speech
- Keyed P70 at alpha 1.41, full tier, decode hardened with the cell gate and the located path (before, the fine-read floor alone: 93)
- Same-model paraphrase, SynthID
- SynthID at temperature 1.0, fast test (the hardened decode answers as fast for SynthID); a designed limit
- Same-model paraphrase, KGW
- KGW at temperature 1.0, fast test of the robustness baseline; not re-measured under the hardened decode; a designed limit (greedy KGW: 61 of 200, 30.5%)
Time
All 3 timings
Wall-clock time on the CPU. Measured 11 to 19 Oct 2026. Sources: Benchmarks: PixelSeal, the default scheme and Benchmarks: Keyframe reader on ONNX Runtime. Each row's date is under the table.
| Task | Time |
|---|---|
| Mark one 1024 × 1024 photo | 1.1 s |
| Check a 5 s clip, 2 threads | 5.4 s |
| Check a 5 s clip, 8 threads | 2.8 s |
How each row was measured
- Mark one 1024 × 1024 photo
- PixelSeal mark through the public API on the CPU, timestamp authority per asset
- Check a 5 s clip, 2 or 8 threads
- Keyframe scheme (the CPU scheme; VideoSeal is the default), hardened keyframe decode, fingerprint frame included; the Xiph Akiyo clip at CIF. The Xiph Old Town Cross clip at 720p50: 12.308 s at 2 threads, 5.614 s at 8 threads
Known limits, including paraphrase, are in Robustness baseline: Proposed targets where none is set.
Outside what the product is built for, in our runs:
Audio under 8 s carries no payload; 0% of marked clips read one.
The audio payload is built for speech and conversations of 8 s or more, not music.
Marked music read back its keyed payload in 64% .
An unkeyed deployment flagged 7.3% of unmarked music tracks.
A full same-model paraphrase leaves 49% of SynthID marks.
A full same-model paraphrase leaves 57% of KGW marks.