Turn your photos and screenshots into a single PDF — right in your browser
Drop in your JPGs, PNGs, or other images and get a clean, ready-to-share PDF in seconds. No account, no waiting for an upload, no watermark. Everything runs locally in your browser, so your images never leave your device.
This is handy any time you need to send a photo, a scanned document, or a batch of screenshots as one neat file — for a job application, a school submission, a client report, or just archiving.
How to convert images to PDF
- Add your images — click the upload area or drag and drop. You can add JPG, PNG, WebP, GIF, BMP, or TIFF files.
- Reorder if needed — drag the thumbnails into the order you want them to appear in the PDF.
- Choose your settings (optional) — pick a page size (A4, Letter, etc.), orientation (portrait or landscape), and margin size.
- Click "Convert to PDF" — the tool builds the PDF instantly.
- Download your PDF — click the download button. That's it.
Worked example
Say you photographed three pages of a handwritten form on your phone and need to email them as one document.
- Input:
page1.jpg(2.1 MB),page2.jpg(1.8 MB),page3.jpg(2.0 MB) - Settings: A4, portrait, small margin
- Output:
document.pdf— three pages, ~980 KB, ready to attach to an email
The file size drops because the images are re-encoded at a quality level that looks great on screen and in print but doesn't carry extra camera metadata.
How to do this in code
If you need to automate image-to-PDF conversion in a script or app, here are minimal working examples.
Python (using Pillow)
# pip install Pillow
from PIL import Image
images = [
Image.open('page1.jpg').convert('RGB'),
Image.open('page2.jpg').convert('RGB'),
Image.open('page3.jpg').convert('RGB'),
]
images[0].save(
'document.pdf',
save_all=True,
append_images=images[1:]
)
The .convert('RGB') call is important — PNG files with transparency (RGBA) will error without it.
JavaScript (Node.js, using pdf-lib)
// npm install pdf-lib
const { PDFDocument } = require('pdf-lib');
const fs = require('fs');
async function imagesToPdf(imagePaths, outputPath) {
const pdfDoc = await PDFDocument.create();
for (const imgPath of imagePaths) {
const bytes = fs.readFileSync(imgPath);
const img = imgPath.endsWith('.png')
? await pdfDoc.embedPng(bytes)
: await pdfDoc.embedJpg(bytes);
const page = pdfDoc.addPage([img.width, img.height]);
page.drawImage(img, { x: 0, y: 0, width: img.width, height: img.height });
}
fs.writeFileSync(outputPath, await pdfDoc.save());
}
imagesToPdf(['page1.jpg', 'page2.jpg', 'page3.jpg'], 'document.pdf');
pdf-lib natively supports JPG and PNG. For other formats convert them first (e.g. with sharp).
How it works
The tool uses the PDF specification (standardised by ISO 32000) to wrap each image as its own page object inside a PDF container. The JavaScript library handles the byte-level encoding — creating cross-reference tables, embedding image streams, and writing the file header — all inside your browser tab using the Web APIs available in any modern browser.
No data is sent to a server at any point. The PDF is assembled entirely on your device and the download is triggered locally. This is fundamentally different from most online converters that upload your files to cloud infrastructure before returning the result.
For the authoritative definition of the PDF format, see the ISO 32000-2 standard (PDF 2.0) published by the International Organization for Standardization.
When to use this tool — and when not to
| Situation | Use this tool? | Why |
|---|---|---|
| Combine phone photos into one document | ✅ Yes | Fast, private, no software to install |
| Submit scanned documents to a portal | ✅ Yes | Produces a standard, widely-accepted PDF |
| Send screenshots from a design review | ✅ Yes | Keeps everything in one file, easy to annotate |
| Convert a word-processed report to PDF | ⚠️ Better option | Use "Print to PDF" from Word/Google Docs — text stays selectable and searchable |
| Need OCR (searchable text from a scan) | ❌ Not here | This tool embeds images as-is; use an OCR tool (e.g. Adobe Acrobat or Google Drive's built-in OCR) for searchable output |
| Very high-resolution print production | ⚠️ Check output | Works fine, but professional print often needs specific colour profiles (CMYK) — verify with your printer |
Your privacy
Your images are processed entirely in your browser with JavaScript and are never uploaded to a server. Once you close the tab, nothing remains. Unlike most online PDF tools — which send files to cloud servers to process — this converter keeps everything on your own machine.
No sign-up, no storage, no third-party access to your files.
Tips for a better result
- Image order matters: arrange thumbnails before converting — the PDF page order follows the thumbnail order exactly.
- Consistent orientation: if you mix portrait and landscape images, choose "Fit to image" as your page size so each page matches its image naturally.
- File size: if the resulting PDF is too large to email, try resizing the source images before converting (many phone gallery apps have a built-in resize option).
- PNG vs JPG: PNG files with transparency will have their transparent areas filled with white in the PDF — that's expected PDF behaviour.
Ready to combine your images? Drop your files into the tool above and download your PDF in seconds.