Skip to content

BMP to SVG converter

BMP pixels are traced into SVG paths by our image engine for bmp-to-svg: flat colour regions become filled shapes, text is not recognized and stays non-editable.

  • Converted with Image engine · input deleted within 24 h
  • Free: 5 conversions a day · 5 MB each
  • Higher limits →

What changes

  • BMP pixels are traced into SVG paths by our image engine for bmp-to-svg: flat colour regions become filled shapes, text is not recognized and stays non-editable.
  • Photographs and gradients are posterized into a small set of flat colours; the trace is meant for logos, icons, diagrams and line art.
  • Transparency stays for PNG and WebP but is filled with the selected background for JPEG, BMP, PDF, and other opaque targets.
  • Animated inputs such as GIF are flattened to a still frame unless a server codec explicitly supports animation for that output.
  • SVG input is rasterized at the requested dimensions or DPI, producing pixels rather than editable vector paths.
  • Server-only codecs or PDF rendering are used when browsers cannot safely handle the pair.

A real BMP → SVG run

We converted our BMP sample (703 KB) with Image engine on 2026-10-20. It took 127 ms and produced a 22 KB SVG file, 97% smaller than the input. The engine raised 1 warning, listed below.

Input · sample.bmp · 703 KB

600 × 400 px, 24-bit

Width
600
Height
400
Encoding
24-bit

Output · sample.svg · 22 KB

SVG, 55 paths

Paths
55
  • Pixels traced to 55 vector paths; text in the image is not editable and photographs become flat colour regions.

First lines of the output

svg
<?xml version="1.0" encoding="UTF-8"?>
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="600" height="400">
<path d="M0 0 C198 0 396 0 600 0 C600 132 600 264 600 400 C402 400 204 400 0 400 C0 268 0 136 0 0 Z " fill="#4CA6C9" transform="translate(0,0)"/>
<path d="M0 0 C0.439 0.223 0.439 0.223 2.662 1.351 C3.18 1.612 3.18 1.612 5.802 2.932 C6.983 3.555 8.163 4.18 9.342 4.808 C9.982 5.147 10.622 5.486 11.282 5.835 C13.369 6.941 15.453 8.052 17.537 9.163 C18.256 9.546 18.974 9.928 19.715 10.322 C29.51 15.533 39.218 20.872 48.846 26.388 C58.492 31.885 68.308 37.054 78.13 42.228 C86.327 46.549 94.479 50.929 102.45 55.66 C105.986 57.697 108.557 59.015 112.662 58.351 C114.717 57.413 114.7…

Options

width
Set the output width in pixels.
height
Set the output height in pixels.
fit
Contain, cover, or fill within the requested dimensions.
quality
Set lossy output quality where the codec supports it.
background
Fill transparency with this color for opaque formats.
stripMetadata
Remove source metadata when writing the output.
dpi
Rasterize SVG or PDF-derived pixels at the requested scale where supported.

Example

input
BMP image, 1200 × 800 pixels
output
SVG image resized or re-encoded without OCR text extraction

Do it in code

python
from PIL import Image
import vtracer
img = Image.open("input.bmp").convert("RGBA")
svg = vtracer.convert_pixels_to_svg(list(img.getdata()), img.size, colormode="color")
open("output.svg", "w").write(svg)

BMP to SVG by API or MCP

The HTTP API and the MCP server run the exact engine this page uses (Image engine); the response carries the same warnings the web converter shows. Check support first with GET /api/v1/pairs?from=bmp&to=svg.

curl
curl -X POST https://filetypeconverters.com/api/v1/convert \
  -H "Authorization: Bearer $FTC_API_KEY" \
  -F "file=@input.bmp" -F "from=bmp" -F "to=svg" \
  -F 'options={"dpi":96}' \
  --output output.svg

Options this engine accepts for BMP → SVG

KeyApplies toTypeDefault
dpiReading BMPnumber96
widthWriting SVGnumber0
heightWriting SVGnumber0
fitWriting SVGcontain · cover · fillcontain
qualityWriting SVGnumber90
backgroundWriting SVGstring#ffffff
stripMetadataWriting SVGbooleantrue
API reference

This converter works today; a tested write-up of what changes for BMP → SVG is in progress.