ComfyUI-remove-ai-watermarks
ComfyUI custom nodes for remove-ai-watermarks: identify provenance, remove visible and invisible AI watermarks, strip AI metadata, run the complete image pipeline, and erase arbitrary regions inside a ComfyUI graph.
Nodes
| Node | What it does |
|---|---|
| Remove Visible Watermark (RAIW) | Removes every detected registered AI-provenance mark when mark = auto, or forces one selected mark. Choose the fill backend and, for mark = auto, the detection sensitivity. No GPU is required for detection or the default cv2 fill. |
| Detect Visible Watermark (RAIW) | Reports per-mark detection confidence on the input image. Outputs a text report, a detected boolean, the best confidence, and the detected mark key. |
| Erase Region (RAIW) | Inpaints whatever a MASK covers. Choose cv2 for the dependency-free path or LaMa for a heavier learned fill. |
| Remove Invisible Watermark / SynthID (RAIW) | Diffusion regeneration through the CUDA-only qwen-zimage, qwen21-zimage, sdxl-zimage, chroma-zimage, or auto profile. |
| Identify Provenance (RAIW) | Reads an original file and returns the versioned provenance report, verdict, platform, and confidence. |
| Strip AI Metadata (RAIW) | Losslessly strips and verifies AI metadata from an original file, then returns the cleaned image and path. |
| Remove All Watermarks (RAIW) | Runs visible removal, conditional invisible removal, and verified metadata stripping against one original file. |
The four pixel nodes operate in-memory on ComfyUI image batches. The three
provenance-aware nodes accept a file path because ComfyUI IMAGE tensors do not
carry the original C2PA, EXIF, XMP, IPTC, or container data. Their source and
output paths must be accessible to the ComfyUI server. A blank output path writes
<source>_clean.<ext> beside the source without overwriting it.
Install
Via ComfyUI Manager
Search for "Remove AI Watermarks" in ComfyUI Manager and install.
Manual
cd ComfyUI/custom_nodes
git clone https://github.com/wiltodelta/ComfyUI-remove-ai-watermarks
pip install -r ComfyUI-remove-ai-watermarks/requirements.txt
The package installs remove-ai-watermarks[all,classify-onnx,text-draft],
including video tools, HEIF decoding, diffusion, ONNX fill and classification,
and OCR proposals. Model weights download on first use.
Notes
- ComfyUI image tensors carry no file metadata. The in-memory invisible node
therefore uses resolution-adaptive strength for
qwen-zimageand the unknown-vendor strength forsdxl-zimage.Remove All Watermarksreads the original file and can use its vendor provenance. Setstrengthabove 0 to override either default. - All five profiles are CUDA-only:
qwen-zimage(the default),qwen21-zimage(Qwen Research License, non-commercial research and personal use only),sdxl-zimage,chroma-zimage, andauto(sdxl-zimagefor Google,chroma-zimagefor Microsoft,qwen-zimagefor OpenAI, Meta, and unknown provenance). There is no CPU or MPS path, so the node has no device widget. - The invisible node exposes no
steps,guidance_scale,modelordeviceinput. Each profile pins its model stack, its per-stage distilled schedule and CFG 1.0, so a widget for any of them could only produce an error inside the run. Seed 0 is the certified default. sensitivityapplies only tomark = auto. An explicit mark skips detection entirely, so there is no borderline decision left to relax or tighten; the node says so in itsinfooutput rather than dropping the setting silently.- The
inpainttoggle does nothing. Since library 0.16 every visible mark uses localize -> fill, so the switch has no path left to choose. It stays on the node because removing a widget breaks every saved workflow that carries it. adaptive_polishis three-way.profile defaultlets the library decide (off forqwen-zimage, whose output already matches the input's detail level; on forsdxl-zimage);on/offoverride it. A workflow saved when this input was a checkbox still loads, and its stored true/false counts as an override.- Use
tilefor large inputs andcpu_offloadto stream both stacks instead of pinning them in VRAM. - Proprietary invisible-watermark verification is vendor-specific. Use the
matching provider oracle. Higher
strengthremoves more but drifts further from the original. - The selected extras install
opencv-python-headless. If your ComfyUI install already shipsopencv-python, both providecv2and coexist; if you hit a cv2 conflict, keep a single OpenCV distribution in the environment.
Release synchronization
The registry package has its own version. Each remove-ai-watermarks release
dispatches the synchronization workflow with its exact version. The workflow
updates the dependency floor, runs compatibility tests, bumps the node patch
version, and publishes only after those tests pass. A daily scheduled run is
the recovery path for an interrupted release dispatch. A failed compatibility
test blocks publication instead of exposing an incompatible node update.
The package name is the registry id
name in pyproject.toml is the ComfyUI Registry node id, not a local label.
Publishing under a different one creates a second listing and orphans every
existing install, so it is not something to change casually.
It deliberately matches the PyPI library this node depends on. uv reads that as
a self-dependency and refuses to resolve the project, which looks like a naming
mistake and is not one: this repository is installed with pip, through
requirements.txt and scripts/test.sh in CI, and pip resolves the dependency
from PyPI without complaint. There is no uv.lock here and uv run is not part
of the workflow.
Editing pyproject.toml on main triggers the publish workflow, so treat any
change to this file as a release action rather than an edit.
License
Apache-2.0, matching the upstream library.
Complete operation nodes
The remove-ai-watermarks/operations category exposes every installed library
CLI operation with typed controls, plus the ONNX photo classifier and OCR draft
proposals. This includes video processing and Seedance, text provenance and
regeneration, photo/source classifiers, batch operations, regions, profiles, and
quality parameters. Existing image tensor nodes remain available. Operation nodes
accept paths on the ComfyUI server and return an output path, report, and exit code.
File operations run on each queue, so changed files and deleted outputs are not
hidden by workflow caching. They preserve the input; connect output paths to the appropriate image/video/text
loader for the next workflow stage. Empty optional controls retain library defaults.
The node package installs all,classify-onnx,text-draft. Use Python 3.12 for the
complete backend selection. Image regeneration requires NVIDIA CUDA. Video VAE
profiles can use CPU, MPS, or CUDA. Model weights download on first use. OCR results
are proposals requiring operator verification, not verified manifest text.