ComfyUI Node Runs on cloud

TEEDPreprocessor

The clean, modern edge preprocessor for ControlNet

By Fannovel16·Created 3 years ago·Updated 4 months ago· 4,134
TEEDPreprocessor
  • image
  • IMAGE
safe_steps2
resolution512

If you want soft-edge conditioning that's actually clean, this is the one to grab. TEED is the newest edge detector in the pack, and it's genuinely good - it pulls precise, coherent lines out of a photo with far less of the fuzz and noise that older methods leave behind. It's a soft-edge preprocessor, which lands it between the two extremes: Canny gives you hard, brittle contours that can snap to noise, while HED gives you loose organic strokes that sometimes wander. TEED sits in the sweet spot - detailed edges that follow the real structure without pretending every JPEG speck is a line.

Soft-edge is the preprocessor you reach for when Canny is too rigid for the subject: organic things, faces, hair, cloth, anything where "perfect thin edges" is the wrong idea. TEED is the sharpest tool in that drawer.

How it works

TEED stands for Tiny and Efficient Edge Detection (arXiv:2308.06468) - a deliberately tiny neural net (we're talking tens of thousands of parameters) that punches way above its size and was state-of-the-art edge-detection generalization when it landed. It's good enough that the well-known Anyline preprocessor is built on top of it. The node runs your image through that network and hands back a gradient edge map: soft, anti-aliased lines whose intensity tracks how strong the real edge is, which is exactly what a soft-edge ControlNet was trained to read.

The inputs and output

Two knobs worth knowing:

  • image - your source.
  • safe_steps (default 2, range 0–10) - an artifact-cleanup control. TEED can occasionally throw stray specks or broken edges; these steps run a suppression pass to knock those out. The default of 2 is a fine starting point - bump it up if the map looks noisy, or drop it toward 0 if you're chasing maximum raw detail and don't mind a bit of grain.
  • resolution (default 512) - processing size; match it to your target render for the cleanest result.

The single output is an IMAGE - the soft-edge map - which feeds a ControlNet Apply node. On SD 1.5 that's a soft-edge model like control_v11p_sd15_softedge; on SDXL, SargeZT's controlnet-sd-xl-1.0-softedge-dexined is the one trained for this. It does nothing until that ControlNet is loaded and wired in.

Installing it

ComfyUI Manager: search ComfyUI's ControlNet Auxiliary Preprocessors, install, restart. Or manually:

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

Then restart ComfyUI. On first run the node downloads its small TEED weight (7_model.pth, from the bdsqlsz/qinglong_controlnet-lllite repo on HuggingFace) - it's tiny, so this is quick.

Where people get burned

The classic mistake: wiring a soft-edge map into the wrong ControlNet. TEED output goes to a soft-edge model, not Canny and not lineart - those expect a different kind of line and will misbehave if you feed them gradient edges. Get the pairing right and it just works.

Second, watch your base model. On SDXL you need the DexiNed soft-edge ControlNet specifically; the SD 1.5 soft-edge model won't load on an SDXL checkpoint. And on the 2026 union models, soft-edge is usually folded in under a single "soft edge" mode - HED, PIDI, and TEED all map to the same condition slot on those unions - so you pick the preprocessor for how clean you want the lines, then select the union's soft-edge mode rather than hunting for a separate TEED-branded ControlNet. If you specifically want maximum line accuracy for busy scenes or text, that's Anyline's territory (which uses TEED under the hood at a higher resolution); plain TEED here is the lighter, faster everyday pick.

CategoryControlNet Preprocessors/Line Extractors

Inputs (3)

NameTypeDefaultDescription
imageIMAGE
safe_stepsoptINT20–10
resolutionoptINT51264–16384

Outputs (1)

NameTypeDescription
IMAGEIMAGE