![]()
Click the upload area or drag and drop your .heif or .HIF file. Batch upload up to 100 files.
Convertify processes the file using Rust + libvips + libheif. HEVC, AVC, and AV1 codecs inside the HEIF container are all supported.
Download your JPG. The file is deleted from the server immediately after download.
High Efficiency Image Format — same as HEIC, used on Apple devices.
Universal format for photos. Supported everywhere, great balance between quality and file size.
Apple photo format used by iPhone and iPad. High quality with small file size.
Modern image format by Google. Up to 30% smaller than JPG with the same quality.
Lossless format that preserves every pixel. Best for screenshots and logos.
Classic format for simple animations. Supports transparency and up to 256 colors.
Uncompressed bitmap format. Maximum quality but very large file size.
Professional lossless format used in printing and photography.
Next-gen format with excellent compression. Up to 50% smaller than JPG.
Portable Pixmap format used in Unix/Linux environments.
High Dynamic Range format storing extended brightness data.
Flexible Image Transport System used in astronomy and science.
Portable Document Format. Convert PDF pages to JPG, PNG or WebP images.
Quick comparison to help you choose the right format
HEIF (High Efficiency Image File Format, ISO/IEC 23008-12) is the container. HEIC is Apple's specific variant — a HEIF container whose payload is encoded with HEVC and that uses the .heic extension. Files with a .heif extension come from Samsung Galaxy phones, Sony Alpha cameras, Canon cameras, Windows 11 Camera, and other non-Apple sources. Both share the same container format and are handled identically by libheif and libvips; only the extension and branding differ. If you have a .heic file from an iPhone, that is a separate page.
Samsung Galaxy: the S10/S10+/S10e (2019) introduced High Efficiency Pictures as an opt-in toggle in Camera Settings. The S20, S21, S22, S23, S24, and S25 lineups carry the same feature under Advanced picture options; the codec used inside is HEVC. The extension used varies by One UI version and locale — some units produce .heif, some .heic, both contain HEVC. Google Pixel: Android P (2018) added platform-level HEIF write support. Google Pixel phones with third-party camera apps may produce .heif files. Windows 11 Camera: writes HEIF when the HEIF Image Extension and HEVC Video Extension are installed from the Microsoft Store. Sony Alpha cameras (7S III, A1, 7R V and later): shoot HEIF with the .HIF extension at 10-bit 4:2:0 or 4:2:2; HLG Still Image mode uses BT.2020 wide gamut. Canon (EOS-1D X Mark III, R5, R6 II and later): records HEIF as .HIF at 10-bit with optional HDR PQ.
Three irreversible changes occur. First, bit depth: HEIF from Sony and Canon is commonly 10-bit per channel; JPEG is capped at 8-bit by the spec. libvips quantizes the 10-bit data to 8-bit during encoding, which can introduce subtle banding in smooth gradients — an effect more visible in HDR skies and skin tones. Second, HDR is lost: HLG and HDR PQ transfer functions embedded in HEIF (common in Sony HLG Still Image and Canon HDR PQ modes) cannot be represented in JPEG, which has no HDR container; Convertify tone-maps to SDR sRGB. Third, transparency is lost: HEIF supports an alpha channel, JPEG does not; any transparent pixels are composited onto white. File size increases: HEIF/HEVC files are roughly half the size of equivalent-quality JPEGs, so converting in this direction typically produces an output 1.5–2 times larger than the source.
| Feature | HEIF (.heif) | JPG |
|---|---|---|
| Color depth | 8-bit or 10-bit per channel | 8-bit per channel |
| HDR | Yes (HLG, HDR PQ, BT.2020) | No |
| Transparency | Yes (8-bit alpha) | No |
| Compression | HEVC lossy — ~2× smaller than JPG | DCT lossy — baseline |
| Animation / sequences | Yes (HEIF image sequences) | No |
| Browser support (2026) | 0% — no browser supports HEIF | ~100% — universal |
| Email clients | Not supported | Universal |
| macOS / iOS | Native (Photos, Preview) | Native |
| Windows | Requires HEIF + HEVC extensions | Native |
| Android | Android 9+ (varies by OEM) | Native |
| Best for | Apple ecosystem, camera storage | Universal sharing, email, print |
Keep your HEIF files if you stay within the Apple ecosystem — iCloud Photos, AirDrop, and Apple Messages all handle HEIF and HEIC natively on iOS 11+ and macOS High Sierra+. Keep them if your destination is a modern web pipeline that already serves AVIF or WebP via the HTML picture element, where HEIF's compression advantage is better realized through an AVIF conversion rather than a JPEG. Keep them if you need 10-bit or HDR fidelity — converting to JPG permanently discards that precision and cannot be undone.
Convertify uses libvips's vips_jpegsave with a default quality of 82, which balances file size and visual quality for most HEIF photographic content. For archival or print use, Q=90 or higher is recommended; the file will be larger but artifacts are invisible. For web delivery, Q=75 to Q=80 is standard and typically halves the file size versus Q=90. For camera HEIF at 10-bit (Sony, Canon), the quality setting has no effect on the bit-depth reduction from 10 to 8 — that step occurs before encoding regardless. JPEG's 4:2:0 chroma subsampling (default in libvips) is retained for Q below 90; at Q=90+ Convertify automatically switches to 4:4:4 subsampling for sharper color edges.
The conversion pipeline runs entirely in Rust on top of libvips 8.8+ via libvips-rs bindings. Step 1: vips_heifload() receives the uploaded file. libheif (strukturag/libheif) inspects the ftyp box to identify the codec inside — HEVC is decoded via libde265, AVC via OpenH264 (libheif 1.13+), AV1 via libaom or dav1d. The loader is registered for .heic, .heif, and .avif extensions transparently. Step 2: the decoded image is a VipsImage at native bit depth — 16-bit VIPS_FORMAT_USHORT for 10-bit HEIF input (libvips heifload.c added >8-bit support in December 2021). ICC color profiles are read via heif_image_handle_get_raw_color_profile and attached to the VipsImage. EXIF and GPS metadata are preserved. Step 3: vips_jpegsave() encodes the output at the chosen Q, with optimize_coding=true and subsample_mode=auto. The JPEG bytes stream directly to the HTTP response without writing a temporary file. Peak memory usage is bounded by libvips's demand-driven pipeline — large 10-bit HEIF files are processed in tile-sized strips.