JM Gemini Watermark Remover
The little node that erases Gemini's visible logo — no API key, no API call
- image
- image
The name tells you nothing useful, so here's the real pitch: JMGeminiWatermarkRemover strips the little white Gemini logo that Google bakes into the bottom-right corner of every image its API generates. And the best part is what it doesn't need - no API key, no network call, no model download. You drop an image in and get a clean one out, in a fraction of a second, on your own CPU.
It ships in the same pack as the JM Gemini Image Generator, and that's really its job: the generator hands you a watermarked Nano Banana render, this node hands you the same render with the logo gone. Wire generator → remover → Preview/Save and you never think about it again.
How it actually works
Google stamps a visible logo on images (the pack README says anything over 512×512 gets one; the source is more specific about sizing). The trick this node relies on is that the watermark is predictable:
- Images wider and taller than 1024px get a 96×96 logo, offset 64px from the right and bottom edges.
- Everything else gets a 48×48 logo, offset 32px.
So instead of machine-learning the watermark away, the node computes exactly where it must be, then undoes the blend. It ships two background captures (assets/bg_48.png and bg_96.png) that it converts into per-pixel alpha maps - the "reverse alpha blending" the README mentions. For every pixel in the logo region it solves original = (watermarked - alpha × 255) / (1 - alpha) per RGB channel. It's dumb math in the best way, and because it only touches a 48×48 or 96×96 corner, even the pure-Python per-pixel loop finishes instantly.
One honest caveat: this is a specific watermark remover, not a general one. Feed it a non-Gemini image and it'll just darken a corner of whatever's sitting there. And it does not touch Google's invisible SynthID watermark, which is a separate, hidden layer baked into every Gemini/Nano Banana image (the KB on closed-source models calls this out). You're removing the visible logo only.
The inputs and outputs
There's exactly one of each:
- image (IMAGE) - the watermarked Gemini image, from the pack's Image Generator or any Load Image node.
- output image (IMAGE) - the cleaned result, ready for Preview Image or Save Image.
That's it. It also auto-saves a copy to ComfyUI/output/ as gemini_watermark_removed_<timestamp>.png, like the rest of the pack.
Installing
The pack is all four JM Gemini nodes in one repo, installed the same way:
cd ComfyUI/custom_nodes
git clone https://github.com/synthetai/ComfyUI-JM-Gemini-API
cd ComfyUI-JM-Gemini-API
pip install -r requirements.txt
Then restart ComfyUI. Or skip all that and search "ComfyUI-JM-Gemini-API" in ComfyUI Manager. No model files to download - this node is pure Pillow/numpy, which is also why it's the only one of the four that works offline.
Where people get burned
- "bg_48.png not loaded" error - the
assets/folder went missing (rare, but happens if you only copied the node files). Re-clone the repo. - Expecting magic on foreign images - the only thing it's guaranteed to fix is Gemini's own bottom-right logo, and only when the image is unmodified from the API. Cropped or resized, and the position guess misses.
A word on the ethics/ToS angle: Google's watermark is there partly as provenance. Removing it from your own generated images for a portfolio is one thing; stripping it to repost someone else's generations or dodge content attribution is the kind of thing that gets accounts nuked. The node doesn't care - but the tradeoff is on you.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |