PDF to Image

Share:

Convert PDF pages to JPG or PNG images in your browser. Choose pages, DPI, and format.

RT-IMG-007 · Image & File
Your browser is too old for this tool’s interactive features. Please update to Safari 13.1, Chrome or Edge 80, Firefox 74 or newer.

PDF to Image

Ready — drop a PDF to begin.
📅 Research current as of 13 Sep 2026 · Sources: ISO 32000-2:2020 (PDF 2.0), pdf.js 4.10.38, WHATWG HTML canvas
Standards, published formulas, and reference data are revised over time — check against a current authoritative source before relying on these figures.
🔒 PDFs stay on your device. Pages are rendered by pdf.js 4.10.38, served from this domain, and exported by your browser's own canvas encoder. Nothing is uploaded — verify in DevTools → Network.
Advertisement
After results · AD-W1 Responsive · Post-tool — peak engagement

How to convert PDF pages to images

Drop your PDF

Drag a PDF onto the dropzone or click to choose one. The file loads into pdf.js — Mozilla's open-source PDF renderer — entirely in your browser. The status line shows total pages and file size once loaded.

Pick page range and format

Leave the Pages field blank to render every page, or type a range like 1-5 or 1,3,7-9. JPG is the universal default. PNG is lossless, so text edges stay exact (bigger files); it is not transparent here, because pdf.js paints the canvas white before drawing. WebP is the modern small-file alternative.

Set DPI

72 DPI matches what's displayed on screen (smallest files). 150 DPI is sharp for thumbnails and previews. 300 DPI matches print quality (largest files — use sparingly for many-page conversions). Higher DPI = larger image dimensions and more memory.

Convert and download

Click Convert pages. Each rendered page appears as a thumbnail with a per-file Download button, or use Download all to save everything at once. Files are named filename-page-NNN.jpg (.png for PNG output) so they sort correctly. Download all issues one download per page, so your browser may ask once for permission to save multiple files.

Advertisement
After how-to · AD-W2 Responsive

PDF to image — when raster beats vector

A PDF is fundamentally a vector document: text and graphics are described mathematically, not as pixel grids. That's why PDF is great for printing (scales to any size without losing quality) and good for screen reading (fonts stay crisp at any zoom). But sometimes you need a PDF page as a flat image — for embedding in a slide deck, posting on social media, attaching to a CMS that doesn't accept PDFs, or saving a snapshot that's hard to edit. This conversion is technically called "rasterising" — turning vector instructions into a fixed pixel grid. Once a page is rasterised, the embedded text is no longer selectable and the file size depends entirely on dimensions and compression, not the original document complexity.

What actually does the rendering

This page uses pdf.js 4.10.38, Mozilla's PDF renderer — the same engine that displays PDFs inside Firefox. It is served from this domain as two files, a 353 KB main module and a 1.34 MB worker, and both are byte-identical copies of the published npm package. The page asks pdf.js for a page, asks for a viewport at scale = DPI ÷ 72 — 72 because a PDF's default user-space unit is 1/72 inch (ISO 32000-2, 8.3.2.3) — draws that viewport onto an HTML <canvas>, and then calls the canvas's own toBlob() to encode a JPG, PNG or WebP. The encoder is your browser's, not ours.

Chrome, Edge and Safari do not use pdf.js: Chromium ships PDFium, which Google derived from Foxit's engine, and Safari uses Apple's PDFKit. They are separate implementations of the same published format, which is why the same PDF can look subtly different in three viewers. Nothing about this pipeline touches a RECATOOLS server — the file is read with File.arrayBuffer() and never leaves the tab.

At 300 DPI, a single A4 PDF page renders to roughly 2480×3508 pixels — about 8.7 megapixels per page. A 50-page PDF at 300 DPI generates 435 megapixels of canvas — roughly 1.7 GB of pixel data if every page is held at once, which is why phones give up first.

DPI is the setting that decides everything else

