Skip to content
pdfconversionapi

PPTX to PNG API

POST /v2/convert/pptx/to/png draws the visible slides of a deck and returns each as a lossless PNG. Our sample sends PageRange=2-4 and ImageWidth=1280, so slides 2, 3 and 4 come back at 1,280 × 720 as calloway-ferry-winter-2.png to -4.png.

Endpoint
POST /v2/convert/pptx/to/png
Accepts
pptx
Sample timing
0.282 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/pptx/to/png \
  -H "Authorization: Bearer $PDFCONVERSIONAPI_KEY" \
  -F File=@calloway-ferry-winter.pptx \
  --form-string PageRange=2-4 \
  --form-string ImageWidth=1280 \
  -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.282 s median3 files, 311 KB
{
  "ConversionCost": 1,
  "ConversionTime": 0.282,
  "Files": [
    {
      "FileName": "calloway-ferry-winter-2.png",
      "FileExt": "png",
      "FileSize": 141382,
      "FileData": "iVBORw0KGgoAAAANSUhEUgAA…"
    },
    {
      "FileName": "calloway-ferry-winter-3.png",
      "FileExt": "png",
      "FileSize": 117589,
      "FileData": "iVBORw0KGgoAAAANSUhEUgAA…"
    },
    {
      "FileName": "calloway-ferry-winter-4.png",
      "FileExt": "png",
      "FileSize": 59910,
      "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 calloway-ferry-winter-2.png, rendered by the API
Input
calloway-ferry-winter.pptx (46 KB)
Output
calloway-ferry-winter-2.png (138 KB)calloway-ferry-winter-3.png (115 KB)calloway-ferry-winter-4.png (59 KB)
Source
A six-slide winter timetable deck for a fictional ferry operator, made by us for this site; slide 5 is hidden and slide 2 has speaker notes. (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
PageRangestringWhich visible slides to draw. File names keep each slide's position, so 2-4 returns -2, -3 and -4. A start past the last visible slide returns 400.Values: e.g. 2-4, 1,3, 2-last
ImageWidthintegerExact width in pixels; the height follows the slide's exact 16:9 shape. The sample's 1,280 gives 1,280 × 720, and adding ImageResolution=96 changes only the DPI stored in the file.Values: 1–20000
ImageHeightintegerExact height in pixels. ImageHeight=360 gave 640 × 360. With ImageWidth=800 as well, the slide fits in the 800 × 800 box at 800 × 450.Values: 1–20000
ScaleProportionsboolean, default truefalse stretches each slide to the full ImageWidth × ImageHeight: 800 × 800 in our test, with the text stretched upward.
ScaleIfLargerboolean, default falsetrue only ever shrinks. ImageWidth=3000 then leaves the slides at the 1,500 × 843 they have at 150 DPI.
ScaleImageboolean, default truefalse cuts the requested size out of the top-left corner of the slide drawn at ImageResolution, with no scaling.
ImageResolutioninteger, default 150Pixels per inch when no width or height is sent: 1,500 × 843 per slide at 150, 960 × 540 at 96. A value you send is stored in the PNG's pHYs chunk; at the default the PNG carries no DPI.Values: 36–600
TransparentColorstringPixels of exactly this color become transparent. At 150 DPI, white cleared 94.8% of slide 2; #1B3A5C cleared the navy background of slide 1.Values: A color name, #RRGGBB or R,G,B
ColorSpaceenum, default defaultgray writes an 8-bit grayscale PNG (slide 2 at 150 DPI: 66,690 bytes instead of 174,928); monochrome keeps only black and white pixels (20,977 bytes); rgb returns the same RGB file as the default.Values: default, rgb, gray, monochrome
ConvertHiddenSlidesboolean, default falseInclude slides marked hidden in PowerPoint, in their place in the deck.
PasswordstringNeeded for an encrypted deck. The sample locked with Tide-Table-2026 gave the same 93,308-byte first slide with that password.

What carries over, and what doesn't

Kept

  • Each pixel as drawn: PNG is lossless, so table borders and small text have no compression noise
  • The deck's slide size: images keep the 16:9 shape of the 10 × 5.625 in slides (1,500 × 843 at 150 DPI, exactly 1,280 × 720 at the sample's width), unless ScaleProportions=false or ScaleImage=false sets another
  • Slide position in the file name, also when PageRange picks a few
  • Table fills, the rounded callout with its soft shadow, the drawn map and the bar chart

Lost or not yet supported

  • File size. At 150 DPI the five slides total 592,911 bytes as PNG, against 448,288 as JPEG and 302,946 as WebP.
  • Real transparency in the slide itself. The PNGs are RGB with no alpha channel. TransparentColor adds one, but it leaves anti-aliased text edges in their light color.
  • Speaker notes and any slide marked hidden, unless ConvertHiddenSlides=true.
  • Detail above 200 pixels per inch. The whole slide, text too, is first drawn as a 200 pixels-per-inch picture, so above ImageResolution=200 it is only enlarged: at 400 DPI, every pixel of each slide was the 200 DPI image doubled.

Limits

  • Requests up to 10 MB on the Free plan or 100 MB on paid plans; 120 seconds per conversion, then 504.
  • No more than 2,000 slides drawn per request.
  • 16,000 pixels per side and 100 million pixels per slide image.

Where teams use it

Slides as figures in documentation

Export the chart or table slide at the exact width of your docs column with PageRange and ImageWidth. PNG keeps the 16-point table text and thin chart lines without blur.

Overlaying a slide on video or another design

Send TransparentColor with the slide's background color to cut it out. It works on flat backgrounds; gradients and photos keep their pixels.

Checking that a generated deck looks right

If your code writes .pptx files, render them to PNG in your test suite and compare the images with stored ones. Lossless pixels mean a changed pixel is a real change.

Questions

Can I get a slide with a transparent background?

For flat backgrounds, yes: send the background color as TransparentColor. On slide 2 of the sample drawn at 150 DPI, TransparentColor=white made 94.8% of the pixels transparent. Text edges are blended with white when the slide is drawn, so they keep a light fringe on dark backdrops.

Why are the PNG files so much larger than JPEG?

PNG stores every pixel exactly. For the sample at 150 DPI that is 592,911 bytes for five slides; JPEG at quality 85 was 448,288 bytes and lossless WebP 302,946. If you want lossless and smaller, use /v2/convert/pptx/to/webp.

How do I get one slide only?

Send PageRange with its number, such as PageRange=3. Numbers count visible slides only; with the sample's hidden fifth slide skipped, PageRange=5 is the last slide of the deck.

Does the PNG record a DPI?

Only when you send ImageResolution. With ImageResolution=96 the PNG says 96 DPI in its pHYs chunk; left out, the file stores no physical size at all, and each program falls back on its own default.

Convert your first PPTX file in a minute.