Skip to content

PDF to SVG converter

PDF → SVG is a vector export, not a trace: page geometry, rules and glyph outlines are copied into an SVG with a 612×792 point viewBox for a Letter page.

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

From real runs

What you get — and what changes

  • Page geometry Kept

    The SVG root carries viewBox 0 0 612 792 in PDF points, so the page scales without rounding and margins match the original.

  • Text Changed

    By default every glyph is exported as an outline path (94 paths for a one-page report), which renders identically anywhere but cannot be selected or searched.

  • Text with textAsPath=false Changed

    The page became 27 text elements and one path at 8,380 bytes, but they reference font-family LibertinusSerif without embedding it, so other machines substitute a font.

  • Vector rules and shapes Kept

    The horizontal rule under the table heading stayed a precise line rather than a row of pixels.

  • Embedded images Kept

    Raster images inside a PDF are carried as embedded image elements at their placed size; they are not re-traced.

  • Links and form fields Lost

    Link annotations, bookmarks and interactive fields have no SVG equivalent and are dropped.

  • File size Changed

    Outlined text made the SVG 142,855 bytes from a 21,438-byte PDF; keeping text as text shrank it to 8,380 bytes.

Sample conversions

One-page typeset report

Input
sample.pdf, one Letter page, 21,438 bytes, Libertinus Serif text, a three-column table and a rule.
Output
142,855-byte SVG in 8 ms with 94 outline paths and no text elements; visually identical to the page at any zoom.

Two-page slide deck exported as PDF

Input
A 2-page PDF rendered from a 16:9 presentation.
Output
A ZIP holding sample-page-1.svg (80,755 bytes) and sample-page-2.svg (70,529 bytes), one file per page.

A real PDF → SVG run

We converted our PDF sample (21 KB) with Image engine on 2026-09-11. It took 7 ms and produced a 140 KB SVG file, 6.7× larger than the input. The engine raised 1 warning, listed below.

Input · sample.pdf · 21 KB

PDF 1.7, 1 page, selectable text (LibertinusSerif-Bold-Identity-H, LibertinusSerif-Bold, LibertinusSerif-Regular-Identity-H, LibertinusSerif-Regular), 0 image objects

Version
1.7
Pages
1
Fonts
LibertinusSerif-Bold-Identity-H, LibertinusSerif-Bold, LibertinusSerif-Regular-Identity-H, LibertinusSerif-Regular
Images
0
Text layer
yes

Output · sample.svg · 140 KB

SVG viewBox 0 0 612 792, 94 paths

viewBox
0 0 612 792
Paths
94
  • Text was converted to outlines, so it is not selectable or editable in the SVG.

First lines of the output

svg
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.1" width="612" height="792" viewBox="0 0 612 792">
<defs>
<path id="font_1_1" d="M.24198914 .1219635V.29882813H.32299806C.3919983 .29882813 .41099549 .27983094 .4139862 .23487854 .41999818 .22888184 .45098878 .22888184 .45700074 .23487854 .45498658 .26985169 .45498658 .29981996 .45498658 .32281495 .45498658 .3458252 .45599366 .379776 .45700074 .40875245 .45098878 .4147339 .41999818 .4147339 .4139862 .40875245 .41099549 .35380555 .3899994 .34481813 .32299806 .34481813H.24198914V.5535736C.24198914 .5775604 .25898744 .6025238 .2829895 .602523…

Is your file a scan?

A scanned PDF has no vector content, so PDF → SVG wraps the page image in an SVG with no gain in quality or searchability. Detect a scan by trying to select text in a viewer; if nothing selects, use PDF → TXT or PDF → DOCX with AI Deep Read (1 credit per page).

Options and when to change them

textAsPath
Set it to false when you need selectable text and control the fonts on the viewing machine; leave it true for logos, stamps and anything that must look the same everywhere.
max_pages
Limit long documents when you only need the first pages; the warning reports how many were exported.

Do it yourself

PyMuPDF

bash
import fitz

for i, page in enumerate(fitz.open("in.pdf")):
    open(f"page-{i + 1}.svg", "w").write(page.get_svg_image(text_as_path=True))

text_as_path=False keeps text elements but does not embed fonts; check the result on a machine without the originals.

Inkscape

bash
inkscape in.pdf --pdf-page=1 --export-type=svg --export-filename=page-1.svg

Inkscape converts one page per run and may rewrite fonts to its own substitutes.

PDF 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=pdf&to=svg.

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

Options this engine accepts for PDF SVG

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

When this is the wrong conversion

  • If you want a picture of the page for a slide or a chat, PDF → PNG or PDF → WebP is smaller and needs no SVG support.
  • If you need to edit the words, PDF → DOCX rebuilds paragraphs; the SVG only holds glyph outlines.
  • If the PDF is a scan, the SVG will contain one big embedded bitmap; run AI Deep Read on it instead.

PDF to SVG questions

Why can I not select text in the SVG?

Text is exported as outline paths by default so the page renders identically without the PDF's embedded fonts. Set textAsPath to false to keep text elements, accepting that the viewing machine must supply a matching font.

Why is the SVG so much larger than the PDF?

Each glyph outline is written as coordinates in plain XML, and the PDF stored the same shapes once in a compressed font. A page of prose grows several times; a page of drawings stays close to the PDF size.

What do I get for a multi-page PDF?

A ZIP containing one SVG per page, named sample-page-1.svg, sample-page-2.svg and so on. Use max_pages to cap how many are exported.