Big lama Remover
Paint a mask, erase it, no diffusion checkpoint involved
- images
- masks
- images
Paint a mask over the thing you don't want, hit run, and it's just gone - no prompt, no sampler, no diffusion checkpoint sitting in VRAM. That's the whole pitch of LamaRemover, and for a straightforward removal (a watermark, a stray object, a timestamp burned into old footage) it's usually the fastest tool in your ComfyUI box.
Under the hood it's a thin wrapper around big-lama, the checkpoint from LaMa - "Resolution-robust Large Mask Inpainting with Fourier Convolutions," the paper this pack's README credits directly. LaMa isn't a diffusion model. It's a purpose-built CNN that does one job: given an image and a mask, fill the masked region using context propagated globally across the image, thanks to the Fourier convolutions in its name. No text encoder, no steps, no CFG - one deterministic forward pass. It shares its lineage with the standalone lama-cleaner / IOPaint tool (also credited in the README), and it's why people call this "the traditional inpainter" - closer in spirit to Photoshop's Content-Aware Fill than to Flux Fill, just smarter about texture.
That framing matters for when to reach for it. LaMa erases; it doesn't invent. Delete an object and have the background convincingly fill back in - that's exactly the job. Replace it with something new - swap the shirt, add a prop, generate a different background - and you're back in diffusion-inpainting territory (Flux Fill dev, or a modern edit model through crop-and-stitch); LaMa will just give you a blended patch of "roughly what was around it," which can look flat on complex scenes. People also chain it with a bounding-box detector for hands-off automated cleanup, and it shows up more than you'd expect in video restoration - wiping a timestamp overlay off old footage frame by frame, then handing the result to a colorizer.
Inputs and outputs that matter
images(IMAGE) - the picture you're erasing from.masks(MASK) - the area to erase. This node wants ComfyUI's native mask type, the single-channel tensor most mask-producing nodes (Load Image's alpha, a mask editor, a segmenter) already give you.mask_threshold(INT, default 250, range 0–255) - your mask is rarely a clean binary map, so this sets how bright a pixel needs to be before it counts as "erase this." The default is strict - only near-white pixels qualify - so if you painted a soft or semi-transparent mask and nothing seems to get removed, bring this down.gaussblur_radius(INT, default 8, range 0–20) - blurs the mask edge before the model sees it, so the fill blends instead of leaving a hard cutout line. Lower it for a crisp edge you want to keep sharp (a rectangular logo), raise it for anything organic.invert_mask(BOOLEAN, default false) - flips which side of the mask gets erased. Flip it on if you (or an upstream node) painted the thing you want to keep rather than the thing you want gone - an easy mixup depending on where the mask came from.- Output:
images(IMAGE) - same picture, hole filled. Wire it straight to a Save/Preview node, or chain it into another pass (upscale, colorize, a second inpaint).
How to install it
Search "Comfyui lama remover" in ComfyUI Manager and install, or do it by hand:
cd ComfyUI/custom_nodes
git clone https://github.com/Layer-norm/comfyui-lama-remover.git
Restart ComfyUI. The big-lama.pt checkpoint downloads automatically on first use; if that download fails, grab it manually from the Sanster/models release and drop it in ComfyUI/custom_nodes/comfyui-lama-remover/ckpts/. That's genuinely the whole install - the README is four lines, and there are no other heavy dependencies to fight with.
Common issues & troubleshooting
Out-of-memory on a big image. LaMa runs the full frame through the network, so a large source image (or pairing it with an automated detector on high-res frames) can blow past a 12GB card. The practical fix: crop down to the masked region first (an Inpaint Crop and Stitch style node), then stitch the result back, instead of feeding the model the whole picture.
Nothing looks removed. Check mask_threshold first - if your mask isn't near-white where you painted, the default 250 will silently ignore most of it. Check invert_mask second; if the wrong side is getting erased, it's usually a mask-polarity mismatch from whatever node drew the mask upstream, not a bug in this node.
The edge looks pasted-on. Push gaussblur_radius up a couple notches so the erased patch blends instead of showing a seam.
Results look flat or "off" on a complex background. That's LaMa being LaMa - great at plausible erasure, not built to reason about what should photorealistically be there. If the scene is complicated enough that the fill looks wrong, that's the signal to switch to a diffusion-based inpaint instead of fighting this node's settings.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| images | IMAGE | — | |
| masks | MASK | — | |
| mask_threshold | INT | 2500–255 | — |
| gaussblur_radius | INT | 80–20 | — |
| invert_mask | BOOLEAN | false | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| images | IMAGE | — |