Strip AI Metadata (RAIW)
The invisible one isn't a watermark at all — it's metadata, and this node deletes it without touching a pixel
- image
- output_path
- info
Most "AI watermarks" aren't visible marks at all. They're provenance records - C2PA content credentials, XMP, IPTC - tucked into the file's metadata. Strip AI Metadata (RAIW) deletes that record and, importantly, verifies it's gone. It's the metadata cleanup step in this pack, and it's lossless: it edits the file container, not the pixels, so the image itself doesn't change one bit.
Like its sibling Identify Provenance, this node takes a file path, not an IMAGE tensor. ComfyUI tensors are pure pixel arrays - all the C2PA/EXIF/XMP baggage lives in the file on disk, so that's what the node needs. And here's a subtle trap: if you've already run an image through ComfyUI's Save Image node, whatever metadata the graph preserved may not have survived anyway. For a clean, deliberate strip, point this node at the original file, before your graph re-saves it.
What it does
The wrapper calls strip_and_verify() from the library's metadata module. It reads your source, strips the AI provenance fields, writes a cleaned copy, then re-reads that copy to confirm nothing survived. If AI metadata is still present, the node raises a RuntimeError: AI metadata survived stripping: <fields> - the fields list tells you exactly what slipped through. It does not quietly hand you a half-cleaned file.
The three inputs, and they're simple:
- source_path - required, the file to clean. Must be readable by the ComfyUI server.
- output_path - optional. Blank means it writes
<source>_clean.<ext>right next to the original, never overwriting it. Give it a path if you want it elsewhere. The node refuses an output path that resolves to the source itself. - keep_standard - defaults to true. On, it removes only the AI-provenance metadata and leaves standard fields (camera EXIF, copyright, that sort of thing) alone. Off is the more aggressive sweep.
Outputs: an image tensor so you can preview or continue the graph, the output_path string telling you where the cleaned file landed, and an info string that reads AI metadata stripped and verified when all went well.
Why you'd bother
The real move is pairing this with Identify Provenance (RAIW): run identification first to see what's there, strip, then re-identify the cleaned file and watch the verdict flip to not AI or unknown. It's also the terminal step inside Remove All Watermarks (RAIW), which chains visible removal, invisible removal, and this strip against one original file - this node is the same operation if you want the metadata piece alone, without touching the image.
Two quick honest caveats. First, "verified" means the known AI provenance fields are gone - it's not a guarantee that some future detector won't find something new. Second, decide deliberately whether you even want to. Removing provenance has a clear utility when a file's own licensing terms are the problem, but it's also exactly the kind of capability that drew the accusation of "evading detection" when this pack launched on r/comfyui. The tool is neutral; the intent isn't.
Install
Identical to the rest of the pack:
cd ComfyUI/custom_nodes
git clone https://github.com/wiltodelta/ComfyUI-remove-ai-watermarks
pip install -r ComfyUI-remove-ai-watermarks/requirements.txt
or search "Remove AI Watermarks" in ComfyUI Manager. The heif extra in the dependency means HEIC/HEIF/AVIF inputs decode properly. If you hit Source file does not exist, the path isn't visible to the server - use an absolute path and remember ~ expands server-side. And if you see the "survived stripping" error, that's the node doing its job: it found leftover provenance and told you the exact fields rather than pretending.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| source_path | STRING | — | |
| output_pathopt | STRING | — | |
| keep_standardopt | BOOLEAN | true | — |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |
| output_path | STRING | — |
| info | STRING | — |