← All guides

Vectorize an icon set with transparent backgrounds

Crop the source sheet, remove only border-connected backgrounds, then choose a recipe for outline or shaded artwork.

Problem

Icon sheets often mix a near-white cell background with anti-aliased edges, narrow gaps, and attached neutral shadows. A broad color-key can erase white artwork inside the icon. Kurviq instead removes border-connected pixels and protects areas that are only reachable through narrow channels.

Command

Terminal
npx kurviq --input icon.png --output icon.svg \
  --remove-background auto --background-fuzz 3 \
  --background-channel 3 --mode spline \
  --filter_speckle 4 --path_precision 1 --segment_length 8

Before and after

Accessibility — outline icon, raster input Accessibility — outline icon, traced SVG output SVG PNG
SVG: 23.2 KB PNG: 18.3 KB

Accessibility — outline icon

Thin strokes and enclosed shapes after background removal.

The SVG keeps the enclosed outline while the removed background becomes transparent. Always inspect the result on a dark surface; white halos and accidentally removed light details are much easier to see there.

Workflow

1. Crop first

Export one icon per raster file with a small border around the artwork. Auto background selection reads the border, so a clean crop gives it an unambiguous sample.

2. Apply the shared spline recipe

Spline mode fits smooth contours. A speckle filter of 4 removes tiny islands, path precision 1 retains useful coordinate detail, and segment length 8 avoids over-segmenting rounded shapes.

3. Branch by style

For blurry flat or outline icons, add --upscale 2 --sharpen. For soft-shaded 3D icons, add --upscale 2 --gradient_step 8 --color_precision 8 instead. Sharpening flattens ramps, so do not combine it with the gradient recipe.

Flag reference

Flag Value Why it is here
--remove-background auto Samples the border and removes only connected background pixels.
--background-fuzz 3 Uses a conservative color tolerance for near-uniform cells.
--background-channel 3 Protects regions that can only be reached through narrow gaps.
--mode spline Fits smooth curves instead of polygon facets.
--filter_speckle 4 Drops isolated four-pixel noise.
--path_precision 1 Keeps coordinates precise enough for small icons.
--segment_length 8 Produces longer, smoother contour segments.
Watch for this: Auto removal assumes the border represents the background. Use an explicit #RRGGBB value when artwork touches every edge, and use --background-shadows keep when a neutral shadow is intentional.