Cutout
One-click background removal on the ComfyTV canvas
- image
- image
Cutout is ComfyTV's AI background remover: wire an image, hit ▶ Run, and get back a COMFYTV_IMAGE with real alpha transparency - the subject isolated, background gone, no prompt, no mask. It's the whole-image matting counterpart to Erase (painted local removal), and it's the first step of the product-shot and compositing pipelines: cut the subject out, then Relight, Upscale, or drop it onto a new background.
The KB's background-removal essay is the right context here: this is the most commoditized operation in the ecosystem, and BiRefNet is the default recommendation - ComfyUI even shipped it in core. This node rides exactly that. The honest caveat the KB drills home is which failure you can tolerate: hair, fur, and semi-transparency are where these models still fight, and BiRefNet is good but not magic on fine edges.
How it works
Under the hood it runs a real ComfyUI workflow - the pack ships workflows/cutout/birefnet-cutout.json - via the same stage-workflow runner the generative stages use. The workflow combo input picks the segmentation backend; the only option that ships is BiRefNet Cutout, which is what the default points at. On Run, BiRefNet segments the subject and the stage emits a transparent-PNG snapshot into the project. The other input, custom_params, is the hidden JSON bag of user-defined parameter overrides from the sidebar - leave it alone unless you're deliberately overriding model params.
Input: image (COMFYTV_IMAGE). Output: image (COMFYTV_IMAGE, with alpha).
Before the first run you need the model - BiRefNet's birefnet.safetensors in ComfyUI/models/background_removal/:
# put birefnet.safetensors into ComfyUI/models/background_removal/
# download: https://huggingface.co/Comfy-Org/BiRefNet
It's the one node in this batch with a real model dependency, and the pack's docs call it out explicitly.
Installing it
cd ComfyUI/custom_nodes
git clone https://github.com/jtydhr88/ComfyTV
Restart the ComfyUI backend (a real restart, not a tab refresh); nodes appear under the ComfyTV category. ComfyUI Manager finds the pack by searching "ComfyTV". The README's two recurring gotchas: on Desktop/macOS/multi-install setups the relative cd can clone into the wrong instance - read the startup log for the base path it loaded and clone into that absolute path, quoted - and the first level of custom_nodes/ComfyTV/ must contain __init__.py, not a nested ComfyTV/ComfyTV/ folder. No Python dependencies to install - the segmentation rides on the bundled workflow and ComfyUI's own BiRefNet support.
Troubleshooting and tips
- Halos on edges. The pack's FAQ is blunt: upscale first, or clean edges with Inpaint. Flyaway hair is exactly where the KB says these models still stumble.
- Nothing runs / error about the model. Check
background_removal/birefnet.safetensorsexists. That file is the difference between a cutout and a no-op. - Cutout vs Erase. Cutout = automatic whole-image matting; Erase = painted local removal. If you only want the background gone, Cutout; if you want to surgically remove part of the subject too, start with Erase.
- Where it shines. Product/person isolation before compositing or Relight. That's the workflow this node exists to start.
Inputs (6)
| 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. |
| workflow | COMBO | BiRefNet Cutout | Which segmentation backend to run. |
| custom_params | STRING | {} | Internal — JSON of user-defined parameter attachments/values for this node. |
| imageopt | COMFYTV_IMAGE | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| image | COMFYTV_IMAGE | — |