Why "no quality loss" is literally true here
JPEG is lossy by design: its DCT quantization step throws away detail on every single encode (that's specified in ITU-T T.81, the JPEG standard itself). Open a JPEG, edit it, and save it as a JPEG again, and you don't get your original detail back — you get a second generation of loss stacked on the first. Many "convert JPG to PDF" tools do exactly that without telling you: they decode your image and re-encode it into the PDF, quietly applying that extra round of compression.
PDF doesn't require that step. The format's image XObjects (defined in ISO 32000) can carry a JPEG's already-compressed data unchanged — no decode, no re-encode. This tool embeds your JPG byte-for-byte. The PDF page shows exactly the file you selected, and the resulting PDF is barely larger than the images themselves, because nothing was recompressed into it.
What happens to PNG, WebP, GIF and BMP
PNG embeds directly and losslessly too — PDF supports PNG-style compression natively, so a PNG goes in unchanged, same as a JPEG.
WebP, GIF and BMP aren't PDF-native formats, so they take a different path: the browser decodes the image, and the tool re-encodes those decoded pixels as PNG before embedding. PNG compression is lossless, so the pixels that land in your PDF are identical to the pixels in your original file — for an animated GIF, that means the first frame.
One honest nuance: lossless doesn't always mean small. A photographic WebP re-encoded as PNG can end up noticeably larger, because PNG simply doesn't compress photos as efficiently as a lossy format does. You're trading file size for a guarantee that nothing was thrown away.
Page size follows the image
Each image becomes its own page, sized exactly to the image's pixel dimensions — nothing is cropped, padded to a standard paper size, or resampled. One image pixel maps to one PDF unit. The order of the pages is yours to set: use the file list's arrows to move images up or down before you convert.
No upload, verifiable
Same model as the other PDF tools on this site: the browser's File API reads your images locally, pdf-lib assembles the PDF inside the tab's memory, and the result goes straight to your downloads folder. No server ever receives your photos. Verify it yourself — open your browser's network inspector while converting and you'll see no upload, or switch your connection off entirely and convert anyway. It still works, because the operation never needed the internet.
The honest limitations
HEIC — the default format on recent iPhones — isn't supported yet, because browsers can't decode it natively; set your camera to "Most Compatible" so it saves JPGs, or convert the file first. Animated GIFs contribute only their first frame. There are no compression options here: this tool preserves what you give it, it doesn't optimize it — if you need a smaller PDF from a batch of huge photos, shrink the images first. And because everything runs in your device's memory, that memory is the practical ceiling on how large a batch you can convert at once.