Spot Remover
The Humble Dust-Blemish Fixer
- video
- video
Every video editor knows the sensor-dust special: a tiny dark spot that sits in the same place for the whole clip, on every frame, taunting you. Spot Remover is the ComfyTV node built for exactly that - a small, fixed-region cleanup that runs across your footage without you masking a single frame. It sits under ComfyTV/VideoFX and it's one of those unglamorous tools you'll be glad exists on the exact day you need it.
It's honest about what it is: you give it a rectangle (rect_x, rect_y, rect_w, rect_h - all normalized 0–1 relative to the frame, defaults centered at 0.42/0.42 with a 0.16×0.16 box) and it cleans that region. feather (0–1, default 0.15) softens the rectangle's edges so the fix blends into the surrounding texture instead of showing a hard box. The method dropdown gives you two cleanup strategies:
edge_blend(default) - blends the spot region with its surroundings. Fast, surgical, great for a dust dot or sensor blemish sitting on an otherwise smooth area.inpaint- actual inpainting of the region. Slower and smarter; the pick when the blemish sits on textured detail that a blend would smear.
Video in (optional), video out (the cleaned footage), and that's the whole surface. This is a deliberately narrow node - it's not a magic "remove anything" tool, and the fixed-rectangle design means it's best for static defects: sensor dust, a dead pixel, a fixed watermark-ish blemish. If your spot moves with the subject, this isn't the tool - you'd want a tracked mask plus inpaint, or the pack's roto + keying path.
How to use it well
The workflow is: find the frame where the spot is most visible, set the rectangle to cover it tightly (a tight box beats a big one - less area to blend/inpaint means a cleaner result), feather just enough to hide the boundary, and run. Because it's normalized coordinates, the same rect carries across the whole clip, which is exactly the sensor-dust use case. Leave it in an FX Chain with your other per-shot effects and it bakes in a single pass.
Install
With ComfyTV:
cd ComfyUI/custom_nodes
git clone https://github.com/jtydhr88/ComfyTV
Restart ComfyUI; under ComfyTV → VideoFX. ComfyUI Manager: search "ComfyTV". Desktop/macOS: clone into the running instance's absolute custom_nodes (startup-log path), fix any ComfyTV/ComfyTV/ nesting, full backend restart. No models, no extra Python deps.
Troubleshooting
- A visible box remains after cleanup.
feathertoo low (or the rect too big). Raise feather, shrink the rect. - The spot is on textured detail and looks smeared. Switch
methodtoinpaint-edge_blendcan't reconstruct detail, it can only smooth over it. - It fixed frame one but the spot drifts. Fixed-rect is the design; a moving blemish needs a tracked-mask approach instead.
Inputs (10)
| Name | Type | Default | Description |
|---|---|---|---|
| force_run_token | INT | 00–2147483647 | Internal — bumped on Run to invalidate ComfyUI's input cache. |
| project_id | STRING | Internal — populated by the projectStore on the frontend. | |
| parent_output_id | INT | 00–2147483647 | Internal — lineage parent set by spawn handlers on the frontend. |
| method | COMBO | edge_blend | 2 options: edge_blend, inpaint |
| rect_x | FLOAT | 0.420–1 | — |
| rect_y | FLOAT | 0.420–1 | — |
| rect_w | FLOAT | 0.160.01–1 | — |
| rect_h | FLOAT | 0.160.01–1 | — |
| feather | FLOAT | 0.150–1 | — |
| videoopt | COMFYTV_VIDEO | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| video | COMFYTV_VIDEO | — |