MarkMyAss

Illustration: three pirates study a chart-room navigation table where glowing spectral clues float above the map and a small ghost is trapped under a glass jar

MarkMyAss AI Watermark Lab#

Chart the unknown waters of AI provenance#

MarkMyAss's core promise is that it shows exactly what it found, what it removed, what was independently verified, and what cannot currently be proven -- never the reverse. This Lab is where that promise is written down in detail, signal by signal, kept current, and open to correction. It's the reference map for what the rest of MarkMyAss's fleet of pages (the remover and detector guides, benchmarks, receipts) all point back to.

← Back to the MarkMyAss cleaner


Capability matrix#

This table is generated directly from MarkMyAss's own capability data (src/ghostmark/web/lab_data.py), not typed by hand into this page -- it cannot say MarkMyAss can do something the code doesn't actually do. The same data backs the /api/lab/status JSON endpoint (links below use paths relative to the site root, e.g. lab/c2pa).

Provider / Signal Detect Remove Independent verification Status Last tested
Hidden Unicode Yes Yes Deterministic (re-inspection with the same open-source detector) Verified 2026-08-13
PDF metadata (DocInfo + XMP) Yes Yes ExifTool Verified 2026-08-13
EXIF (JPEG/PNG/WebP) Yes Yes ExifTool Verified 2026-08-13
XMP (JPEG/PNG/WebP) Yes Yes ExifTool Verified 2026-08-13
IPTC (JPEG) Yes Yes ExifTool Verified 2026-08-13
C2PA / Content Credentials Partial Partial c2patool, where installed and the file format is supported Partial 2026-08-13
Claude statistical text watermark Unknown Unknown No public verifier exists Unknown 2026-08-13
Gemini statistical text watermark Unknown Unknown No public verifier exists; provider-dependent by design Unknown 2026-08-13
GPT statistical text watermark Unknown Unknown No public verifier exists Unknown 2026-08-13
Visible image watermark (logo/text baked into pixels) No No Not applicable -- not implemented Unknown 2026-08-13

Detect and Remove describe MarkMyAss's own Python detectors/cleaners. Independent verification describes whether (and how) a separate tool cross-checks MarkMyAss's own claim -- see each linked page for methodology. Status is the honest summary: Verified (both MarkMyAss and an independent tool agree, repeatedly, in the test corpus), Partial (heuristic/structural detection only, not a full validator), or Unknown (no public, independently reproducible method exists at all).


How to read "Partial" and "Unknown"#

Think of the matrix above as a chart of AI provenance territory: some waters are fully charted (Verified), some are only partially charted (Partial), and some remain genuinely uncharted (Unknown -- fog on the map, not a hidden island we're pretending isn't there). The map metaphor is decoration; the words Verified / Partial / Unknown in the table are the actual claim, and they're what you should trust.


Proof, not promises#

Every "Verified" row above is backed by MarkMyAss's public, reproducible test corpus (src/ghostmark/corpus/) and regression suite (tests/test_corpus.py) -- see the Benchmarks page for the actual pass/fail counts from the current test run, generated from that same corpus, not hand-typed.

Practical, action-oriented versions of the mechanisms above: AI Watermark Remover (overview of all signals), AI Metadata Cleaner, C2PA Remover, Content Credentials Remover, Hidden Unicode Remover, Claude Watermark Remover, and Claude Watermark Detector.

Something outdated or inaccurate?#

This is a fast-moving space -- model capabilities, provenance standards, and available tooling all change. Open an issue or submit a pull request against src/ghostmark/web/lab_data.py (for the matrix) or the relevant page under src/ghostmark/web/content/lab/ on GitHub.

Last reviewed: 2026-08-13