vtracer
The classic raster-to-vector tracer, now a ComfyUI node
- image
- api_config
- svg_audio
- svg_video
- workflow_id
- raw_json
VTracer is the old reliable of vectorization - the open-source algorithmic tracer (the engine behind vectorizer.ai's free tool) that converts raster pixels into clean geometric SVG paths. It's the opposite of the generative OmniSVG/StarVector nodes in this pack: no model, no sampling, just deterministic geometry. Feed it a logo or illustration, get a faithful, infinitely-scalable vector back.
This node runs VTracer on Civitai's orchestration layer, which is arguably the least necessary of the three image-to-SVG options - VTracer is a tiny, dependency-light algorithm that runs fine on a laptop in seconds. You're paying Buzz to have Civitai run something you could trivially run locally. But if you're already in a ComfyUI graph and want the result as a node output without leaving the canvas, or you're on a no-GPU cloud ComfyUI where running your own tracer is friction, here it is. It's also the one with the most knobs, because it's a real tuning problem.
How it works
Standard civitai-comfy-nodes mechanics: upload your image as an imageToSvg recipe (engine comfy, ecosystem vtracer), long-poll, return the SVG. VTracer's parameters control the tracing quality - color segmentation, path smoothing, and simplification - and they map 1:1 from the classic VTracer CLI.
The inputs that matter
Only image is required; the defaults are sane, but these are the ones worth touching:
- mode -
spline(default, smooth curves),polygon(angular, good for geometric art), ornone(raw paths). - filter_speckle - drops tiny noise shapes; raise it to suppress speckle on noisy scans.
- color_precision - how many colors to preserve (default 6); lower = more posterized, higher = more faithful.
- layer_difference - how different two colors must be to split into separate layers (default 24). Lower it to keep similar shades together.
- corner_threshold / length_threshold - corner detection and path-simplification sensitivity; the main levers for "too many points" vs "losing detail."
- hierarchical -
stacked(default) orcutoutlayers. - max_iterations, splice_threshold, path_precision - advanced; leave them alone until you're chasing a specific artifact.
Outputs
Same generated naming as the SVG siblings: svg_audio / svg_video media slots plus workflow_id / raw_json. The SVG comes back in a media slot (the names are a pack codegen artifact - don't take "audio"/"video" literally); raw_json holds the full job JSON if you need the raw SVG text.
Installing and authenticating
Pack-wide install:
cd ComfyUI/custom_nodes
git clone https://github.com/civitai/civitai-comfy-nodes.git
pip install -r civitai-comfy-nodes/requirements.txt
or ComfyUI Manager → "Civitai Comfy Nodes" → Install → restart. Dependencies: requests + python-socketio[client].
Auth: Civitai Auth node → CIVITAI_API_TOKEN → stored key/OAuth → browser login. Headless:
export CIVITAI_API_TOKEN=your_token
Where people get burned
- You're paying for something trivial to run locally. VTracer is a laptop algorithm. If you have any local Python at all, running it yourself is free and faster. This node earns its Buzz only when you're deep in a ComfyUI workflow or on a no-GPU box.
- Tuning is a rabbit hole. Speckle, color precision, and the two thresholds interact - change one, re-check, iterate. Start with
filter_speckleandcolor_precision, and only touch the thresholds if paths come out spiky. - It's a trace, not a semantic generation. Text and gradients trace poorly; VTracer shines on flat-color logos and illustrations, not photos.
- Odd output names (
svg_audio/svg_video) are generated naming - don't expect audio. And the image is sent to Civitai's servers for processing.
Inputs (12)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | Either A URL, A DataURL or a Base64 string | |
| hierarchicalopt | COMBO | stacked | 2 options: stacked, cutout |
| modeopt | COMBO | spline | 3 options: spline, polygon, none |
| filter_speckleopt | INT | 80–100 | — |
| color_precisionopt | INT | 60–10 | — |
| layer_differenceopt | INT | 240–256 | — |
| corner_thresholdopt | INT | 650–180 | — |
| length_thresholdopt | FLOAT | 5.003.5–10 | — |
| max_iterationsopt | INT | 101–70 | — |
| splice_thresholdopt | INT | 500–180 | — |
| path_precisionopt | INT | 20–10 | — |
| api_configopt | CIVITAI_CONFIG | Optional Civitai Auth connection; defaults to CIVITAI_API_TOKEN or stored OAuth login. |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| svg_audio | AUDIO | — |
| svg_video | VIDEO | — |
| workflow_id | STRING | — |
| raw_json | STRING | — |