Convert any raster image (PNG, JPEG, BMP, GIF, WebP) to clean, scalable SVG vectors right in your browser. Drag and drop your file, paste from clipboard, or pick a file to get started, then adjust clustering and curve fitting parameters to fine-tune the output. Prefer to automate it? The same converter ships as image2svg-mcp, an open-source MCP server that lets AI agents like Claude and Cursor convert images to SVG for you.
Everything this page does is also available to your AI tools.
image2svg-mcp is a free, open-source (Apache 2.0)
MCP server that converts raster images (PNG, JPG, WEBP, TIFF) to scalable SVG vector graphics. Add it to
Claude Code, Claude Desktop, Cursor, or any other MCP client and your assistant gets a
convert_image_to_svg tool it can call whenever a task needs vectorization: turning a generated
logo into an SVG, vectorizing a sketch, or batch-converting icons.
Unlike API-based alternatives, it runs entirely on your machine with the same VTracer engine that powers the converter above. No API keys, no per-image fees, and your images never leave your computer.
claude mcp add image2svg --scope user -- uvx image2svg-mcp
To let it read local images, allow a directory:
claude mcp add image2svg --scope user -- uvx image2svg-mcp --allow-local-files-path /home/user/images
The server runs with uvx image2svg-mcp (bundled with
uv), so any MCP client can use it. Pick yours:
Add to claude_desktop_config.json (Settings > Developer > Edit Config):
{
"mcpServers": {
"image2svg": {
"command": "uvx",
"args": ["image2svg-mcp"]
}
}
}
Add to ~/.cursor/mcp.json (or .cursor/mcp.json in your project):
{
"mcpServers": {
"image2svg": {
"command": "uvx",
"args": ["image2svg-mcp"]
}
}
}
One command:
code --add-mcp '{"name":"image2svg","command":"uvx","args":["image2svg-mcp"]}'
Or add to .vscode/mcp.json:
{
"servers": {
"image2svg": {
"command": "uvx",
"args": ["image2svg-mcp"]
}
}
}
Add to ~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"image2svg": {
"command": "uvx",
"args": ["image2svg-mcp"]
}
}
}
MCP Servers icon > Configure MCP Servers, then add to cline_mcp_settings.json:
{
"mcpServers": {
"image2svg": {
"command": "uvx",
"args": ["image2svg-mcp"]
}
}
}
In the Agent panel open MCP Servers > Manage MCP Servers > View raw config, then add:
{
"mcpServers": {
"image2svg": {
"command": "uvx",
"args": ["image2svg-mcp"]
}
}
}
codex mcp add image2svg -- uvx image2svg-mcp
The server can also run as an HTTP service:
docker run -p 8000:8000 ghcr.io/botmonster/image2svg-mcp
claude mcp add image2svg --transport http --scope user http://localhost:8000/mcp
The convert_image_to_svg tool accepts an image as base64 data or a URL, plus the same
vectorization parameters as the sliders above. Dial in the settings visually on this page, then reuse them in
your prompts.
| Parameter | Default | Description |
|---|---|---|
image_base64 / image_url |
- | The input image, as base64 data or an http(s):// or file:// URL |
colormode |
color | Full color or binary (black and white line art) |
mode |
spline | Tracing mode: spline, polygon, or none (pixel-perfect) |
filter_speckle |
4 | Remove speckles of N pixels or fewer |
color_precision |
6 | Color quantization bits; lower means fewer colors and a simpler SVG |
layer_difference |
16 | Color difference for merging gradient layers |
corner_threshold |
60 | Angle threshold for corner detection (degrees) |
length_threshold |
4.0 | Minimum path segment length |
splice_threshold |
45 | Angle threshold for splicing splines (degrees) |
path_precision |
8 | Decimal precision of SVG coordinates |
hierarchical |
stacked | Layer arrangement: stacked or cutout |
max_iterations |
10 | Maximum curve fitting iterations |
Source and docs: GitHub · PyPI · Docker image