ComfyUI Node

Ideogram Object Remover

Mask it, delete it, keep the rest pixel-identical

By Runware·Created 2 years ago·Updated 4 days ago· 140
Ideogram Object Remover
  • image
  • mask
  • advancedFeatures.watermark.image
  • image
seed0
numberResults1
advancedFeaturesfalse
advancedFeatures.watermark.bgColor
advancedFeatures.watermark.displayPosition(default)
advancedFeatures.watermark.fontColor
advancedFeatures.watermark.opacityfalse
advancedFeatures.watermark.opacity_value0.10
advancedFeatures.watermark.text
safetyfalse
safety.checkContentfalse
ttlfalse
ttl_value60
outputFormatJPG
outputQuality95

There are two ways to make something disappear from a photo, and they're not the same thing. A whole-image edit model will happily remove the tourist standing in your shot - and while it's at it, it'll also subtly reimagine the lighting, the crowd behind them, and the bricks on the wall. Ideogram Object Remover is the other way: you paint a mask over the thing you hate, and the model fills only that region. Everything outside the mask comes back untouched.

That's the whole remaining superpower of mask-based inpainting, and it's worth being picky about: an instruction edit regenerates the frame, so unmasked pixels drift on every pass, and the drift compounds if you chain edits. A masked removal composites the new pixels back over the original, and nothing else moved. If the rest of the image matters - a product photo, a headshot, a building that has to keep its exact proportions - this is the node you want.

How it works

This is a hosted Ideogram model (ideogram:object-remover@0, task imageInference) running on Runware's cloud. You feed it two required inputs:

  • image - the photo as a native IMAGE tensor.
  • mask - a mask, also as an IMAGE, where the white region is what gets removed and regenerated.

Note the socket type: it's IMAGE, not MASK. ComfyUI distinguishes the two, so you'll want to convert - or generate a mask that's already an image (mask-paint nodes with an image output, or a Mask → Image convert in the middle of your graph). White = the region to erase.

The node posts both up, the model inpaints the masked area, and the result comes back as an IMAGE you can wire straight into Preview or Save. Because you're on the API, there's no local model, no VRAM, no 9.3B download to babysit.

Inputs that matter

  • image / mask - the required pair above.
  • seed - set it for reproducible removals; leave 0 for a random one.
  • numberResults - 1 to 20, each with a different seed. Useful when the fill is a coin flip (is it going to hallucinate a sign where the sign was?).
  • outputFormat / outputQuality - JPG default, or PNG/WEBP, quality 20–99.

There's also the standard Runware watermark block (advancedFeatures.watermark.*) and safety.checkContent if you want a content check on the output. For a straightforward removal you can ignore all of them.

Installing it

Everything here ships in the Runware/ComfyUI-Runware pack. Install it once via ComfyUI Manager (search Runware) and restart, or manually:

cd ComfyUI/custom_nodes
git clone https://github.com/Runware/ComfyUI-Runware
pip install -r ComfyUI-Runware/requirements.txt

No model downloads - the heavy lifting is remote. Dependencies are just runware-sdk, pillow, soundfile.

Gotchas

  • API key required. Set it in ComfyUI Settings → Runware API key, or RUNWARE_API_KEY, or runware auth login. The node refuses to run without one.
  • Paid per call, like everything in this pack. The cost prints on the node title bar.
  • Mask quality is everything. A sloppy mask that bleeds over the subject you want to keep will get the bleed regenerated too. Feather it and keep it tight - the model fills exactly what you mask.
  • If you're checking a large batch, remember each numberResults past 1 is a separate billed generation.
CategoryRunware/Image/ideogram

Inputs (18)

NameTypeDefaultDescription
imageIMAGE
maskIMAGE
advancedFeatures.watermark.imageoptIMAGE
seedoptINT00–2147483647Random seed for reproducible generation. When not provided, a random seed is generated in the unsigned 32-bit range.
numberResultsoptINT11–20Number of results to generate. Each result uses a different seed, producing variations of the same parameters.
advancedFeaturesoptBOOLEANfalseEnable to set advancedFeatures. Off uses the model's default.
advancedFeatures.watermark.bgColoroptSTRINGBackground color in hex format.
advancedFeatures.watermark.displayPositionoptCOMBO(default)Watermark position.
advancedFeatures.watermark.fontColoroptSTRINGText color in hex format.
advancedFeatures.watermark.opacityoptBOOLEANfalseEnable to set advancedFeatures.watermark.opacity. Off uses the model's default.
advancedFeatures.watermark.opacity_valueoptFLOAT0.100.1–1Watermark opacity.
advancedFeatures.watermark.textoptSTRINGWatermark text.
safetyoptBOOLEANfalseEnable to set safety. Off uses the model's default.
safety.checkContentoptBOOLEANfalseEnable or disable content safety checking. Increases total generation time.
ttloptBOOLEANfalseEnable to set ttl. Off uses the model's default.
ttl_valueoptINT60Time-to-live (TTL) in seconds for generated content. Only applies when `outputType` is `URL`.
outputFormatoptCOMBOJPGFile format for the generated image.
outputQualityoptINT9520–99Compression quality of the output. Higher values preserve quality but increase file size.

Outputs (1)

NameTypeDescription
imageIMAGE