JPEG
- Fields removed
- 1
- Removable fields left
- 0
- Decoded pixels
- Identical in this test
- File size
- 989 → 924 B
We cleaned three deliberately constructed images through the same browser tool you use. Here is what changed, what stayed, and how to repeat the check.
· chromium 145.0.7632.6
In these three fixtures, reinspection found zero supported removable fields after cleaning, and all three files decoded to identical pixels. JPEG, PNG, and WebP are cleaned at the container level without re-encoding. Dimensions stayed the same in all three files.
Inspect a fixture or your own imageThis is one synthetic still image per format, not a benchmark of every image or generator. The PNG contains a constructed C2PA-like container for detection testing, not a signed credential or a real provider export. We do not validate C2PA signatures, prove authorship, test invisible watermarks, or certify that every hidden field is gone. Animation, color profiles, other browsers and real-world files need separate tests.
Download an original fixture above, select it in the tool, then clean it and save the cleanup report. The report identifies your output with SHA-256. Because cleaning copies image data without re-encoding, the same input file produces the same output hash in any supported browser.
Inspect a fixture or your own image →Run from the app repository after installing its dependencies. The test uses the published fixtures and asserts real cleanup and pixel behavior. It does not replace the full regression suite.
npm run build
npx playwright test tests/e2e/cleanup-study.spec.mjsRead the executable test{
"engineSourceSha256": "2e9f055b063098626a11b19e64e6c6bd3525038f61494707e6bbd7f778a35d30",
"testedAt": "2026-09-07T10:25:13.661Z",
"browser": "chromium 145.0.7632.6",
"scope": "Three synthetic still images. Not provider exports, signed C2PA validation, animation or universal format coverage.",
"rows": [
{
"format": "JPEG",
"fixture": "synthetic.jpg",
"inputSha256": "eb47ea573dbeca14e8d5c9ea4bfafd2a63afd269ca8b02a0d80d885b7aea401c",
"outputSha256": "dfe906d75ecc0bee3721d04c082968241fba7607518ac36899e2c396a45f6b3f",
"inputBytes": 989,
"outputBytes": 924,
"removedCount": 1,
"residualCount": 0,
"width": 32,
"height": 24,
"pixelsEqual": true
},
{
"format": "PNG",
"fixture": "synthetic.png",
"inputSha256": "ed60f185c99d42c460296fcf4bf41efe89abf349db315a42f1f0c36f30e4348b",
"outputSha256": "5f8564422b1aa2e65999237b5fe9eca4ed4296f22eb28c05246bc21a4a598e13",
"inputBytes": 282,
"outputBytes": 72,
"removedCount": 3,
"residualCount": 0,
"width": 8,
"height": 8,
"pixelsEqual": true
},
{
"format": "WebP",
"fixture": "synthetic.webp",
"inputSha256": "a64ffe91bdcb17056442681f77c48b2f53bb831abc1202bd47bc44cf9665287c",
"outputSha256": "1138f8186cfe30696561aae8bf415b3d115dc7f2340ac0713fe3050530d19fa4",
"inputBytes": 888,
"outputBytes": 650,
"removedCount": 2,
"residualCount": 0,
"width": 32,
"height": 24,
"pixelsEqual": true
}
]
}