Extractor · No upload
Save scanned PDF pages as JPG
Drop a scanned PDF to get each page as a JPG image. A page that is one scanned image comes out as the JPEG the file stores, and every other page is listed with the reason it was skipped.
Refused by name: protected files (this page does not open protected files), and JBIG2, CCITT fax and JPEG 2000 images. Only a page that is one full-page image is saved: a stored JPEG is copied out as stored, others are re-encoded at quality 0.92, and the row says which. A page with text, drawings or annotations is named on its row and is not rendered. A rights notice in the file goes into each image. Takes .pdf.
How this converter works
Your browser reads the PDF with its File API, and the same first-party reader the PDF merger on this site uses walks it in memory and checks every object for an encryption dictionary before a page is read. Each page's drawing instructions are then read without being drawn. A page qualifies when the only thing it shows is one image covering the page to within half a percent: an invisible text layer from a scanner's text recognition paints nothing and is left out, and anything drawn under an opaque image is hidden by it. An image the page shows stretched is saved at its own proportions, and the row says by how much. A JPEG stored in the page is copied out byte for byte up to its end marker, and only header segments change. The orientation the page shows is set in the JPEG's own EXIF block, every other tag kept, or written in a new one when the page turns or mirrors the image, and the row says when an orientation tag the JPEG carried is changed. The colour profile the PDF declares replaces any the JPEG carries, and when the PDF declares none, the JPEG's own is left out; the row says when its own profile is left out or a different one takes its place. The file's rights notice (its dc:rights, xmpRights:UsageTerms and xmpRights:WebStatement fields) is added to the JPEG's own XMP packet, or goes in a packet of its own when the JPEG has none or holds a different notice. Any other segment the stored JPEG carries, camera metadata included, comes out as the PDF stores it. The one exception is an EXIF block this page cannot rewrite to show the page's way up, such as one browsers ignore on a turned page: an orientation tag replaces it, and the row says so. An image stored any other way is decoded from its own samples and re-encoded as JPG at quality 0.92.
To watch the network yourself, open the Network panel in a desktop browser's developer tools and convert a file. On a first visit, you may see the site's pages and code being cached for offline use; those requests do not carry your PDF. The conversion itself runs in this tab and needs no extra library. This route is first-party throughout and works offline from the first page load. Other ways to check, and what each one covers, are on the methodology page.
A page with anything visible besides its one image is skipped with the reason on its row: text, drawings, annotations, a second image, an image clipped, cropped, drawn at an angle or covering part of the page, an image on a layer a viewer can hide, or transparency. Images in CMYK, Lab or spot colours, images with a transparency mask (PDF to PNG keeps those) and 12-bit JPEGs are skipped the same way, and an image stored another way is re-encoded only up to 40 megapixels and 128 MB uncompressed. Files over 128 MB or 20,000 pages are refused, as is a file whose XMP metadata cannot be read (it may hold a rights notice), and attachments inside the PDF are not opened.