Nodes/ComfyUI-Unwatermark/🧼 Remove Watermark (API)
ComfyUI Node

🧼 Remove Watermark (API)

This Watermark Remover Calls a Paid API, Not Your GPU

By magic-eraser-org·Created about a year ago·Updated about a year ago· 11
🧼 Remove Watermark (API)
  • image
  • IMAGE
â—„api_keyâ–º

This node looks like it'll scrub watermarks right on your machine. It won't. "🧼 Remove Watermark (API)" - that little "(API)" is doing all the work - is a thin client for a paid cloud service called unwatermark.ai. You feed it an image, it uploads that image to a remote server, and a while later the de-watermarked result comes back down the wire. No model downloads, no VRAM, no local inference. If that's not what you wanted, read the alternatives section before you sign up for anything.

How it actually works

The mechanism is boring in the best way - it's just an HTTP call wrapped in a node. Inside the class, the incoming IMAGE tensor gets turned into a PIL image (RGBA flattened to RGB, since anything alpha would break the JPEG round-trip), re-encoded to JPEG in memory, and POSTed to api.unwatermark.ai with your key in a ZF-API-KEY header. The API answers with JSON; if the business code is 100000, the node grabs result.output_image_url, downloads that file, and converts it back to a normal HWC tensor for the rest of your graph.

There are three things worth knowing about the error handling, because they tell you what to expect when things go sideways:

  • Each image gets up to 3 attempts with a 3-second pause between them. Transient failures usually just work on retry.
  • If an image fails all three tries, the node passes your original image through rather than erroring out. You get a watermark-free or an untouched image, never a crash.
  • The only way to get a garbage 64×64 black tensor out is if the whole batch dies in the outer exception handler - rare enough that you can mostly forget it exists. Logs will tell you what happened either way, so check the ComfyUI console if you're confused.

The two inputs that matter

This is one of those refreshingly tiny node UIs. There are exactly two inputs:

  • image - an IMAGE tensor from LoadImage, VAE Decode, whatever. The node handles batches, processing each frame in the batch one at a time.
  • api_key - a plain text field. Grab it from your unwatermark.ai account; it's required and there's no default. This is a real cost: the service is paid and metered, and a key with an exhausted quota fails like any other API error.

The single output is an IMAGE tensor, so it wires straight into SaveImage/PreviewImage, or anything downstream that takes an image - upscalers, img2img samplers, VAE Encode.

Installing it

ComfyUI Manager is the easy path: search "ComfyUI-Unwatermark" and hit install. Or do it by hand:

cd ComfyUI/custom_nodes
git clone https://github.com/magic-eraser-org/ComfyUI-Unwatermark

Then restart ComfyUI. Ignore the README's clone URL - it's a template placeholder with YOUR_USERNAME in it. There's no requirements.txt in the repo, and the only real dependency is requests, which modern ComfyUI ships anyway, so the "pip install requests" step is usually a no-op. Nothing heavy here; this is the lightest install you'll do all week.

Gotchas, and the honest alternative

Where people get burned: your images leave your machine, so anything you run through this is not private, and pasting your API key into a shared workflow JSON broadcasts it to whoever opens that file. Treat the key like a password.

And the elephant in the room: you probably don't need this node at all. Watermark removal is the one job instruction-editing models turned out to be shockingly effective at - Flux Kontext and Qwen-Image-Edit both eat watermarks for breakfast, locally, free, with nothing leaving your box. If you already run either, or you're comfortable masking and inpainting (which gives you bit-identical pixels everywhere the watermark isn't), a paid cloud wrapper is a hard sell. Where it does earn its keep: zero-VRAM automated pipelines, batch processing hundreds of dataset images without doing mask work, and machines too weak to run a local edit model. If that's you, this is a legitimately easy node to drop in. If it's not, save the subscription money.

Category🧼 Image Processing

Inputs (2)

NameTypeDefaultDescription
imageIMAGE—
api_keySTRING—

Outputs (1)

NameTypeDescription
IMAGEIMAGE—