Homepage cleaner, PDF Toolkit, and a live video route
Metadata removal as the browser tools ran
Metadata removal as the browser tools ran?
Homepage cleaner, PDF Toolkit, and a live video route Metadata removal here means what the live pages did to the fixtures in this capture. Image files go through the homepage cleaner. PDFs go through the PDF Toolkit’s metadata mode. Video has no separate cleaner page, so the video case uses a live video tool that writes a new file.
Metadata removal here means what the live pages did to the fixtures in this capture. Image files go through the homepage cleaner. PDFs go through the PDF Toolkit’s metadata mode. Video has no separate cleaner page, so the video case uses a live video tool that writes a new file.
JPEG, PNG, and WebP on the homepage cleaner are drawn to a canvas and saved again. The new file does not carry the old container’s EXIF, GPS, XMP, IPTC, or C2PA blocks. A date or logo drawn into the picture stays. After cleaning, a missing C2PA manifest does not show that a person made the image.
PDF metadata mode clears the supported Info dictionary fields: Title, Author, Subject, Keywords, Creator, and Producer. Visible page text stays. The mode does not promise to remove every XMP packet, attachment, annotation, form, script, signature, or embedded file. Encrypted PDFs are refused. A custom PDF can stay partial when the words on the page are still there. Clearing a rotation flag is not the same as redrawing the page.
Video Compressor and Video Upscaler leave ordinary container tags out of the new file by default. That does not remove burned-in captions, logos, or pixel watermarks, and it does not rotate the picture just because a display matrix changed. The September 2026 benchmark still holds the older engine-only MP4 and MOV rows.
A pass on one fixture is not a pass for every camera, encoder, or PDF producer.
The licence on each case is the licence that applies. CC0 applies only when that case says CC0.
Content Credentials and SynthID are a different job. They are read by the AI Image Origin Detector. Open the live tool
tests/fixtures/media-corpus manifest MC-IMG-001, constructed by scripts/generate-media-corpus.mjs. CC0-1.0 constructed original. Not regenerated by this capture.
Independent decode of the cleaned JPEG found no GPS IFD and no EXIF segment. An ICC profile is still present. Input ICC is 480 bytes c56e1685d888f5edb92fe07f2750f387f8fe8e91b32ff8fb0b56bfbbb9458353. Output ICC is 456 bytes 12afb4d9953adee0607d347daee5b78b18d6b3cab2d572b88970703f5edb37bc. Stored input pixels were 48x32 orientation 6. Cleaned pixels were 32x48 orientation none.
{"observedUnique":19,"violations":[],"scope":"Observed requests in this run only. Not a universal no-exfiltration certificate."}
pageErrorCount
0
Limitations recorded for this case
No processing screenshot was published. After the shutter the UI state was: ready. An unpublished attempt was kept at assets/_shutter-attempts/metadata-jpeg-gps-orientation-icc-processing.webp. That file is not a processing screenshot.
GPS and EXIF are absent on this download. The output ICC profile is present. Its SHA-256 differs from the input profile. This case is partial.
Cleaned pixel grid is 32x48 and the stored input grid is 48x32 on this file.
Capture instrumentation aborts known preexisting Cloudflare telemetry at static.cloudflareinsights.com and /cdn-cgi/rum before transmission. That block is not evidence that production has no analytics.
Screenshots from the capture
Input · queued · 1240×467. Metadata Cleaner showing mc-img-jpeg-eiffel-gps-ori-icc.jpg before sanitize. Row state was queued.Output · ready · 1240×475. Metadata Cleaner after mc-img-jpeg-eiffel-gps-ori-icc.jpg reached ready.
tests/fixtures/media-corpus manifest MC-IMG-002, constructed by scripts/generate-media-corpus.mjs. CC0-1.0 constructed original. Not regenerated by this capture.
{"observedUnique":18,"violations":[],"scope":"Observed requests in this run only. Not a universal no-exfiltration certificate."}
pageErrorCount
0
Limitations recorded for this case
No processing screenshot was published. After the shutter the UI state was: ready. An unpublished attempt was kept at assets/_shutter-attempts/metadata-png-alpha-text-processing.webp. That file is not a processing screenshot.
Capture instrumentation aborts known preexisting Cloudflare telemetry at static.cloudflareinsights.com and /cdn-cgi/rum before transmission. That block is not evidence that production has no analytics.
Screenshots from the capture
Input · queued · 1240×368. Metadata Cleaner showing mc-img-png-alpha-text.png before sanitize. Row state was queued.Output · ready · 1240×475. Metadata Cleaner after mc-img-png-alpha-text.png reached ready.
tests/fixtures/media-corpus manifest MC-IMG-003, constructed by scripts/generate-media-corpus.mjs. CC0-1.0 constructed original. Not regenerated by this capture.
The description text is absent from the cleaned WebP. Alpha is still present. Dimensions stayed 32x24. GPS and EXIF are absent. An ICC profile is still present. Input ICC is 480 bytes c56e1685d888f5edb92fe07f2750f387f8fe8e91b32ff8fb0b56bfbbb9458353. Output ICC is 456 bytes 12afb4d9953adee0607d347daee5b78b18d6b3cab2d572b88970703f5edb37bc. This case is partial.
{"observedUnique":18,"violations":[],"scope":"Observed requests in this run only. Not a universal no-exfiltration certificate."}
pageErrorCount
0
Limitations recorded for this case
No processing screenshot was published. After the shutter the UI state was: ready. An unpublished attempt was kept at assets/_shutter-attempts/metadata-webp-alpha-exif-processing.webp. That file is not a processing screenshot.
GPS, EXIF, and the description string are absent on this download. The output ICC profile is present. Its SHA-256 differs from the input profile. This case is partial.
Capture instrumentation aborts known preexisting Cloudflare telemetry at static.cloudflareinsights.com and /cdn-cgi/rum before transmission. That block is not evidence that production has no analytics.
Screenshots from the capture
Input · queued · 1240×443. Metadata Cleaner showing mc-img-webp-alpha-exif.webp before sanitize. Row state was queued.Output · ready · 1240×475. Metadata Cleaner after mc-img-webp-alpha-exif.webp reached ready.
tests/fixtures/media-corpus manifest MC-VID-003, constructed by scripts/generate-media-corpus.mjs. CC0-1.0 constructed original. Not regenerated by this capture.
{"videoStart":0,"videoEnd":1,"audioStart":null,"audioEnd":null,"startDriftSec":null,"endDriftSec":null,"scope":"this clip only; not a general A/V sync guarantee"}
{"videoStart":0,"videoEnd":1,"audioStart":null,"audioEnd":null,"startDriftSec":null,"endDriftSec":null,"scope":"this clip only; not a general A/V sync guarantee"}
{"observedUnique":17,"violations":[],"scope":"Observed requests in this run only. Not a universal no-exfiltration certificate."}
pageErrorCount
0
Limitations recorded for this case
No processing screenshot was published. After the shutter the UI state was: ready. An unpublished attempt was kept at assets/_shutter-attempts/metadata-mp4-rotate-matrix-processing.webp. That file is not a processing screenshot.
A retained matrix on this file is a partial result.
Capture instrumentation aborts known preexisting Cloudflare telemetry at static.cloudflareinsights.com and /cdn-cgi/rum before transmission. That block is not evidence that production has no analytics.
Screenshots from the capture
Input · queued · 1240×368. Metadata Cleaner showing mc-vid-h264-rotate90.mp4 before sanitize. Row state was queued.Output · ready · 1240×475. Metadata Cleaner after mc-vid-h264-rotate90.mp4 reached ready.
tests/fixtures/media-corpus manifest MC-PDF-004, constructed by scripts/generate-media-corpus.mjs. CC0-1.0 constructed original. Not regenerated by this capture.
Clears standard document metadata supported by this local editor. It does not remove XMP, attachments, forms, annotations, JavaScript, signatures, or embedded files.
{"standard":{"title":"Corpus Info Dictionary Boundary","author":"Fixture Desk","subject":"","keywords":"","creator":"cpk-media-corpus","producer":"pdf-lib"},"customNote":"corpus-custom-note","pageCount":1,"visibleTextIncludes":"Page sentence remains after Info dictionary edits."}
pdf-lib standard fields on this export are empty. CustomNote is present. pdftotext includes the fixture page sentence on this file.
publicClaims
["pdf-lib standard fields on this export are empty. CustomNote is present. pdftotext includes the fixture page sentence on this file."]
pdf
{"standard":{"title":"","author":"","subject":"","keywords":"","creator":"","producer":""},"customNote":"corpus-custom-note","pageCount":1,"visibleTextIncludes":"Page sentence remains after Info dictionary edits."}
{"observedUnique":14,"violations":[],"scope":"Observed requests in this run only. Not a universal no-exfiltration certificate."}
pageErrorCount
0
Limitations recorded for this case
No processing screenshot was stored. The UI state read at shutter time was: result overlay visible.
Standard Info fields are empty on this export. Custom data or the known page sentence can still remain. This file does not show that every PDF field is cleared.
Capture instrumentation aborts known preexisting Cloudflare telemetry at static.cloudflareinsights.com and /cdn-cgi/rum before transmission. That block is not evidence that production has no analytics.
Screenshots from the capture
Input · info panel · 1180×1020. PDF metadata panel for mc-pdf-metadata-partial.pdf before clear.Output · result overlay visible · 1180×1020. PDF metadata result overlay for mc-pdf-metadata-partial.pdf.
tests/fixtures/media-corpus manifest MC-IMG-005, constructed by scripts/generate-media-corpus.mjs. CC0-1.0 constructed original. Not regenerated by this capture.
{"observedUnique":18,"violations":[],"scope":"Observed requests in this run only. Not a universal no-exfiltration certificate."}
pageErrorCount
0
Limitations recorded for this case
No processing screenshot was published. After the shutter the UI state was: error. An unpublished attempt was kept at assets/_shutter-attempts/metadata-jpeg-truncated-reject-processing.webp. That file is not a processing screenshot.
Capture instrumentation aborts known preexisting Cloudflare telemetry at static.cloudflareinsights.com and /cdn-cgi/rum before transmission. That block is not evidence that production has no analytics.
Screenshots from the capture
Input · queued · 1240×467. Metadata Cleaner showing mc-img-jpeg-truncated.jpg before sanitize. Row state was queued.Output · error · 1240×490. Metadata Cleaner row for mc-img-jpeg-truncated.jpg showed error.