JPG in, vector out

JPG to SVG converter

Every JPG has already been through a lossy compressor, and the damage lands on the edges. Drop one in and you get back an SVG built from real paths and fills, with the compression noise read as noise rather than as shape.

  • Compression noise averaged out, not traced

Convert a JPG

Uploaded once, deleted after

Drop a JPG here

or

Also takes
  • PNG
  • WebP
  • GIF
  • BMP
  • AVIF
  • TIFF
up to 32 MB

The trace runs on a hosted engine, so the image is uploaded once and the temporary copy on this machine is deleted the moment it finishes. The trace is drawn into a preview the moment it lands, and the SVG file is yours to download once you have an account.

What happens to your JPG

Three steps, about twenty seconds, and a preview you can compare side by side.

  1. 1

    Drop the JPG

    Anything up to 32 MB. Phone photos are usually a few megabytes, and they get framed down before tracing, because the tracer works from a fixed pixel budget and camera resolution above that budget is detail it cannot use.

  2. 2

    The model reads it

    A deep-learning model works out what is actually in the picture, region by region, then fits curves around those regions instead of tracing along every pixel edge. Compression noise inside a region never becomes a shape of its own.

  3. 3

    Keep the SVG

    Compare it against the checkerboard, then download it. Signing up costs nothing, nothing is claimed on the file, and no watermark goes over it.

What JPEG compression does to a trace

JPEG is a lossy format. It splits the picture into 8 by 8 pixel blocks, stores each block as a set of frequency values, then rounds those values down to save space. Flat areas survive the rounding well, because there is little to store. Busy areas lose detail, and the busiest parts of any picture are the edges. That is exactly where a tracer has to decide where one shape stops and the next one starts.

Blocking

Neighbouring blocks get rounded differently, so faint seams appear on the 8 pixel grid. Blow a JPG up to 400% along a smooth gradient and you can often see it as a checkerboard of squares. A tracer that follows pixel boundaries reads each seam as a real change in colour, so a gradient that should come back as one shape comes back as a patchwork of them.

Ringing around hard lines

JPEG also rings. A hard black line on white picks up a halo of slightly off pixels on both sides, a faint echo of the line itself. Traced literally, that halo becomes thin extra shapes running alongside the real edge, and on a cut file each one is another pass of the blade.

Re-saving makes it worse

Every save adds another round of rounding. A picture that has been through a screenshot, a chat app and an image host carries three rounds of damage, and each one is permanent. This is why a JPG can look perfectly fine on screen and trace badly: your eye fills in detail that the tracer is reading as fact. Saving the same picture as a PNG does not undo any of it, it only stops the count going up.

What actually helps

  • Convert the original PNG or design file if you still have it. It beats a JPG of the same picture every time.
  • Do not upscale the JPG first. Enlarging it invents fresh pixels for the tracer to interpret, and none of them are real.
  • If the file is stubborn, blur it by a pixel or two before converting. Blurring removes the noise the tracer is chasing, and it costs less edge detail than the noise does.

There is no transparency in a JPG

JPEG has no alpha channel. Everything in a JPG is opaque, the white behind a logo included, so there is nothing for the converter to carry over. That is a limit of the format rather than a setting you missed. Whatever colour sits behind your subject becomes part of the picture, and it comes back as a shape unless the tracer reads it as background.

If the SVG has to be transparent, get a PNG with the background already removed and convert that. The other route is to convert the JPG and then delete the background shape in a vector editor, which is quick once the background has come back as one region.

Photographs come back as artwork

Most JPGs are photographs, and a photograph has almost no flat colour. Every shift in tone is a new region, so the trace comes back as thousands of small shapes. That is what vectorizing a photograph means, not a fault in the conversion. The result stays sharp at any zoom, and it will be far larger than the JPG you handed over.

If the output is heavier than you want, downscale the source before converting. You get to choose which detail gets dropped, and the tracer's own pixel budget would have dropped some of it anyway.

The sideways photo

A JPG from a phone often stores rotation in an EXIF tag rather than in the pixels, so the file says it is a portrait shot while the picture inside it is lying on its side. Software that reads the tag shows it upright. Software that ignores the tag shows it rotated a quarter turn. If a trace comes back sideways, the tag was dropped somewhere along the way, and re-saving the JPG from an editor that writes the rotation into the pixels fixes it for good.

JPG for a Cricut, and why it is the hard case

People look for a JPG to SVG converter for Cricut more than for almost anything else, and a JPG is the worst input for a cutting machine. A blade follows every path it is given, so compression noise turns into a fringe of tiny cuts around your outline, and a gradient turns into dozens of separate pieces instead of one shape. Converting first lets you see the paths and remove the specks before the machine moves.

A flat logo or a silhouette in a JPG cuts fine, because there are large single-colour regions for the tracer to lock onto. A photograph is a bad cut file whatever format it arrives in. The Cricut guide walks through the path checks that matter, and all of them apply here.

When a JPG is the wrong file to convert

If you wanted a photograph, keep the JPG. An SVG of a photo is useful for scaling and editing, but it is not a copy of the original and it will not look like one at normal size.

If the JPG is a scan or a screenshot of text, tracing gives you the outlines of letters: heavy, hard to edit, and impossible to search. Recognising the text and setting it again is less work than cleaning up the paths.

If you need the finished picture at a fixed print size and pixel accuracy, a raster format is the right answer and a vector is not.

JPG to SVG questions

The things people ask before they drop a file in.

Why does my traced JPG have speckles around the edges?

That is JPEG noise turning into geometry. Compression leaves a halo of slightly wrong pixels around every hard edge, and anything that follows pixel boundaries follows the halo too. Where a run of pixels reads as one flat colour, the noise inside it gets averaged away, so the fringe is thinnest on flat artwork and worst on photographs. Blurring the source by a pixel or two before converting, or deleting the stray shapes afterwards, is the reliable fix.

Will the SVG look exactly like my JPG?

For flat artwork, logos, icons and line drawings, close, and it scales to any size without going soft. For photographs, expect a rebuild of the picture in shapes rather than a copy of every pixel. Compression leaves the photograph case with more loose detail than the same picture would have as a PNG, so a clean source traces better even when the JPG looks identical on screen.

Does a JPG have transparency?

No. JPEG has no alpha channel, so a JPG is always fully opaque, background included. If the SVG needs to be transparent, remove the background from a PNG first and convert that, or delete the background shape afterwards in a vector editor.

Should I convert the JPG, or the PNG it came from?

The PNG, every time, if you still have it. A JPG is the same picture with some detail rounded off, and that rounding is permanent. Saving a JPG as a PNG does not put the detail back, it only stops the damage from piling up. The original gives the tracer cleaner edges to work from.

Does converting a JPG to SVG make the file smaller?

Usually not, and for a photograph it goes the other way. A JPG of a photo is compressed hard, and a traced version of the same picture stores thousands of shapes, so the SVG tends to be much larger. Flat logos are the case where you win: a handful of paths replaces a large pixel grid.

Is this real vectorizing, or a JPG in a wrapper?

Real vectorizing. Wrapping means embedding the bitmap inside an SVG file untouched, and the result scales exactly as badly as the JPG did. Open the downloaded file in a text editor and you will see paths and fills, not a blob of encoded image data.

Hand it a JPG. Keep the paths.

About twenty seconds from drop to a finished trace. Nothing to install, and no watermark on the file you keep.

Convert a JPG