Skip to content
pdfconversionapi

VSD to JPG API

Upload a VSD to /v2/convert/vsd/to/jpg for one JPEG per drawing page. The sample sends ImageResolution=100, so its A4 page is drawn at 826 × 1169 pixels and the JPEG says 100 DPI.

Endpoint
POST /v2/convert/vsd/to/jpg
Accepts
vsd
Sample timing
0.49 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/vsd/to/jpg \
  -H "Authorization: Bearer $PDFCONVERSIONAPI_KEY" \
  -F File=@single-shape.vsd \
  --form-string ImageResolution=100 \
  -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.49 s median1 file, 28 KB
{
  "ConversionCost": 1,
  "ConversionTime": 0.49,
  "Files": [
    {
      "FileName": "single-shape-1.jpg",
      "FileExt": "jpg",
      "FileSize": 28964,
      "FileData": "/9j/4AAQSkZJRgABAgEAZABk…"
    }
  ]
}

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 single-shape-1.jpg, rendered by the API
Input
single-shape.vsd (11 KB)
Output
single-shape-1.jpg (28 KB)
Source
A one-page Visio 2003-2010 drawing with a single labeled rectangle, taken from an open-source office suite's public test files (MPL-2.0); we did not make it (MPL-2.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, stored in the JPEG header when sent. At 100 the sample JPEG is 28,964 bytes; at the default 150 it is 63,160.Values: 36–600
ImageQualityinteger, default 85JPEG quality. A mostly white page compresses well at any setting: 60 saves only 666 bytes on the sample at 150 DPI. ConvertAPI's default is 75.Values: 1–100
ImageWidthintegerDraw each page at this width in pixels instead of a DPI.Values: 1–20000
ImageHeightintegerDraw each page at this height, or fit it within ImageWidth × ImageHeight.Values: 1–20000
ColorSpaceenum, default defaultgray gives one-channel JPEGs: 28,099 bytes at 150 DPI with quality 60. cmyk returns 400.Values: default, rgb, gray, grayscale, monochrome
PageRangestringPages to convert; a page past the last returns 400.Values: e.g. 1, 2-3, 2-last
FileNamestringStem for the numbered JPEGs, single-shape by default.
StoreFileboolean, default falseReturn 3-hour links to the JPEGs instead of their data.

Not supported yet

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

OptionWhat to do instead
PageSizeNot supported yet for VSD files (400); each page keeps the drawing's size.

Also refused when set: PageOrientation.

What carries over, and what doesn't

Kept

  • The drawing's page size, drawn at the DPI you choose: A4 at 100 DPI is 826 × 1169
  • A DPI value in the JPEG when ImageResolution is sent (100 in the sample)
  • Shape outlines and text drawn crisply at the target size
  • Color detail with no chroma subsampling

Lost or not yet supported

  • JPEG has no transparency; pages are on white.
  • Labels become pixels and can't be searched.
  • Text is drawn in the fonts the server has: Liberation Sans for the sample's label.
  • Thin outlines and small text pick up some JPEG noise; PNG keeps them exact.

Limits

  • Binary VSD files; tested with the Visio 2003–2010 format.
  • At most 2,000 pages per request; larger pages than 16,000 pixels on a side or 100 million pixels return 413.
  • ImageQuality must be 1–100 and ImageResolution 36–600.
  • 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

Pictures of old diagrams in tickets and emails

Help desks still receive .vsd attachments. Turn them into JPEGs on arrival so agents and customers can look at them in the ticket itself.

Feeding legacy drawings to image-only systems

Content systems that accept JPEG but not Visio files can take each page as an image, with the DPI set to match the rest of the collection.

Questions

Why does a lower `ImageQuality` hardly change the size?

A diagram page is mostly flat white, which JPEG stores in very few bytes at any quality. The resolution matters far more: the sample page is 63,160 bytes at 150 DPI and 28,964 at 100 DPI.

Is the DPI in the file the same as the drawing scale?

No. It only tells other programs how large to print the image; at 100 DPI the sample prints at A4 size. The drawing's own scale isn't involved.

Can I get a single image of a multi-page drawing?

Each page is a separate JPEG. Send PageRange=1 for just the first page.

Convert your first VSD file in a minute.