Skip to content
pdfconversionapi

VSDX to PNG API

POST a VSDX to /v2/convert/vsdx/to/png and get one PNG per drawing page, numbered -1, -2 and so on. Pages are drawn at 150 DPI unless you ask for another resolution or size, so a Letter landscape page comes back 1650 × 1275.

Endpoint
POST /v2/convert/vsdx/to/png
Accepts
vsdx
Sample timing
0.545 s median of 5 runsHow we measure
Request size
Up to 10 MB on the Free plan or 100 MB on paid plans, all files together

Request and response

Every sample below ran against the API before this page was published. Set PDFCONVERSIONAPI_KEY to your key and run it as is.

curl -sS -X POST \
  https://api.pdfconversionapi.com/v2/convert/vsdx/to/png \
  -H "Authorization: Bearer $PDFCONVERSIONAPI_KEY" \
  -F File=@bike-repair-workflow.vsdx \
  -o response.json

# FileData is base64. Save the first file in converted/,
# or print the JSON error.
if jq -e '.Files' response.json > /dev/null; then
  mkdir -p converted
  name=$(jq -r '.Files[0].FileName' response.json)
  jq -r '.Files[0].FileData' response.json \
    | base64 --decode > "converted/$name"
else
  cat response.json
fi
200 OK0.545 s median2 files, 265 KB
{
  "ConversionCost": 1,
  "ConversionTime": 0.545,
  "Files": [
    {
      "FileName": "bike-repair-workflow-1.png",
      "FileExt": "png",
      "FileSize": 167697,
      "FileData": "iVBORw0KGgoAAAANSUhEUgAA…"
    },
    {
      "FileName": "bike-repair-workflow-2.png",
      "FileExt": "png",
      "FileSize": 103339,
      "FileData": "iVBORw0KGgoAAAANSUhEUgAA…"
    }
  ]
}

Response from our test run on 2026-11-03. ConversionTime shows the median of 5 runs. FileData is shortened here; the real response carries the whole file as base64.

The sample, converted

The same file the code sends. Download the input and the output and compare them yourself.

First page of bike-repair-workflow-1.png, rendered by the API
Input
bike-repair-workflow.vsdx (7.8 KB)
Output
bike-repair-workflow-1.png (164 KB)bike-repair-workflow-2.png (101 KB)
Source
A two-page Visio drawing for a fictional bike shop, a repair intake flowchart and a workshop floor layout, which we wrote by hand from the VSDX package format (CC0-1.0). How it was made
Made by
2026-11-04, API build 9eeeb0640aba

Parameters

Send these as form fields next to the file. Names are case-insensitive. If you set one of the documented options below that we don't support yet, the request fails with a 400 that names it instead of returning a file made without it.

ParameterWhat it does
ImageResolutioninteger, default 150Drawing resolution in DPI, also written into the PNG. At 200, ConvertAPI's default, the sample pages are 2200 × 1700; at 96 they are 1056 × 816 and shrink to 93,870 and 54,758 bytes.Values: 36–600
ImageWidthintegerPixel width of each PNG; the height follows the page's proportions, so 1200 gives 1200 × 927 for the sample. The page is drawn at that size rather than scaled afterwards.Values: 1–20000
ImageHeightintegerPixel height; with ImageWidth too, each page is fitted inside the box.Values: 1–20000
ScaleProportionsboolean, default truefalse stretches each page to exactly ImageWidth × ImageHeight, such as 1200 × 600.
ScaleIfLargerboolean, default falsetrue only ever makes pages smaller: ImageWidth=3000 then leaves the sample at its 150 DPI size instead of 3000 × 2318.
PageRangestringPages to draw. 2 returns only bike-repair-workflow-2.png.Values: e.g. 2, 1-3, 2-last
TransparentColorstringEvery pixel of exactly this color becomes transparent. white clears the page background and the white shape fills: 1,822,636 of page 1's 2,103,750 pixels. Only then does the PNG carry an alpha channel; together with ColorSpace=gray it becomes a gray PNG with alpha (83,513 bytes for page 1).Values: A color name, #RRGGBB or R,G,B
ColorSpaceenum, default defaultgray (63,312 bytes for page 1) or monochrome (23,843 bytes, only black and white). rgb returns the same 167,697-byte RGB file as the default, which has no alpha channel. cmyk returns 400.Values: default, rgb, gray, grayscale, monochrome
BackgroundColorstring, default whitePainted behind each page. Visio pages are drawn with an opaque white page of their own that reaches every edge, so in the sample black returned the same files as the default.Values: A color name, #RRGGBB or R,G,B
FileNamestringStem of the numbered files: bike-repair-workflow-1.png and so on, unless you set it.
StoreFileboolean, default falseReturn a link for each PNG, valid 3 hours, instead of the image data.

Not supported yet

Setting one of these to anything but its default returns 400.

OptionWhat to do instead
PageSizePage sizes come from the drawing; PageSize returns 400 "PageSize is not supported yet for VSDX files".
PageOrientationTaken from the drawing as well.

What carries over, and what doesn't

Kept

  • Each drawing page as its own PNG, in page order and named by page number
  • The page size from the file: the 11 × 8.5 in pages become 1650 × 1275 pixels at 150 DPI
  • Shape fills, line weights, dashed outlines, arrowheads and the rotated shelving label as in the PDF route
  • Text drawn from the real fonts or metric-compatible stand-ins (Carlito for Calibri), with the bold word in the Inspect box
  • Pictures placed in the drawing, such as the orange badge on page 1
  • A DPI value in the PNG whenever you send ImageResolution

Lost or not yet supported

  • Hyperlinks and shape data don't survive, as in any image.
  • Text can't be selected or searched; for that, convert to PDF.
  • A drawing with pages of different sizes gets every page at the largest width and height (11 × 11 in for a Letter landscape plus portrait test), so portrait pages come out with empty space.
  • BackgroundColor has no visible effect, because the page itself is painted white from edge to edge; use TransparentColor=white to remove it.

Limits

  • One VSDX per request; up to 2,000 pages drawn per request.
  • A page may be at most 16,000 pixels on a side and 100 million pixels in all, or the request returns 413.
  • A file that can't be read as VSDX returns 422.
  • Requests up to 10 MB on the Free plan or 100 MB on paid plans, all files and fields together.
  • 120 seconds per conversion, then 504.

Where teams use it

Diagrams in a wiki or a help center

Process maps live in Visio, but readers look at them in a browser. Convert each page to PNG when the VSDX changes and embed the images in the article.

Flowcharts on slides and colored backgrounds

With TransparentColor=white the page background drops out, so the flowchart sits on any slide color. Shapes filled white become see-through too, which suits outline-style diagrams.

Thumbnails of every page

ImageWidth=400 draws each page directly at thumbnail size for a file browser that shows what a drawing contains.

Questions

How do I get one image instead of one per page?

Ask for the page you want with PageRange, for example PageRange=1. Each PNG holds one page; the API doesn't stitch pages together.

Why is my image 1650 pixels wide and not 2200?

We draw at 150 DPI when ImageResolution is left out; ConvertAPI documents 200. Send ImageResolution=200 to get 2200 × 1700 for a Letter landscape page.

Can the PNG have a transparent background?

Yes, with TransparentColor=white. Pixels that are exactly white become transparent, which includes white shape fills; antialiased edges keep their light gray.

Does `ImageWidth` blur the drawing?

No. With ImageWidth or ImageHeight, the page is drawn at the scale that size needs, so 3000 pixels wide is as sharp as 3000 pixels can be.

Convert your first VSDX file in a minute.