Skip to main content

JPG to SVG

Convert your JPG file to SVG in your browser

Your file is processed locally and is not uploaded

What you will getJPG → SVG

Your converted image will appear here

The converted file downloads directly to your device

Tracing colored regions into SVG paths may change small details, text and photos

How to convert JPG to SVG

  1. Choose a JPG or JPEG. Clear, solid shapes are easier to inspect than a busy photograph.
  2. Select “Convert to SVG” and inspect the actual result above.
  3. Download the SVG. Keep the JPG to compare edges, small lettering and colors.

This tool traces colored regions into paths in your browser. It approximates the picture; it does not recover the original artwork, fonts or missing photo detail. It has no background-removal or tracing-quality selector. If you have the original vector design, use that instead of tracing a compressed export.

JPEG compression can become extra shapes

We drew one triangle, rectangle and circle on white, then saved the same 320 × 200 artwork as JPEG at quality 95 and 15. These are input-generation settings, not controls on this converter. The higher-quality input was 9,053 bytes and produced an SVG of 138,422 bytes with 803 paths. The more compressed input was 2,975 bytes but produced 161,939 bytes with 1,104 paths. Making the JPEG smaller did not make this traced SVG smaller.

Same artwork saved as two JPEG qualities and their actual SVG traces; the smaller JPEG produces more paths
Measured October 15, 2026. Original synthetic artwork, with independently rendered saved SVGs. These samples are tests of Filepetal, not a competitor quality ranking.

The low-quality trace shows pale patches near the green rectangle and a stepped outline around the red circle. The saved files contain 15 and 16 distinct path fill colors respectively, although the drawing started with only four flat colors including white. JPEG edge pixels and tracing both affect the result; this paired test does not isolate every cause or prove that every low-quality JPEG will create more paths. Inspect hard edges and use a cleaner source when those patches matter.

A real user question about JPEG tracing artifacts helped define this experiment. That question concerns Inkscape; its results are not evidence of Filepetal behavior. Our conclusions here come from the downloadable files below.

Matching dimensions do not restore thin details

Our 2,048 × 256 JPEG contains lines drawn at widths of 1, 2, 4, 8 and 16 pixels, plus a large green area. Its SVG still declares 2,048 × 256, but the saved viewBox is 0 0 1024 128. The tool reduced the image before tracing and used that smaller coordinate system for the paths. The external width and height describe how to display the result; they are not proof that every original feature was retained.

Enlarged crop of JPEG fine lines and saved SVG; the one-pixel line disappears despite unchanged outer dimensions
Actual JPEG and SVG crops shown with the same scale. Lines were drawn at 1, 2, 4, 8 and 16 pixels; this is not a guaranteed minimum stroke width.

We independently rendered the SVG at its declared dimensions and sampled row 128. At x=100 the decoded JPEG was black, while the SVG was white: the one-pixel line disappeared in this sample. The two-pixel line became a faint narrow mark, with RGB (135, 135, 136) at x=201. Wider lines were visible but shifted at their left edges. Increasing the SVG display size cannot restore a line already lost during tracing. Crop unused margins in a copy of the source, then inspect the resulting small strokes.

Grays and lettering become approximations

Our 32-band gray JPEG produced ten distinct SVG path fills, rather than 32 separate grays. At the band centers, decoded input values 0, 8, 16, 24 and 32 all rendered as 20 in the saved SVG. The brightest tested band, 248, rendered as 228. This is a controlled strip, not a photograph: it demonstrates how several tones can merge in this implementation. Photos, gradients and soft shadows should be compared visually with the source instead of judged by the SVG extension.

Thirty-two gray bands become ten SVG fills; small and large labels are traced outlines rather than editable text
October 15, 2026: saved gray-strip and lettering experiments. The text sample is a separate JPEG; the SVG has no text element.

The separate lettering sample was a 3,871-byte JPEG with small and larger labels. Its SVG was 176,171 bytes and contained 1,214 paths, with zero text or embedded image elements. The letters remain recognizable in the independent render, but their edges look uneven. This output is outlined artwork, not recovered font text: changing the words in a text editor would require recreating them. We have not tested these outlines in a cutter, embroidery application or printing workflow.

Orientation and white backgrounds

The four-quadrant orientation sample stores a 240 × 120 JPEG with EXIF orientation 6. The browser-decoded picture is 120 × 240, and the actual SVG declares 120 × 240 with the same rotated quadrant arrangement in the independent render. This verifies that example in the browser used for this test, not all cameras or orientation tags. The converter does not provide a manual rotate control. Check the preview before saving when your source relies on orientation metadata.

