Identify Provenance (RAIW)
What's really in that image? Point this node at the file and it tells you
- report_json
- verdict
- platform
- confidence
Before you strip, remove, or repurpose anything, it helps to know what you're actually holding. Identify Provenance (RAIW) is the forensic end of this pack: give it a file on disk and it tells you whether that file carries AI provenance - the visible registered marks, the invisible watermark, or the metadata - and how confident it is about the call. It's the "read first, act second" node.
The one thing to internalize before anything else: this node takes a file path, not an IMAGE tensor. ComfyUI's image tensors are just pixel arrays; they carry none of the C2PA, EXIF, XMP, or IPTC data the file was saved with. That's why all three provenance-aware nodes in this pack (this one, Strip Metadata, and Remove All Watermarks) read paths. The path has to be reachable by the ComfyUI server - on a remote setup, that means a path the server's filesystem can see, not your laptop's.
What it does
Under the hood it's a thin wrapper around remove_ai_watermarks.identify.identify(). Feed it a source and it runs the detection suite against the file, then hands back four outputs:
- report_json - the full versioned provenance report as a JSON string. Drop this into a text-display node and read it; it's where the detail lives.
- verdict - a tri-state string:
AI-generated,not AI, orunknown.unknownis a real answer, not a bug: the checker found nothing conclusive. - platform - which vendor's mark or metadata it detected, if any.
- confidence - the detector's confidence as a string.
You only set two inputs. source_path is the one that matters - paste the absolute path to the file. check_visible and check_invisible both default to true, and honestly, leave them there unless you know you only care about one kind of mark. Turning off the invisible check speeds things up and skips the heavier detectors if you already know the file came from a visible-only pipeline.
The realistic workflow
The smart way to use this is as the first stop and the last check. Run it before removing anything so you know what you're dealing with and which platform's mark is in play - that's exactly the information the "auto" modes in the removal nodes use. Then run it again on the cleaned file afterward to confirm the provenance is actually gone. It's an output node, so it terminates the graph; the strings are meant for you to read or to route into a text viewer, not to feed downstream image nodes.
Install and gotchas
Same story as 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 just search "Remove AI Watermarks" in ComfyUI Manager. The package pulls in the remove-ai-watermarks library with the heif extra, so HEIC/HEIF/AVIF files decode properly.
The error you'll actually hit is Source file does not exist: <path> - check that the path is absolute, that ~ resolves on the server, and that you typed the filename exactly. If the verdict comes back unknown on a file you're sure was AI-made, the watermark vendor probably isn't in the registry yet, which is worth knowing rather than trusting the node blindly. Nobody's detector is perfect; treat this as strong evidence, not courtroom proof.
The pack is Apache-2.0 and the author posted it openly in r/comfyui. Reception there was mixed - a couple of people were quick to point out that invisible-watermark detection isn't magic, so don't expect this to be psychic. It reports what it finds; the judgment call stays with you.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| source_path | STRING | — | |
| check_visibleopt | BOOLEAN | true | — |
| check_invisibleopt | BOOLEAN | true | — |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| report_json | STRING | — |
| verdict | STRING | — |
| platform | STRING | — |
| confidence | STRING | — |