Converter · No upload
Convert HEIC to PDF on your device
Turn each HEIC photo into a PDF, with a page for every image in it that decodes.
A HEIF the decoder cannot open (AV1 or JPEG inside, or damage) is refused as undecodable; only HEVC decodes. 10-bit and HDR photos come out as 8-bit. An animated HEIF keeps its first frame only, and an image over 14,400 pixels on a side is placed smaller, on a 200-inch page; the row notes both. Takes .heic and .heif.
How this converter works
A HEIC file holds an HEVC video frame in a still-image container. A JPEG's compressed data can be copied into a PDF page as it is, and so can a PNG's rows, but no PDF filter decodes HEVC, so this page decodes the photo first. When you choose a file, the browser's File API hands its bytes to a WebAssembly build of libheif, the open-source decoder used here, which turns the picture into raw pixels inside this tab. The container's rotation is applied during decoding, so photos come out upright. This site's own writer compresses the pixels with the browser's deflate and writes them into a PDF image object, one page per decoded image. Transparency goes in as a separate soft mask, and an embedded colour profile becomes the page's colour space, so a PDF reader can use it. The finished PDF is offered as a download link. The decoder and the site's code are downloaded like any page, but your photo is processed inside the tab.
To check this yourself, convert one photo while online so the HEIC decoder is downloaded and cached, then disconnect from the internet and convert another. A conversion that finishes offline needed no server. The network meter starts counting after the decoder download, so that download is not in its count. The methodology page describes two other network checks and what each one shows.
The PDF holds what the decoder gives. Ten-bit and HDR captures are reduced to standard 8-bit colour, because that is what the decoder produces and what a PDF image at eight bits per channel holds. An embedded colour profile is carried across; 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 takes roughly four bytes of RAM per pixel, and the writer keeps a further copy of the colour and the transparency while compressing. Measured in Chrome, a 12-megapixel capture peaked at about 500 MB while converting and a 48-megapixel one at about 1.5 GB, and the decoder’s own working memory, roughly a quarter to a third of that, stays reserved until the tab is closed; your figures depend on the photo, browser and device. Frames are decoded and written one at a time, but finished compressed pages stay in memory until the PDF is assembled, and assembly and finished downloads add more, so extra files as well as large captures can strain a low-memory phone. Each page is the size of the image at one point per pixel, up to the format’s 14,400-point limit, with no margins or paper size added. The images inside one file share its PDF in the container’s order, and a frame that cannot be decoded is reported in a row of its own. To combine separate files, use Merge PDF, which accepts the PDFs this page writes. The decoder cannot tell a codec it lacks from damage, so its refusal names both causes. Only pixels leave the decoder, so no EXIF, GPS location or capture time reaches the PDF; note anything you need from the original first.