Build a verified PDF from selected HEIC images, preserving image order, displayed proportions and source pixel resolution.
Drag and drop one or more files, or choose files from your device.
Supported: .heic, .heif · up to 10 sources · 20 MiB per source. Existing codec, duration, pixel and memory limits apply.
Enter your values locally; no inputs are uploaded.
Check validation feedback before reviewing the browser-generated result.
Review the explanation, copy supported outputs or reset the workspace.
Choose a supported source container, review detected images and dimensions, adjust the applicable output settings, then convert and inspect the verified result before downloading.
Build a verified PDF from selected HEIC images, preserving image order, displayed proportions and source pixel resolution. Local libheif 1.23.5 WebAssembly supports tested HEVC still images and top-level image collections, including supported alpha. It does not provide universal HEIF support: other codecs, sequences, unsupported profiles/color models and ambiguous collection orientation are rejected. Container rotation/mirroring/clean-aperture metadata is handled by libheif; EXIF-only orientation is applied once when there is no container transform. RGB ICC profiles use the browser PNG color pipeline; supported Display-P3 SDR NCLX values are converted to sRGB with possible gamut clipping. 10-bit SDR can reduce to 8-bit with a warning; HDR PQ/HLG is rejected because verified tone mapping is unavailable. Source EXIF/ICC metadata is not copied. Auxiliary depth/gain maps are identified but not independent output images. iPhone-camera provenance and genuine high-bit-depth/HDR HEIC fixture coverage are unverified; common HEVC sample decoding is verified. PNG is lossless relative to the intended decoded/color-normalized 8-bit RGBA buffer, not the original compressed HEIC/AVIF file. JPEG is lossy even at high quality. PDF embeds lossless PNG pixels and is raster-image-based; original-size pages use 96 DPI while retaining all source pixels. Default conversion does not resize or add a tool-driven crop/rotation. Limits: 20 MiB compressed input, 16 MP and 8192 pixels per edge, 12 exportable HEIC images, 40 million aggregate decoded pixels, 48 MiB output, a 60-second disposable Worker and a 75-second whole-operation timeout. Libheif native allocation limits are set before parsing (160 MiB per block, 384 MiB accounted total).
Files, filenames and decoded pixels stay in browser memory and are not uploaded to a conversion endpoint, saved by this tool or included in analytics. Reset and unmount cancel workers and revoke owned preview URLs. Downloads require explicit actions; ordinary page requests may still be logged.
Yes. Multiple top-level exportable images can become separate PDF pages. A blank selection preserves decoder item order; an explicit sequence such as 2,1 reverses two selected images. No additional images are silently discarded.
Not by default. Supported decoded/color-normalized 8-bit pixels are embedded through lossless PNG encoding at their original displayed pixel resolution. This avoids an extra JPEG generation but does not preserve the original HEIC compression or high-depth precision.
Original-size mode uses a disclosed 96 DPI convention to convert source pixels into PDF points. All source pixels remain embedded. A4 and US Letter modes change page geometry and fitting rather than automatically reducing image pixel resolution.
Choose original proportions, A4 or US Letter, fixed-paper portrait or landscape, contain or cover fit and margins in PDF points. Contain retains the whole image; cover deliberately crops overflow at the content rectangle.
No. HEIC is raster imagery, so output pages contain raster images. The converter does not invent vectors, OCR text or selectable text from photographed documents.
The output is parsed to check PDF page count and geometry, then every page is rendered with PDF.js in the browser. Focused fixtures also inspect ordered embedded image pixels. Native codec support and fixture coverage limitations are disclosed separately.
Build a verified PDF from selected HEIC images, preserving image order, displayed proportions and source pixel resolution.
Local libheif 1.23.5 WebAssembly supports tested HEVC still images and top-level image collections, including supported alpha. It does not provide universal HEIF support: other codecs, sequences, unsupported profiles/color models and ambiguous collection orientation are rejected. Container rotation/mirroring/clean-aperture metadata is handled by libheif; EXIF-only orientation is applied once when there is no container transform. RGB ICC profiles use the browser PNG color pipeline; supported Display-P3 SDR NCLX values are converted to sRGB with possible gamut clipping. 10-bit SDR can reduce to 8-bit with a warning; HDR PQ/HLG is rejected because verified tone mapping is unavailable. Source EXIF/ICC metadata is not copied. Auxiliary depth/gain maps are identified but not independent output images. iPhone-camera provenance and genuine high-bit-depth/HDR HEIC fixture coverage are unverified; common HEVC sample decoding is verified.
PNG is lossless relative to the intended decoded/color-normalized 8-bit RGBA buffer, not the original compressed HEIC/AVIF file. JPEG is lossy even at high quality. PDF embeds lossless PNG pixels and is raster-image-based; original-size pages use 96 DPI while retaining all source pixels. Default conversion does not resize or add a tool-driven crop/rotation. Limits: 20 MiB compressed input, 16 MP and 8192 pixels per edge, 12 exportable HEIC images, 40 million aggregate decoded pixels, 48 MiB output, a 60-second disposable Worker and a 75-second whole-operation timeout. Libheif native allocation limits are set before parsing (160 MiB per block, 384 MiB accounted total).
Start with the original source container. Review displayed dimensions and all exportable images rather than assuming the first image is the only photo. Preserve default dimensions when you need source detail. Inspect transparent edges, fine text and color gradients in the before/after previews. For documents, choose a page size and inspect fitting/margins before downloading.
Yes. Multiple top-level exportable images can become separate PDF pages. A blank selection preserves decoder item order; an explicit sequence such as 2,1 reverses two selected images. No additional images are silently discarded.
Not by default. Supported decoded/color-normalized 8-bit pixels are embedded through lossless PNG encoding at their original displayed pixel resolution. This avoids an extra JPEG generation but does not preserve the original HEIC compression or high-depth precision.
Original-size mode uses a disclosed 96 DPI convention to convert source pixels into PDF points. All source pixels remain embedded. A4 and US Letter modes change page geometry and fitting rather than automatically reducing image pixel resolution.
Choose original proportions, A4 or US Letter, fixed-paper portrait or landscape, contain or cover fit and margins in PDF points. Contain retains the whole image; cover deliberately crops overflow at the content rectangle.
No. HEIC is raster imagery, so output pages contain raster images. The converter does not invent vectors, OCR text or selectable text from photographed documents.
The output is parsed to check PDF page count and geometry, then every page is rendered with PDF.js in the browser. Focused fixtures also inspect ordered embedded image pixels. Native codec support and fixture coverage limitations are disclosed separately.
Conversion uses local browser memory and bounded disposable Workers. File contents and filenames are not sent to analytics or saved in storage. Reset releases pending work and preview URLs. Browser color/codec support and the documented fixture coverage define the supported path; universal format compatibility is not promised.