Free Image to PDF
Convert images to PDF. Reorder pages, set size and margins.
Drop files here, or click to browse
JPG, PNG, WebP, GIF, BMP, AVIF, HEIC, HEIF · processed on your device
or press Ctrl+V to paste from your clipboard
You can drop multiple files at once
Your files never leave your device. All processing happens locally in your browser.
Common uses
- Convert Photos to PDFTurn your photos into a clean PDF — great for photo albums, portfolios, and sharing multiple images.
- Convert Scanned Images to PDFTurn scanned document images into clean PDFs — restore multi-page documents from individual scans.
- Convert Screenshots to PDFCompile screenshots into a PDF document — perfect for bug reports, tutorials, and documentation.
- Convert Artwork to PDFTurn digital art and illustrations into PDFs — share portfolios, sell prints, and preserve your work.
- Convert Document Images to PDFConvert photos of documents, forms, and paperwork into proper PDF files — sign, send, and archive.
How It Works
Conversion runs entirely in your browser using pdf-lib — a JavaScript library that constructs a real PDF file locally, without uploading your images to any server. PNGs are embedded losslessly; JPEGs are embedded directly from their original bytes (no re-encoding); other formats like WebP are rasterized to JPEG via the Canvas API first.
- 1Images are read locallyEach dropped or selected file is read directly by the browser. The tool filters for JPEG, PNG, and WebP. A small object-URL preview is created for the thumbnail — no data leaves your machine at this stage.
- 2EXIF orientation is resolvedBefore embedding, a hand-written DataView parser scans each JPEG's binary header for the EXIF Orientation tag (0x0112). If the photo was shot sideways and the tag says so, the browser's createImageBitmap API re-bakes the rotation into pixel data so the PDF page appears upright — pdf-lib itself does not read EXIF.
- 3pdf-lib builds the PDF page by pagepdf-lib creates a new PDFDocument in memory. PNGs are passed to embedPng() and kept lossless with transparency intact. JPEGs go to embedJpg() unchanged. WebP and other formats are converted to JPEG via canvas.toBlob() at 0.92 quality first. Each image is scaled to fit the chosen page size (A4, Letter, or fit-to-image) with your margin setting, then centered on its page.
- 4The finished PDF is downloadedpdfDoc.save() serialises the completed PDF structure to a Uint8Array in memory. The browser wraps it in a Blob and triggers a file download — a single-image conversion is named after the original file, multi-image output is named images.pdf.
Your images are processed entirely inside your browser by pdf-lib — they are never uploaded to a server.
Guide
Worked example
Drop one 4032×3024 JPEG from a phone. The page shows "PDF settings" with "Page size" on A4, "Orientation" on "Auto", "File size" on "Original" and "Margin" at 20pt. Press "Generate PDF from 1 image". The photo is wider than tall and Orientation is Auto, so the page is A4 landscape, 841.89 × 595.28 pt, and the photo is scaled to 740 × 555 pt and centred inside the 20 pt margin. A card says "Your PDF is ready" with the size and "1 page", the "File name" box suggests the photo's own name ending in .pdf, and the button reads "Download PDF". A JPEG with no rotation is embedded as it is. Change "File size" to "Balanced" and the picture is shrunk to 1542 × 1157 px, about 150 dpi at that size, and saved as JPEG at 82%. Choose "Fit to image" and the page becomes 842 × 641.5 pt.
Which settings to use, and the limits
- Choose the page size and orientation. "Page size" offers A4 (595.28 × 841.89 pt), Letter (612 × 792 pt) and "Fit to image". With A4 or Letter, "Orientation" is "Auto" (a landscape page for a picture wider than tall), "Portrait" or "Landscape", and each image goes on its own page, scaled to fit inside the margin without cropping. "Fill the page (crop edges)" scales it to cover the area instead and clips the overflow. "Fit to image" makes each page the shape of its image, with the longest side held to 842 pt.
- Use "File size" to shrink the PDF. "Original" embeds JPEG and PNG files as they are; a JPEG that is rotated or carries a rotation tag is re-saved at 92% quality, and WebP, GIF, BMP and AVIF files are always re-saved as JPEG. "Balanced" shrinks pictures to about 150 dpi at the size they print on the page and saves JPEG at 82%. "Small" uses about 100 dpi and 70%. A picture that would shrink by less than 5% is left alone. When a picture is shrunk it becomes JPEG on a white background, so transparent PNGs lose their transparency.
- Expect iPhone photos to become PNG. HEIC and HEIF photos are converted to PNG when you add them, and the page shows "Converting HEIC photos..." or "Converting your iPhone photo…" while it works. On "Original" a PNG is embedded losslessly at full resolution, so a PDF of HEIC photos can be large. Choose "Balanced" or "Small" to turn them into JPEG at a lower resolution.
- Set margins in the unit you think in. "Margin" has unit buttons pt, mm and in. The slider runs 0 to 50 pt in steps of 1, 0 to 20 mm in steps of 1, or 0 to 0.75 in in steps of 0.05, and starts at 20 pt. Switching unit converts the value, so 20 pt becomes 7 mm or 0.3 in. With "Fit to image" the margin is added around each picture.
- Order, rotate and name the pages. Each image is one page, numbered in the list. Drag a row to reorder it, or use "Move up" and "Move down". "Rotate 90°" turns a picture 90° clockwise each press, on top of any rotation stored in the photo. After the PDF is ready, "File name" sets its name (up to 120 characters, with characters such as / \ : * ? " < > | removed and .pdf added). Left blank, one image gives scan.pdf for scan.png, and several give a name like IMG_0001-3-images.pdf.
- Know which files are accepted. JPG, PNG, WebP, GIF, BMP, AVIF and HEIC are accepted. "+ Add more images" adds to the list. A file with the same name and size as one already added is skipped with a note such as "1 duplicate skipped (already added): scan.png", and an unsupported file is skipped with "1 file skipped (not a supported image): map.tif".
Common problems and how to fix them
- It says "Failed to load photo.webp. The file may be corrupted or unsupported."
- The browser could not decode that file, both directly and through the fallback image loader. The run stops at that file and no PDF is made. Remove that image (with its remove button, or "Clear all"), or re-save it as JPG or PNG, and generate again.
- It says "Something went wrong. Please try again."
- This covers any other failure while building the PDF, such as the browser refusing to make a canvas or to encode a picture. That only happens when a picture has to be redrawn: when it is rotated, is not a JPEG or PNG, or when "File size" is not "Original". Try fewer images at once, or leave "File size" on "Original" with unrotated JPEG and PNG files, which are embedded without being redrawn.
- It says "Only image files are accepted (JPG, PNG, WebP, GIF, BMP, AVIF, HEIC)."
- Every file you added was skipped. A file is skipped if it is empty (0 bytes, typical of a OneDrive or iCloud file that was never downloaded), if it is a HEIC that could not be converted, or if its type is outside the list, such as SVG or TIFF. A note names the skipped files. Convert them to JPG or PNG, or download cloud files to the device first.
- The PDF is much larger than you expected, or too big for an upload form.
- "Original" keeps every picture at full resolution: JPEGs untouched, PNGs lossless, and HEIC photos converted to PNG, so a set of big photos makes a big PDF. Set "File size" to "Balanced" (about 150 dpi, JPEG 82%) or "Small" (about 100 dpi, JPEG 70%), then press generate again. The size appears next to the page count when the PDF is ready.
- The photo is cropped at the edges of the page.
- "Fill the page (crop edges)" is ticked. It scales the picture until it covers the area inside the margins and clips whatever sticks out. Untick it to fit the whole picture on the page, or choose "Fit to image" so the page takes the picture's shape.
How it compares
A desktop PDF program, or the print-to-PDF function of a photo app, gives more control: text, annotations, page numbers, a different page size per page and compression profiles. This tool does one job. It puts one image on each page, in the order you set, with a page size, margin, rotation and a file-size preset, and saves one PDF. It does not add text or run OCR, and it cannot place two images on one page. The same page size and margin apply to every page, except with "Fit to image", where each page follows its picture. In exchange there is nothing to install, and nothing is uploaded: the PDF is built in your browser.
Related Tools
PDF Image Extractor — Save Pictures from a PDF
Extract the images inside a PDF at their full resolution as PNG or JPG: photos, scans, charts and logos, each once. Download them one by one or as a ZIP. Runs in your browser; the PDF is not uploaded.
Image Merger — Combine Images into One
Merge photos or screenshots into one image: top to bottom, side by side or in a grid, without cropping. Match widths, add spacing, a border and a background, then save as JPG, PNG or WebP. Runs in your browser; nothing is uploaded.
PDF to Image (JPG, PNG, WebP)
Convert every page of a PDF into JPG, PNG, or WebP images at your chosen resolution. Download pages individually or all at once as a ZIP. Files never leave your browser.