DPI ("dots per inch") controls how detailed the rasterised image is. Desktop screens sit around 100–160 ppi; current phone screens are 320–460 ppi; print is 300–600 dpi. For most web uses (CMS embeds, social posts, slide decks), 150 DPI is plenty — the resulting image is sharp on retina screens at the document's intended display size and stays reasonable in file size. Bump to 300 DPI only if you'll print the output or need detail (small text legibility, fine-grained diagrams). Going above 300 DPI is rarely worth the file-size cost unless the document is meant to be enlarged.

JPG vs PNG vs WebP for PDF pages

JPG works for almost everything but introduces lossy compression artefacts around sharp text and lines — usually invisible at 85%+ quality. PNG preserves every pixel exactly (no artefacts) but files are several times larger; use it for documents with lots of fine text or diagrams where legibility matters. Note that PNG output here is opaque, not transparent: pdf.js fills the canvas white before it draws, so there is no alpha channel to preserve. For WebP, Google's own comparison study reports files 25–34% smaller than JPEG at equivalent SSIM — worth taking where you control the software that will open the file.

What this tool doesn't do

It doesn't OCR — if your PDF is a scan, the output is still a picture, not editable text. It doesn't preserve layers, tagging or text: rasterising flattens everything, and that is usually the point. It doesn't open encrypted PDFs — this page never prompts for a password, so a protected file fails at load and has to be decrypted first in your own PDF reader. It doesn't crop, rotate, or composite pages onto one image. For those, render the pages here and then process the images in our Image Format Converter or Watermark Maker.

Why the scale is DPI ÷ 72, and what a rasterised page stops being

01

A PDF's default user space unit is 1/72 inch (ISO 32000-2, 8.3.2.3), so pdf.js at scale = 1 gives you exactly 72 pixels per inch. Every DPI option on this page is just DPI ÷ 72 handed to getViewport().

02

That 1/72 inch is the typographic point, which is also why PDF page sizes are quoted in points: US Letter is 612 × 792, A4 is 595 × 842.

03

An A4 page at 300 DPI renders to 2480 × 3508 pixels — about 8.7 megapixels. A 50-page document is 435 megapixels of canvas, which is what makes high-DPI batches fail on phones.

04

Chrome does not use pdf.js. Chromium ships PDFium, which Google derived from Foxit's engine and open-sourced in 2014; Safari uses Apple's PDFKit. Three implementations, one published format.

05

PDF/A (ISO 19005) requires every font to be embedded, so an archived file still renders when the original typeface is long gone. Rasterising a page achieves the same permanence by giving up the text entirely.

06

A single PDF page can mix vector and raster content — glyph outlines and line art are vector, photographs are embedded image XObjects (ISO 32000-2, 8.9). Conversion flattens both into one pixel grid.

07

pdf.js paints the canvas white before it draws anything, so PNG output from this tool has no transparency even though PNG supports it. If you need an alpha channel, you need a different pipeline, not a different format.

08

If your browser cannot encode the format you asked for, the HTML canvas specification tells it to fall back to PNG rather than fail — so a WebP request in an older Safari quietly returns a PNG.

09

Text in a PDF is positioned in a coordinate space, not on a pixel grid, so glyph edges land between pixels. That sub-pixel placement is why rendered text is anti-aliased slightly differently by every viewer.

10

Rasterising is a one-way door: the output carries no fonts, no tags, no reading order and no selectable text, so it is unusable to a screen reader. Keep the PDF if anyone needs to read it assistively.

