How image to SVG conversion works

ImageToSVG traces the picture you give it. It does not redraw or reinvent it with generative AI, so the shapes, proportions and lettering in the SVG come from your image and nothing else.

The steps

  1. Decode. Your browser decodes the file and applies its EXIF orientation. The file is not sent anywhere.
  2. Resize to a working size. Images smaller than 1024 pixels are lightly blurred and enlarged up to 4× with smooth interpolation. This turns the soft anti-aliased edge pixels into sub-pixel position information, which gives smoother curves than tracing a pixel staircase. Images larger than 2048 pixels are reduced to 2048 on the longest side.
  3. Handle transparency. Pixels that are less than half opaque become fully transparent and are left out of the result. The rest become fully opaque.
  4. Remove the background (optional). If one color covers at least half of the image border, pixels of that color that are connected to the border are cleared. Areas of the same color enclosed by the artwork are kept.
  5. Reduce colors. The remaining pixels are grouped into a small palette. In Auto mode, near-identical colors are merged and faint blend colors that only appear along edges are discarded. A fixed limit is an upper bound: no colors are invented to reach it.
  6. Trace. Connected regions of each color are outlined and the outlines are fitted with straight lines and cubic Bézier curves by the open-source visioncortex / VTracer engine, compiled to WebAssembly. Regions smaller than the Detail threshold are dropped.
  7. Write the SVG. Coordinates are scaled back to the original pixel size and written as plain <path> elements with a viewBox. There are no transforms, embedded images, scripts or external references.

What is preserved and what is not

How we tested it

In November 2026 we rendered 16 openly licensed icons (8 single-color brand marks and 8 multi-color emoji) from their original vector files, saved each as a 512-pixel PNG and as a 200-pixel JPEG at quality 60, traced all 32 files, and compared each traced SVG with the original vector rendered at 1024 pixels. The score is the mean absolute pixel difference on a 0–255 scale, so lower is closer.

InputTracerMean differenceAverage pathsAverage size
512 px PNGVTracer 0.6.5, default settings1.487.17.1 KB
512 px PNGImageToSVG, default settings0.627.08.5 KB
200 px JPEGVTracer 0.6.5, default settings4.69128.942.2 KB
200 px JPEGImageToSVG, default settings2.5311.022.2 KB

This is a small test on simple flat artwork, measured by us with one metric. It shows that upsampling and palette clean-up help the tracing engine on this kind of image. It is not a ranking of products, and it says nothing about photographs.

Limits

Back to the converter