Inspect the marks. Clean what you own. Keep agency over what travels with your work.
Watermarks Remover is Harshith Vaddiparthy's local-first toolkit for inspecting and cleaning AI-era provenance signals from content you own.
A machine mark may show that a model processed an artifact. It cannot decide who originated the idea, who performed the meaningful work, or who owns the result. This project keeps those claims separate and reports exactly what it can verify.
Browse the complete open-source directory, see the Contributions page, or read I am an Open Node.
| Surface | Inspects | Cleans | Confidence |
|---|---|---|---|
| Text | Invisible Unicode, bidi controls, tag characters, unusual spaces | Deterministic character removal and normalization | Verifiable |
| Statistical text marks | Token-level watermark classes | Substantial rewrite with a chosen model | Best-effort |
| PNG / JPEG | C2PA, EXIF, XMP, APP metadata | Container metadata removal | Verifiable with limits |
| Documents | SVG, PDF, DOCX, ODT, HTML, Markdown metadata | Format-aware metadata cleaning | Format-dependent |
Out of scope: pixel-domain image marks, audio/video watermarks, C2PA soft binding, undisclosed vendor detectors, and training backdoors.
git clone https://github.com/harshith-vaddiparthy/watermarks-remover.git
cd watermarks-remover
python3 watermarks_remover.py --helpThe normal runtime uses Python 3.10+ and the standard library. Optional system tools add deeper container inspection:
make install-codexRestart the agent session, then invoke /remove-ai-marks or ask it to inspect a file.
# Inspect first
python3 watermarks_remover.py inspect draft.md
# Clean into a separate output
python3 watermarks_remover.py clean draft.md -o draft.cleaned.md
# Inspect Unicode carriers
python3 watermarks_remover.py inspect-text draft.txt
# Remove Unicode carriers and report exact counts
python3 watermarks_remover.py clean-text draft.txt \
-o draft.cleaned.txt \
--stats
# Produce a statistical-watermark rewrite prompt.
# This makes no network request by default.
python3 watermarks_remover.py rewrite draft.md \
--backend print-prompt| Command | Job |
|---|---|
inspect |
Inspect any supported file |
clean |
Clean any supported file |
inspect-text |
Report suspicious Unicode carriers |
clean-text |
Remove or normalize text carriers |
inspect-image |
Inspect PNG or JPEG metadata |
clean-image |
Remove PNG or JPEG metadata |
rewrite |
Print or run a best-effort rewrite |
Every cleaner prefers a new *.cleaned.* artifact. In-place mode creates a backup.
Watermarks Remover never collapses different outcomes into a fake “undetectable” score.
The tool can count removed Unicode characters, enumerate metadata actions, and re-inspect supported containers after cleaning.
Statistical text watermarks live in wording choices. Reducing them requires substantial rewriting, which may flatten voice or reduce precision. Without a vendor detector and its keys, no tool can honestly certify removal.
Pixel, audio, video, soft-bound, and undisclosed signals may remain even after container metadata is removed.
python3 -m venv .venv
.venv/bin/pip install pytest
.venv/bin/python -m pytest -q
make smokeThe suite covers Unicode cleaning, images, containers, rewrite behavior, C2PA report parsing, and the unified CLI.
Issues and pull requests are welcome—especially reproducible format fixtures, clearer failure reporting, new container support, and research grounded in public evidence.
Start with CONTRIBUTING.md. Keep four rules in view:
- inspect before cleaning;
- test every behavior change;
- separate verified, best-effort, and out-of-scope claims;
- never commit private user content or credentials.
Use Watermarks Remover only on content you own or are authorized to process. Do not use it for academic fraud, impersonation, contractual evasion, copyright abuse, or false authorship claims.
The same operation can protect privacy in one context and enable deception in another. The project documents that boundary instead of pretending dual use does not exist.
Released under the MIT License.
H® · Built and maintained by Harshith Vaddiparthy · Part of Open Source by Harshith.