Object Eraser · Edit
Name the thing, brush the mask, or do both — both is better
- image_url
- mask_url
- images
- task id
Object removal is the most-requested, least-loved job in image editing. Locally it means a Fill model, a hand-drawn mask, and a careful denoise - and if you get it wrong you get the classic tell: a smear where an object was, or a texture that doesn't agree with the light.
Object Eraser · Edit is the one-call version in the PopNow pack at 4.5 credits an image. It's got one genuinely nice trick that most eraser nodes don't: you can name the thing instead of masking it.
What it is
A cloud node over popnow/object-eraser-v1/edit. Drop it in, wire your photo to image_url, tell it what to remove, save the result. No GPU, no model download, four and a half cents a run - the same economics as every node in this pack. Your image is uploaded, processed on PopNow's servers and downloaded back as an IMAGE.
The open-weight comparison, from the inpainting essay, is a Fill checkpoint (FLUX Fill, or something like FLUX.1-Fill-dev-OneReward which was trained on image fill, image extend and object removal together). Those are free after the download and give you much finer control. They're also a 12 GB checkpoint, a mask you have to draw, and a denoise you have to tune per image. This node is the "I have twelve of these and I want them gone by lunch" option.
The two ways to point at something
prompt is what to remove, in a few plain words, and the tooltip's example is the register: "the wooden bench on the left". Position matters when there's more than one instance - without it you get a coin flip about which bench.
mask_url is the optional second way: an IMAGE where white marks what to remove and black what to keep, the same size as the photo. Note that it's an image socket, not a mask tensor socket - so if your mask comes from a ComfyUI masking workflow you'll need to convert it to an image first (core's MaskToImage), and if it comes from a painted segment, save it as a black-and-white picture.
The tooltip on prompt finishes with the operational line: give this, mask_url, or both. Both is where it works best, and that's not a hedge - the mask tells it exactly where, the prompt tells it what, and the combination stops both failure modes: masking the right thing and letting the model repaint it into something else, or naming the object and having the model pick the wrong one.
output_format defaults to PNG, which you want, because a fill is exactly the kind of smooth gradient work JPEG turns into mush.
Outputs: images and task id.
Install
Manager → search PopNow → Install → restart, or:
cd ComfyUI/custom_nodes
git clone https://github.com/popnow-ai/popnow-comfyui
Then a key from popnow.ai/api/console/keys in Settings > PopNow, or:
POPNOW_API_KEY=sk-popnow-... python main.py
Nothing else to install - the pack's dependencies are literally empty; it uses the aiohttp, torch, Pillow and PyAV that ComfyUI already ships. Delete the old single-file custom_nodes/popnow_api.py if you're upgrading from it, and restart a second time after adding the key so the catalog builds.
Where people get burned
Mask and photo must agree on size. The tooltip says it: same size as the photo. A mask from a different crop will either be rejected or, worse, applied in the wrong place.
Watch what the fill invents. Removing a person from a group photo means the model has to invent the wall behind them. It's good at repeating texture and mediocre at reconstructing structure - a bench removed from in front of a bookshelf will leave slightly wrong book spines. Zoom in before you ship it.
Shadows and reflections need to go too. If you erase an object and leave its contact shadow, the picture reads as broken even though the object is gone. Mention them in the prompt ("the bench and its shadow") or include them in the mask.
One image per run. The image_url socket takes a single image; a batch gets truncated to the first with a log line. And each retry is another 4.5 credits, so set Max credits per run in Settings > PopNow while you're dialling in a prompt - a run you cancel still finishes on PopNow and is charged if it succeeds.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| image_url | IMAGE | Photo to clean up. The selected objects are removed and the space is filled to match the scene. | |
| prompt | STRING | What to remove, in a few plain words with a position when there is more than one, e.g. "the wooden bench on the left". Give this, mask_url, or both. | |
| output_format | COMBO | PNG | File format of the returned image. |
| mask_urlopt | IMAGE | Optional black-and-white mask the same size as the photo: white marks what to remove, black what to keep. Give this, prompt, or both. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| images | IMAGE | — |
| task id | STRING | The PopNow task id, for the API console logs or support. |