Simple Watermark Remover (AusBoss Compatibility)
Erase a watermark (or any object) in ComfyUI without touching a sampler
- image
- mask
- image
You know the drill: you generate a great image, and a watermark, a logo, a date stamp, or a stray UI element is sitting right where you don't want it. The old instinct is to drag it into an img2img pass, which re-rolls the entire image to fix one corner. Simple Watermark Remover is the sane alternative: you paint over the offending region once, it gets filled with what the surrounding pixels imply, and everything else stays pixel-identical. It's a single-purpose node from the tiny laolaoruqin/ComfyUI-SimpleWatermarkRemover pack, and it's about as close to "just works" as ComfyUI gets.
Under the hood it's LaMa (Large Mask Inpainting), the same model most batch watermark-removal pipelines lean on - and a big reason they do. Where a diffusion inpainting pass is a whole denoising run with prompts, CFG, and seeds to babysit, LaMa is a single forward pass of a dedicated inpainting network. No sampler, no prompt, no "best guess" generation. It reconstructs texture and structure from the mask boundary, which is exactly what you want for a watermark sitting on top of an otherwise-finished image. It's not magic for huge regions (more on that below), but for its intended job it's fast and shockingly clean.
The three inputs (really, one decision)
The node takes image (an IMAGE), mask (a MASK), and an algorithm enum that currently only offers "LAMA" - a placeholder for future options rather than a real choice. So there's exactly one thing to wire up.
- image - wire the
IMAGEoutput from a standard Load Image node. - mask - the important one. Right-click the image in Load Image and pick "Open in MaskEditor", paint over the watermark, and hit Save. The node then receives the
MASKoutput. Paint with a little margin around the mark - LaMa fills whatever you cover, so a tight-but-generous mask gives it context to rebuild from.
The node returns one IMAGE, which you can route straight to a Save Image node. If the mask is smaller than the image it gets upscaled to match, and batches are handled per-frame, so a folder of watermarked images works too.
How it actually works (worth knowing)
The code is refreshingly honest about its mechanism. The LaMa model is loaded as a TorchScript file (big-lama.pt, ~200MB) from ComfyUI/models/lama/. Your mask is binarized at 0.5 - LaMa wants a hard 0/1 region, not soft grayscale, so a feathered mask edge gets treated as binary anyway. The image is then reflect-padded up to a multiple of 8 (LaMa's internal downsampling needs that), run through the model, and cropped back to your original dimensions. Inference happens on CUDA if it's available, CPU otherwise.
Install
Via ComfyUI Manager, search "Simple Watermark Remover," or clone it:
cd ComfyUI/custom_nodes
git clone https://github.com/laolaoruqin/ComfyUI-SimpleWatermarkRemover.git
Restart ComfyUI. The model downloads automatically on the first run - there's no separate install step. One note: the code imports OpenCV (cv2), so if you run a stripped-down install that lacks it, expect an import error; a normal ComfyUI embedded Python has it.
Where people get burned
The auto-download is the one real failure point. It pulls from Hugging Face on first queue, and if you're behind a flaky connection or a proxy that blocks HF, it fails - the error text even includes hints in Chinese for timeout, connection-refused, and 404 cases, and it cleans up the partial file so you don't end up with a corrupt model. Fix: download big-lama.pt yourself and drop it at ComfyUI/models/lama/big-lama.pt, then re-queue.
Also calibrate your expectations: LaMa fills small-to-mid regions beautifully, but a giant area (say, a watermark covering a quarter of the frame) will give you mushy texture - this is the same reason the bulk watermark tools that use LaMa keep the masks tight. The node also runs full-resolution with no tiling, so a very large image eats proportionally more VRAM. If the mark is small and you mask it well, none of that matters - it just works. A nice touch: the node ships a tiny bit of JS that adds a "?" help popup on the title bar walking you through the mask steps, in English and Chinese, so the workflow is discoverable even if you skip the README.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | BHWC images or video frames to inpaint. | |
| mask | MASK | White areas are replaced. | |
| method | COMBO | LAMA | Legacy engine selector. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | Inpainted BHWC image batch. |