OffTility

Image to PDF

Photos and scans into one tidy PDF. Nothing you choose ever leaves this tab.

Drop images here

JPG, PNG, WebP, or HEIC. Add as many as you like — they stay on this device.

Your file stays on this device. Nothing is sent anywhere.

What this tool does

Image to PDF turns a batch of photos or scans into one PDF, with each image on its own page, in whatever order you choose. It reads JPG, PNG, WebP, and HEIC (the format iPhones save photos in by default), so you don't need to convert anything before you start.

You control the page size (A4, US Letter, or a page sized exactly to each image), the orientation, and the margin around each photo. There's no limit on how many images you add in one go or how large the resulting PDF ends up being.

How to use it

Choose your images, then drag the thumbnails into the order you want them to appear — the first one becomes page one. Pick a page size and margin from the options, or leave the defaults if you're not sure. Selecting "Fit to image" skips margins and page-size math entirely and just wraps each photo at its own dimensions.

Press convert, and the PDF builds in your browser tab. A progress bar tracks each image as it's added; if you change your mind partway through, cancel stops the run immediately. When it's done, download the single combined PDF.

Why nothing leaves your device

Every step — reading each image, decoding HEIC files, and assembling the PDF — runs using code loaded once into your browser tab, not a server. Open your browser's network tab while you convert a batch and you'll see no request carrying your files, because there isn't one to see.

That also means there's no queue to wait behind, no size cap imposed by someone else's server, and nothing kept anywhere once you close the tab or reload the page. Your photos never exist anywhere but your own device.

Quality and fidelity

Each image is reproduced at its full resolution and scaled to fit the page and margin you picked, centered with its aspect ratio preserved — nothing gets stretched or cropped. Choosing "Fit to image" avoids scaling altogether by sizing the page to match the photo exactly.

HEIC files need a bit more of this app's own code to finish loading before the first one can be read — you may see a brief "Loading HEIC support" message the first time. That's this page loading more of itself, the same way clicking to a different page would; none of your photos are involved in that step, and no photo ever gets sent anywhere, before, during, or after it. Once it's loaded, the decoding happens entirely on your device, exactly like every other format.