Skip to content

v0.8.5

Choose a tag to compare

@wiltodelta wiltodelta released this 01 Jun 17:35
· 93 commits to main since this release
v0.8.5
25cc475

Bug fix

--protect-text and --protect-faces are now off by default.

Both features were inadvertently shielding SynthID from removal:

  • Text protection re-scrubs detected text blocks at high resolution after the global pass. The per-region re-scrub may not be strong enough to re-destroy SynthID at the effective upscaled resolution, leaving the watermark intact in text areas even after it was removed everywhere else.
  • Face protection literally pastes back the original (pre-diffusion) face pixels after the global pass -- SynthID is guaranteed to survive in face regions, regardless of strength.

Verified June 2026 on gpt-image 1600x1600 via openai.com/verify: same image, with --protect-text SynthID detected; without, SynthID removed.

Both are now opt-in (--protect-text / --protect-faces) and considered experimental. The default all and invisible commands run the full-image diffusion pass with no region shielding.

pip install -U remove-ai-watermarks
remove-ai-watermarks all image.png -o clean.png

Also adds docs/synthid.md -- a primary-source technical reference for how SynthID-Image works, what it survives, and what removes it (arXiv:2510.09263, arXiv:2605.09203).