Converter · No upload
JPG to PDF, privately
Drop in JPG photos and download a PDF of each one, with the photo copied across rather than re-encoded. The conversion runs entirely inside your browser — nothing is uploaded, the network meter below proves it live, and it keeps working with your wifi switched off.
One PDF per photo, sized to the photo at a point per pixel — a converter, not a page layout tool. Progressive, 12-bit, CMYK and incomplete JPEGs are re-encoded rather than copied, and the row says which. EXIF metadata is removed; an embedded colour profile is kept. Takes .jpg, .jpeg, .jfif and .jpe.
How this converter works
A PDF can carry a JPEG as-is. The format's /DCTDecode filter is baseline JPEG — not something like it, the same thing — so a photo's compressed data is already a valid PDF image stream. This page uses that: it reads the JPEG's headers for the dimensions and colour layout, then writes the file's own compressed image data into a PDF image object unchanged. Your photo is never decoded, so it cannot be degraded. The metadata segments are the one thing left behind — EXIF, XMP and comments are dropped rather than embedded, because a document you send someone should not quietly carry the coordinates of where the photo was taken. That is worth more here than on a lossless format, because every JPEG re-encode throws away a little detail that no later step can recover, and the usual way to make a PDF from a photo does exactly that.
The best evidence for that is not our instrument but your browser's. Press F12, open the Network tab, leave it visible, and run a conversion. Nothing gets added to the list. That panel is written by the people who make your browser, it records what a page actually does rather than what a page claims, and no code of ours can quiet it. This converter has an especially easy time of it: the work is reading a few header bytes and writing a container around the rest, with no decoder, no library, and no server to ask.
Photographs from a phone need one extra step, and skipping it is the most visible way a converter like this goes wrong: cameras generally store the pixels in a fixed direction and record an orientation tag describing how to display them, so copying the bytes and ignoring the tag gives you a PDF full of sideways photographs. Decoding to straighten them would throw the whole advantage away — a three-megabyte photo becomes tens of megabytes of raw pixels — so this page rotates the page instead of the picture, taking the displayed dimensions for the media box and putting the transform in the content matrix while the photo is still copied byte for byte. All eight orientations are handled, and all eight are verified by rendering the output rather than by reasoning about the arithmetic. The honest limits are the rest of that story: the page is the size of your photo at one point per pixel, so this is a converter and not a layout tool; each file becomes its own one-page PDF, and combining several is a different job; progressive, 12-bit and CMYK JPEGs cannot be carried across directly, and neither can a file that stopped downloading part-way, so those are decoded instead with the row saying so; and very large images are placed on a smaller page rather than a rejected one, because the format caps a page at 200 inches while a panorama is under no such obligation.