Converter · No upload

HEIC to PDF, privately

Drop in iPhone photos and download a PDF of each one — a burst becomes one document with a page per image. The conversion runs entirely inside your browser: nothing is uploaded, the network meter below proves it live, and once the decoder has downloaded it keeps working with your wifi switched off.

Statusidle Files OutputPDF Network since file read

One PDF per file, one page per image inside it, sized to the image at a point per pixel — a converter, not a page layout tool, and it does not combine separate files. An image over 14,400 pixels on a side is placed on a 200-inch page at a smaller scale, and the row says so. The picture is decoded and written as pixels: ten-bit and HDR captures are reduced to 8-bit colour, an embedded colour profile is carried, an image sequence (an animated HEIF) keeps its first frame only and the row says so, and nothing else leaves the decoder — no EXIF, no GPS, no capture time. Very large captures need over a gigabyte of free memory. Takes HEVC-coded .heic and .heif — what iPhones and Android phones write; a HEIF holding AV1 or JPEG is refused by name. The decoder (about 1.4 MB) downloads once, before your first file is read.

How this converter works

A HEIC is an HEVC video frame in a still-image container, and PDF has no way to carry HEVC: a JPEG's compressed data can be copied into a page as it is, a PNG's rows can, but an HEVC bitstream has no PDF filter to decode it. So this page decodes. When you choose a file, the browser's File API hands the bytes to a WebAssembly build of libheif, the same open-source decoder used across the industry, which turns the picture into raw pixels inside this tab — upright, because the container's rotation is applied during decode. Those pixels are compressed with the browser's own deflate and written into a PDF image object by this site's own writer, one page per image the container holds; transparency, where a file has it, goes in as a separate soft mask, and an embedded colour profile goes in as the page's colour space so a wide-gamut photo is read the way it was shot. The result is wrapped in a Blob and offered back as a download link. No step involves a network transfer, because the file is already on your machine and this site has no server to send it to.

Of the three ways to check that claim, airplane mode is the one worth your time, and it carries extra weight on this page. HEIC needs a decoder your browser does not ship, so this tool really does fetch something once, before any photo of yours is opened. Let it land, then switch your wifi off entirely and convert. It still works, because the decoder now lives in your cache and nothing in the conversion ever wanted a connection — the meter is armed after the decoder arrives, so the count it shows is the conversion's alone. A tool quietly shipping your photos elsewhere could not survive that test. Marketing copy says whatever it likes; a disconnected radio does not. The methodology page covers the other two checks.

The honest limits: this is a decode, so what comes out is what the decoder can give. Ten-bit and HDR captures are tone-mapped down to standard 8-bit colour, because that is what the decoder produces and what a PDF image at eight bits per channel holds; a colour profile embedded in the file is carried across, but a file that only names a wide gamut without embedding a profile is written as plain RGB and the row says the tag was not carried. Decoding happens in RAM at roughly four bytes per pixel, and the writer keeps a further copy of the colour and the transparency while compressing: measured in Chrome, a 12-megapixel capture peaks at about 500 MB while converting and a 48-megapixel one at about 1.5 GB, and a share of that — the decoder's own working memory, roughly a quarter to a third — stays reserved until the tab is closed. Frames are decoded and written one at a time, so a burst never holds every frame's pixels at once; what it adds is its finished, compressed pages, kept until the document is written. One very large capture is what strains a low-memory phone, not the number of files. The page is the size of the image at one point per pixel, up to the format's 14,400-point limit, past which a panorama is placed at a smaller scale and the row says so: a converter, not a layout tool, and it invents no margins or paper size. Every file becomes its own PDF; the images inside one file share it, one page each, in the container's order, and a frame that cannot be decoded is reported in a row of its own rather than dropped silently. Combining separate files into one document is a different job. And only pixels leave the decoder — no EXIF, no GPS location, no capture time — which is usually the right default for a document you send, but note anything you need out of the original first.

Frequently asked questions

Is my photo uploaded anywhere?
No. The file is opened with your browser's File API, decoded to pixels by a WASM decoder running inside this tab, compressed into a PDF page by this page's own writer, and handed back as a download link — all in memory, on your device. The readout's network meter counts requests made after your file is read and it stays at zero; the methodology page shows two independent ways to verify it.
My HEIC file held several images. What do I get?
One PDF with one page per image, in the order the container stores them. A burst, or a camera that stores several shots in one container, can put several images in one HEIC, and a converter that reads only the first throws the rest away without saying so. If one image in the container cannot be decoded, the others still become pages and a row says how many were skipped. An image sequence — an animated HEIF — is different: a page is a still, so it holds the first frame only, and the row says so.
Why is the first conversion slower than the rest?
The HEIC decoder — a 1.4 MB WebAssembly build of the open-source libheif library — downloads once, before your file is read. After that it's cached, conversions run at full speed, and the page keeps working with the network off. It is the one thing this route ever fetches, and the meter is armed after it lands, so the count you see is the conversion's alone.
Does the PDF keep the photo's location and other EXIF data?
No. Only pixels leave the decoder, so the PDF contains the picture and, when the file carried one, its colour profile — no GPS coordinates, no device model, no capture timestamp. For a document you are about to send that is usually what you want, but note the capture date first if you need it.
Can I put several HEIC files into one PDF?
Not yet — each file becomes its own PDF, and dropping several files gives you several PDFs. The images inside one file do share a document, one page each, but combining separate files is a different job with its own decisions about page order and sizing.

Related tools