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
<?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
BMP image, 1200 × 800 pixelsSVG image resized or re-encoded without OCR text extractionDo it in code
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 -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.svgOptions this engine accepts for BMP → SVG
| Key | Applies to | Type | Default |
|---|---|---|---|
| dpi | Reading BMP | number | 96 |
| width | Writing SVG | number | 0 |
| height | Writing SVG | number | 0 |
| fit | Writing SVG | contain · cover · fill | contain |
| quality | Writing SVG | number | 90 |
| background | Writing SVG | string | #ffffff |
| stripMetadata | Writing SVG | boolean | true |
This converter works today; a tested write-up of what changes for BMP → SVG is in progress.