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.
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.