All six inputs are opaque JPEGs. Their saved SVGs include traced background regions; none performs automatic background removal. Independent renders also had some partially transparent edge pixels: for the quality-15 example the minimum alpha was 91 while fully opaque pixels were 255. Therefore an opaque JPEG does not prove that every rendered SVG edge remains opaque. The checkerboard preview helps reveal such edges; use the saved result on your intended background before relying on it.

Download and reproduce these experiments

Test date: . The six synthetic inputs were converted through the actual browser tool. Saved SVGs were independently parsed and rendered with sharp/librsvg. The dated manifest contains dimensions, bytes, SHA-256 hashes and inspection scope. Reproduction instructions and the input generator are included.

SampleInput JPEGOutput SVGPaths
edges-q95320 × 200
9,053 bytes
320 × 200
138,422 bytes
803
edges-q15320 × 200
2,975 bytes
320 × 200
161,939 bytes
1,104
thin-lines-20482048 × 256
23,997 bytes
2048 × 256
4,107 bytes
23
gray-steps512 × 160
3,525 bytes
512 × 160
1,651 bytes
10
orientation-6240 × 120
2,758 bytes
120 × 240
1,742 bytes
12
labels320 × 128
3,871 bytes
320 × 128
176,171 bytes
1,214
SHA-256 of each downloadable pair

edges-q95
JPEG: 4189d3cee447e580f9db723b8a9208c5c8299f7a6dff9c91a6f670303c520670
SVG: 05b7adf0eed264c150d67e648d4fa1fa863ec70be43b2652066b6ec157c50b4e

edges-q15
JPEG: 601afa038ace5ee08f9b2aa3dcdf8b142ad4eff6b06bab3f63c59885c0f07134
SVG: 82b4228138d64019d6373d80abe26a2070a0b027dc4ec274bc95e149ad22e256

thin-lines-2048
JPEG: 74bdea379de3ab1949b941d5aca33e0882d55e6d2706d06d1a04692ad8597787
SVG: e867467fe1fd2a933882ef5a42842475e1cb93cbb04bea66f5d0a871065f9352

gray-steps
JPEG: 07582c1492008bac7b0be15d69dda933385217f6c3312da9bdd96af8969ff1aa
SVG: 48618a2ffda4038cea1847ef7e094cd4ed9ae10a1e6a440cb299408b37775a08

orientation-6
JPEG: 7adfe6024aa57274578605b60c0c6c5d5a90568211e5df2ecba93d11868f7a1a
SVG: 0df470ee03f12c627e5ff49b303e64a02bc8e34d38cce87701e07410036884fc

labels
JPEG: 17a2a2843a5287be9c79481a22511bae5fe586a9f443f66ec48f4cc7879b696e
SVG: 681b57691bd849e3a28af1c41b181007fe2327a89f187fda1b4663c68761b7d2

File hashes identify these exact samples. Different decoders or browsers may produce different traces; this is not a promise of identical results everywhere. Path counts describe saved file structure, not a quality score.

Current tracing behavior and errors

The existing tracing stage uses a 16-slot palette and fits the source inside 1,024 pixels on its longest edge. These are Filepetal settings, not SVG format requirements. ImageTracer’s own documentation describes its palette and path-filter options; this page does not expose those settings as user controls.

Choose one valid .jpg or .jpeg, up to 20 MiB (shown as 20 MB in the tool). Decoded images are limited to 4,096 pixels per side and 16 million pixels in total. These existing limits were not changed by this update. We tested a text file renamed .jpg, a truncated JPEG and a 4,097 × 1 JPEG: each showed an error with no SVG download or preview. Download these rejection inputs from the manifest to repeat the checks. For a damaged source, export a fresh copy; preserve the original.

Rejection inputs: fake.jpg · over-side.jpg · truncated.jpg.

JPG to SVG questions

Is this an SVG wrapper or real traced paths?

This converter traces paths. All six saved outputs have paths and no image elements. SVG can also embed a bitmap through an image element, so the extension alone does not establish vectorization. Paths still approximate the source.

Why did the smaller JPG create a larger SVG?

File size depends on the traced shapes. Our quality-15 JPEG was smaller than its quality-95 counterpart but created 1,104 paths instead of 803. This is one paired experiment, not a general compression rule.

Will a large SVG recover tiny text or lines?

No recovery is guaranteed. In the 2,048-pixel sample, one line disappeared after the smaller tracing stage even though the SVG kept the original external dimensions. Inspect the preview and compare with your source.

Can I edit the words or remove the white background?

The lettering becomes outlines, not editable font text. This tool has no background-removal control. Edit the traced paths in a suitable vector editor, or obtain the original design when you need reliable text and separate layers.

Will my camera image stay upright?

The saved orientation-6 sample converted to the expected 120 × 240 arrangement in this browser. Other sources were not covered by that test. Inspect the actual result, and rotate a copy of your source in an image editor if needed.