Detect Visible Watermark (RAIW)
Wondering if that image is AI-made — and which one? This node reads the marks
- image
- report
- detected
- confidence
- mark
Every model in the "pick one, you know the sparkle" club stamps its output with a tell. Nano Banana leaves its little star, Doubao bakes in the 豆包AI生成 strip, Jimeng the ★ 即梦AI badge, Samsung Galaxy AI a watermark of its own. This node is the "which one made this?" checker from the Remove AI Watermarks pack. Drop an image in, and it tells you - per known mark, with a confidence number - instead of making you squint at a corner.
It's also the most frictionless node in the whole pack. One input, no GPU, no model downloads. The detection side is plain OpenCV pattern matching running in memory on your image batch, which is why it's instant and why it slots into an audit workflow without asking anything of your VRAM. If you're pulling images from the web or checking your own model's outputs, this is the polite way to ask "is this Nano Banana?" before you build anything on top of it.
How it works
Under the hood it calls the same watermark_registry the removal nodes use, so detection and removal never disagree about what a mark looks like. For every frame it runs all known-mark detectors and reports each as label: YES/no (confidence). Feed it a batch and you get per-frame lines (frame 0: gemini: YES (0.87)) - useful if you're scanning a whole folder in one go.
The four outputs are the whole point:
- report (STRING) - the human-readable per-mark breakdown. This is what you actually read.
- detected (BOOLEAN) - true if any mark fired. Wire this into a boolean gate if you want to branch the graph.
- confidence (FLOAT) - the best confidence among everything detected, or 0.0 if nothing fired.
- mark (STRING) - the key of the strongest detected mark, e.g.
gemini. Empty string when nothing is detected.
That last one is the useful bit: you can feed mark straight into the pack's Remove Visible Watermark node so it strips whatever was actually found, no manual picking.
Install
It's part of the Remove AI Watermarks pack, so the install is the pack's install:
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 and restart ComfyUI. This node needs nothing beyond the base install - no extra models, no diffusion stack.
Gotchas
Two things worth knowing. First, the mark registry is a closed list - it knows the marks above and nothing else. A watermark it doesn't recognize comes back as "no," not as "unknown," so absence of detection isn't proof an image is clean. Second, there's nothing to tune: no sensitivity slider, no confidence threshold exposed. If you need to adjust how trigger-happy detection is, that's upstream in the library, not here. For the one-line verdict on anything, this is the node.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| report | STRING | — |
| detected | BOOLEAN | — |
| confidence | FLOAT | — |
| mark | STRING | — |