PDF to JPG API â Free Tier + Pay-As-You-Go
Render PDF pages to JPG images programmatically. Per-page DPI, page-range selection, batch ZIP output, ImageMagick + pdftoppm pipeline.
What it does
The PDF to JPG API rasterises PDF pages into JPG images at configurable DPI, page range, and color space. Each page renders independently via the pdftoppm pipeline (with Ghostscript fallback for password-protected or feature-rich PDFs) and emits a JPEG file per page named `page-001.jpg`, `page-002.jpg`, etc. Multi-page jobs return a single ZIP containing all rendered images plus a `manifest.json` mapping page numbers to file names and rendering parameters.
Per-job parameters include DPI (72-600), page range (`pages=1-5,10,15-20`), color space (sRGB, Adobe RGB, grayscale), JPEG quality (1-100), progressive encoding, and downscaling for thumbnail generation. The API auto-detects vector vs raster content and applies the right rendering strategy â vector pages render at the requested DPI with no quality loss, while embedded raster images downsample with libvips's lanczos filter for clean low-resolution thumbnails. Password-protected PDFs decrypt via the `password=` parameter; encrypted documents that lack a password fail with `PDF_ENCRYPTED`.
Supported formats
Source formats (1)
Target formats (2)
- jpg
- jpeg
Quick start
All three SDK languages show the same conversion: a single POST to /v1/convert with your API key in the X-Api-Key header.
curl -X POST https://api.convertintomp4.com/v1/convert \
-H "X-Api-Key: ck_your_api_key" \
-F "file=@input.pdf" \
-F "target=jpg"
-F "dpi=300" \
-F "pages=1-5"import { ConvertIntoMP4 } from "@convertintomp4/sdk";
import fs from "node:fs";
const client = new ConvertIntoMP4({ apiKey: process.env.CIM4_API_KEY });
const job = await client.convert({
file: fs.createReadStream("input.pdf"),
target: "jpg",
});
const result = await client.waitForJob(job.id);
console.log("Output URL:", result.outputUrl);from convertintomp4 import Client
client = Client(api_key="ck_your_api_key")
with open("input.pdf", "rb") as f:
job = client.convert(file=f, target="jpg")
result = client.wait_for_job(job.id)
print("Output URL:", result.output_url)Features
- Configurable DPI (72-600)
- Page-range selection: `1-5,10,15-20`
- Multi-page ZIP output with manifest
- sRGB / Adobe RGB / grayscale color space
- Progressive JPEG output for streaming display
- Password-protected PDF support
- Auto-detect vector vs raster pipeline
Pricing
From $9.99/mo (Pro) or $24.99/mo (Business) â or pay-as-you-go on the API plan.
Free tier: 5 conversions/day, 100 MB file size, no API key required (IP-gated). Pro $9.99/mo: 100/day (2,000/month), 2 GB files. Business $24.99/mo: 1,000/day (20,000/month), 10 GB files, GPU encoding, dedicated support.
See full pricing breakdown âBuilt for production
99.9% uptime SLA
Multi-region failover, transparent status page, 60-second response-time guarantee on Business.
Encryption + auto-delete
TLS 1.2+ in transit, AES-256 at rest. Files deleted after 1h / 24h / 7d depending on plan, or instantly via DELETE endpoint. See the security page.
~7s median latency
Most sub-100 MB jobs complete in 6-9 seconds. Webhook-driven async for heavier workloads; waitForJob for synchronous flows.
Frequently Asked Questions
What DPI should I pick for PDF to JPG?
150 DPI for screen display; 300 DPI for print; 72 DPI for thumbnail / OG image generation. Higher DPI multiplies file size quadratically â a 300 DPI page is 4Ã the bytes of a 150 DPI page. Cap at 600 DPI; anything higher is wasted on consumer monitors.
How do I render only a few pages from a 200-page PDF?
Pass `pages=1-5,42,100-105`. Only those pages render â significantly faster than full-document rasterisation. Single-page jobs return a JPEG; multi-page jobs return a ZIP.
Are password-protected PDFs supported?
Yes. Pass `password=<secret>` and the API decrypts before rasterisation. Both user and owner passwords work. Encrypted PDFs without a supplied password fail with `PDF_ENCRYPTED` rather than silently producing blank pages.
What's the difference between pdftoppm and Ghostscript rendering?
pdftoppm is faster and produces crisper text for most consumer PDFs. Ghostscript handles complex prepress PDFs (PDF/X, color-managed, with weird font subsets) more reliably. The API auto-selects but you can force `engine=ghostscript` if pdftoppm produces unexpected output.
Can I extract images embedded in a PDF instead of rasterising pages?
That's a separate endpoint â `POST /v1/pdf/extract-images`. The PDF to JPG API rasterises full pages; image extraction returns each embedded raster image in its original format and DPI.
Related APIs
- MP4 to MP3 APIExtract MP3 audio from MP4 video programmatically. Per-job bitrate and sample rate, ID3 tag injection, fast remux mode.
- JPG to PNG APIConvert JPG to PNG with optional transparency, lossless compression, and EXIF preservation via API. Sharp-backed.
- MP4 to GIF APIConvert MP4 video to animated GIF programmatically. Per-job width, fps, palette mode, and start/end trim controls.
- PDF to DOCX APIConvert PDF to editable Word DOCX via API. Preserves layout, fonts, tables, and images. pdf2docx + OCR fallback.
- DOCX to PDF APIConvert Word DOCX to PDF programmatically. LibreOffice-rendered with font fallback, headers/footers, and PDF/A archival output.
- HEIC to JPG APIConvert iPhone HEIC and HEIF photos to JPG via API. EXIF rotation, ICC profile, Live Photo frame selection.
Or browse the full catalogue of 23 API products â
Get an API key
Start integrating the PDF to JPG API in five minutes. Read the docs, grab a key, and ship your first conversion before the trial coffee cools.