Convert multiple images into a single PDF document. Drag and drop to reorder pages, customize page size, orientation, and margins.
Turn a collection of images into a single PDF document. Whether you are digitizing a photo album, combining scanned pages, or packaging screenshots for a report, this tool arranges your images into a clean, paginated PDF.
Initializing in your browser…
You photographed six receipts and need them as a single PDF for an expense claim.
Input
6 JPGs · A4 pages · fit with margin · 1 image/page
Output
receipts.pdf, 6 pages, consistent size and orientation
Each image is placed on a uniform page with sensible scaling so the result looks like a real document, not mismatched photos. It is the standard fix for turning phone snaps into one submittable file, done locally.
Turn a collection of images into a single PDF document. Whether you are digitizing a photo album, combining scanned pages, or packaging screenshots for a report, this tool arranges your images into a clean, paginated PDF.
Combine phone camera scans of paper documents into a proper PDF file.
Package a set of images into a PDF for easy sharing with clients or collaborators.
Assemble a series of screenshots into a single document for bug reports or tutorials.
Images to PDF assembles your selected images into a single multi-page document entirely in the browser using the pdf-lib library (PDFDocument.create). Each image becomes one page, and pages are emitted in the exact order shown in the thumbnail grid, which you reorder by dragging tiles (the numbered blue badge on each thumbnail is its page number). How an image is embedded depends on its MIME type: image/png files go through embedPng and image/jpeg (or image/jpg) files through embedJpg, so a JPEG photo keeps its original compressed bytes untouched and does not get re-encoded or bloated. Any other format (BMP, WebP, GIF, etc.) is first drawn onto an HTML canvas and re-exported as PNG (canvas.toDataURL('image/png')) before embedding, which is lossless but can make a photographic source noticeably larger than the JPEG path would.
The Settings panel exposes four controls: Page Size, Orientation, Image Fit, and Margin. Page Size offers fixed presets with exact PDF-point dimensions stored in the PAGE_SIZES table - A4 (595.28 x 841.89), Letter (612 x 792), Legal (612 x 1008), A3 (841.89 x 1190.55), and A5 (419.53 x 595.28) - plus a 'Fit to Image' option that sizes each page to the image's own pixel dimensions plus the margin on every side (pageWidth = imgWidth + margin*2). Because pdf-lib treats one pixel as one point (72 per inch), Fit-to-Image turns a 3000x2000px phone photo into roughly a 42x28-inch page, so the fixed presets are the right choice for anything you intend to print or email. Orientation 'auto' picks landscape whenever the image is wider than it is tall (imgWidth > imgHeight) and portrait otherwise, while 'portrait' and 'landscape' force the choice for the whole document. Margin (the field is labeled 'px' but the value is applied directly as PDF points, default 20, capped at 100, min 0) reserves a uniform border, and the image is then centered in the remaining area.
Image Fit controls how each picture is scaled into its page: 'contain' (the default) scales by Math.min of the width/height ratios so the whole image fits with letterboxing on mismatched aspect ratios; 'cover' scales by Math.max of the two ratios to fill the page, cropping the overflow; and 'stretch' forces drawWidth/drawHeight to the available width and height, distorting the aspect ratio. One real caveat is worth knowing about the per-thumbnail rotate button (90-degree steps): for the canvas/re-encode path it bakes the rotation into the bitmap via ctx.rotate (though the canvas keeps the original un-swapped dimensions, so a 90/270-degree rotation gets clipped), whereas for native PNG and JPEG it only swaps imgWidth and imgHeight in the page-sizing and fit math - the image is passed to page.drawImage with no rotation argument, so a rotated JPEG or PNG changes the page's proportions but the embedded picture is drawn unrotated. The tool is a layout-and-assembly utility, not a scanner: there is no deskew, auto-crop, or OCR, and because every image's bytes and decoded bitmap are held in memory while building the document, very high-resolution stacks are bounded by the browser tab's RAM.
JPEG, PNG, WebP, and BMP files can be used. Transparency in PNG images is preserved.
In auto-fit mode, each page matches the dimensions of its image. In fixed mode, all pages share the same size.
There is no hard limit, but very large batches may take longer to process depending on your browser.
PDF parsing and editing happen in your browser. Documents, and everything inside them, are never uploaded or stored remotely.