Skip to converter

JPG to PDF converter

Converting a JPG to PDF should not cost you any image quality — and this one does not. The JPEG bytes are embedded into the PDF exactly as they are, so there is no second lossy encode. Each JPG becomes its own PDF with one page sized to the photo, produced in your browser tab with no upload.

The image is placed on a single page; page size is capped, so very large photos are scaled down to fit.

Drop files here or JPG, up to 20 MB
    Add a file to start.

    Processed on your device. Files aren’t sent anywhere.

    No sign-up. Nothing to install.

    The JPEG stream is placed in the PDF, not re-encoded

    For JPG input the engine calls pdf-lib's direct JPEG embedding. The compressed JPEG data is copied into the PDF as a DCTDecode image object, which means the pixels a viewer renders are produced by the same encoder run that made your file. Re-encoding a JPEG through a canvas would decode it, rasterise it and compress it again — compounding artefacts you never asked for — and this route deliberately avoids that.

    Because the stream is reused, the PDF is usually close to the JPG's own size plus a thin document wrapper. That makes this route the right one when the photo is already compressed and you only need a PDF container around it.

    • No second JPEG encode, so no additional quality loss
    • One input JPG produces one PDF with exactly one page
    • The page matches the photo's pixel dimensions by default
    • Output keeps your original base name with a .pdf extension

    What is dropped on the way

    A PDF image object carries pixels, not the container. EXIF tags, camera settings, GPS coordinates, thumbnails and colour profiles are not transferred into the PDF. If you need capture metadata preserved, keep the JPG itself; the PDF is a display and print container.

    JPEG also has no alpha channel, so there is no transparency question here: the photo is opaque on the page.

    Page size: Fit or A4

    The default preset, Fit, creates a page whose numbers equal the image's pixel dimensions in points, and the photo fills it edge to edge. A 3000×2000 photo becomes a 3000×2000 pt page. That is faithful to the source but not a printable sheet — a viewer will show a very large page.

    Choose A4 when the PDF is meant to be printed or filed. The page is 595×842 pt, the photo is scaled down to fit inside 24 pt margins and centred, and the aspect ratio is kept. Landscape photos fill the width and leave white bands above and below; portrait photos fill the height. Nothing is stretched or cropped.

    • Fit: page equals image dimensions, image fills the page
    • A4: 595×842 pt page, image scaled inside 24 pt margins
    • Aspect ratio is preserved in both presets
    • Downscaling onto A4 reduces printed detail, not pixel data in the embedded stream

    Reading the printed result

    On A4 a large photo is drawn smaller than its pixel count, so a viewer zoomed to 100% sees fewer effective pixels per inch than the source contains. The embedded JPEG still holds the full resolution; the page just displays it at a smaller size. If you need the photo at its native scale, use Fit.

    Inputs the engine refuses

    The engine rejects an empty file, a file larger than 20 MB, and an image above about 40 megapixels. If pdf-lib cannot parse the JPEG stream, the engine falls back to decoding the photo through a canvas and embedding a lossless PNG, so the PDF still renders — but that fallback re-encodes the pixels rather than copying the stream.

    Very large photos are refused above about 40 megapixels when both the source and the requested output exceed that ceiling, because the browser's decoder and the PDF save both need memory. Animated formats are irrelevant here — JPEG is a single frame.

    • One file per run (the picker converts a single image), each up to 20 MB
    • Empty files and files above 20 MB are rejected
    • A JPEG pdf-lib cannot parse falls back to a canvas recomposition
    • Images above about 40 megapixels are refused

    Where JPG to PDF helps

    Photos arrive as JPG and documents leave as PDF. Wrapping a photo in a PDF keeps its geometry fixed when it is emailed, printed or attached to a report, where a bare JPG can be resized by whatever opens it. The PDF is the stable container; the JPG is the compressed content.

    Common uses: a scanned receipt attached to an expense claim, a photo inserted into a printed specification, a signed document photographed on a phone, and evidence images filed with a fixed page size. For multi-page documents, convert each JPG separately — this route does not merge files.

    • Photographed documents that must print at a fixed size
    • Photos attached to reports, claims and forms
    • Archival copies where the container matters more than the format
    • Batch of up to ten photos, each returning its own PDF

    Local execution and beta status

    The file is read from your disk, embedded by pdf-lib and saved as a Blob entirely inside this browser tab. Nothing is uploaded, and nothing is stored after you close the page. The vendor pdf-lib bundle is loaded from this site's own assets only when a PDF conversion is requested, and aborting a batch stops the run cleanly.

    This route is beta. It is tested against browser-generated JPEG fixtures for the %PDF header, page count, page dimensions and the presence of a DCTDecode image object, but real-world JPEGs vary in structure. Open the first PDF in your own viewer before converting a full batch.

    • Runs entirely in the browser; no server round trip
    • Abort stops the batch without writing partial output
    • Beta status: verified on fixtures, not on every JPEG variant

    Questions

    Is my photo re-compressed during the conversion?
    No. The original JPEG stream is embedded directly as a DCTDecode image object, so no second lossy encode happens and no new artefacts are introduced.
    Does the PDF keep EXIF data or the colour profile?
    No. A PDF image object stores pixels only. Camera metadata, GPS data, thumbnails and colour profiles stay in the original JPG and are not transferred.
    Can I merge several JPGs into one PDF?
    Not here. Each JPG produces its own single-page PDF. Multi-file merging is not implemented, so ten photos become ten PDF files.
    What happens if my JPEG cannot be embedded directly?
    If pdf-lib cannot parse the stream, the engine decodes the photo in the browser and embeds a lossless PNG instead. The PDF still shows the photo, but the pixels are re-encoded rather than copied.
    Are my photos uploaded to a server?
    No. Reading, embedding and saving all happen in your browser tab; the PDF exists only in memory until you download it.

    Share this converter

    More sharing options