FAQ

  • No. Your PDF is read with File.arrayBuffer(), rendered by pdf.js in this tab, and encoded by the browser's own canvas encoder. Verify it yourself in DevTools → Network: loading the page fetches the pdf.js module and its worker from this domain, and after that, converting a file produces no network request at all.

  • 72 for thumbnails. 150 for web (default). 300 for print or sharp on-screen detail. Above 300 only for very small text on documents you'll enlarge. Higher DPI = bigger files and more browser memory — slow on phones.

  • No. pdf.js can accept a password, but this page never prompts for one, so an encrypted file stops at the load step and the status line shows the error. Open it in your own PDF reader, save an unprotected copy, and convert that.

  • No limit is coded in — the constraint is your browser's memory, and it scales with pixels, not pages. Each page is one canvas of width × height × 4 bytes: A4 at 300 DPI is 8.7 megapixels, about 35 MB of canvas, and every rendered page is also held as a blob until you leave the page. Mobile browsers cap total canvas area far lower than desktop ones. If a run stalls, convert a smaller range or drop the DPI.

  • No — rasterised text is just pixels. If you need selectable text in the output, you need OCR (optical character recognition), which this tool doesn't include. For OCR, look at Tesseract.js or Adobe Acrobat.

  • Same as printing: 1 single page, 1-5 range, 1,3,5 list, 1-3,8,10-12 mix. Blank field or "all" = every page.

  • PNG is lossless — every pixel preserved exactly, no quality knob to turn. Quality only matters for lossy formats (JPG, WebP). PNG file size depends on image complexity and dimensions, not a slider.

  • Google's published WebP study measured WebP files 25–34% smaller than JPEG at the same SSIM score, so for the same apparent quality you carry fewer bytes. Use WebP where you control the software that opens the file; use JPG where you don't. If your browser cannot encode WebP, the canvas specification makes it return a PNG instead — this page names the downloaded file after the format you actually got.

  • Yes — tap the dropzone to pick a file rather than dragging. Keep the DPI at 100–150 on a phone: mobile browsers allocate much less canvas memory than desktop ones, and a long document at 300 DPI is the reliable way to lose the tab.

  • Not in this version — one PDF at a time. For multi-PDF workflows, merge the PDFs first using our PDF Merger, then convert the merged result here.

Method & sources

How it computes

Rasterises each selected PDF page with pdf.js 4.10.38 in the browser: the page is measured with getViewport({scale: DPI / 72}) — 72 because a PDF's default user-space unit is 1/72 inch (ISO 32000-2 8.3.2.3) — drawn onto an HTML canvas of that pixel size, and encoded by the browser's own canvas.toBlob() as JPEG, PNG or WebP at the chosen quality. The library is served from this domain and the file is read with File.arrayBuffer(); no page or image is uploaded.

What this tool implements

  • Scale is derived, not tabulated: every DPI option is DPI / 72 applied to the page's own CropBox-derived viewport, so A4 at 300 DPI comes out 2480 x 3508 px and an unusual page size scales correctly instead of being forced to a preset.
  • Encoding is delegated to the browser (WHATWG HTML, the canvas element, toBlob). Quality applies to the lossy formats only; PNG ignores it. Where the browser cannot encode the requested type the specification requires a fallback to PNG, and the downloaded file is named for the type actually produced.
  • PNG output is opaque, not transparent: pdf.js fills the canvas with #ffffff before drawing, so there is no alpha channel to preserve. The page says so rather than repeating the generic 'PNG keeps transparency' claim.
  • Page-range syntax follows print convention — 1, 1-5, 1,3,5 and mixtures — with out-of-range and duplicate entries discarded rather than erroring.
  • Encrypted input is not supported: the document is opened with no password parameter, so a protected file fails at load and the status line reports it; the page tells the reader to decrypt first.
  • Rasterising is declared one-way on the page: the output carries no fonts, no tagging, no reading order and no selectable text, so it is not accessible to a screen reader and OCR is out of scope.

Sources

What can make this go out of date

  • none at runtime — pdf.js 4.10.38 is a vendored copy served from this domain, and the image encoder is the visitor's own browser.
  • Browser canvas encoder support: WebP encoding is present in current Chrome, Firefox and Safari but absent in older Safari, where the canvas specification's PNG fallback applies.
Advertisement
Pre-footer · AD-W3 728 × 90