Opening a newly converted JPG only to find a solid black rectangle is frustrating. The fix depends entirely on whether the problem is transparency, a half-copied file, or your browser running out of memory.
A solid black square usually means transparency collapsed. HEIC supports an alpha channel for cutout stickers and removed backgrounds, while standard JPG does not. When an empty background is flattened into an 8-bit JPG without a fill colour, the transparent pixels default to zero—which is pure black.
A completely blank or half-grey image points to a broken file or a silent browser crash. If the HTML5 canvas runs out of memory during a big batch, it hands the encoder an empty grid. If the USB cable was pulled early, the bottom of the image simply is not there.
Wait five seconds before blaming the file. When you drop dozens of photos into a browser converter at once, the later images in the queue Often render black purely because the tab hit its RAM ceiling, not because the photos themselves are broken.
Do not delete the original HEIC yet. Look closely at the bad JPG you got back, because the exact pattern of the failure tells you which part of the conversion pipeline broke.
| What the JPG looks like | What actually failed | The immediate fix |
|---|---|---|
| Solid black all over, normal dimensions | Browser HTML5 canvas hit its memory limit | Refresh the tab and convert that single file alone |
| Subject is visible, background is pitch black | HEIC alpha channel (cutout) flattened to RGB zero | Place the sticker on a white note before saving, or use PNG |
| Top slice of the photo is fine, rest is black or grey | Truncated <code>mdat</code> box from an interrupted transfer | Copy the original file from the iPhone a second time |
| Tiny dimensions or strange silhouette | Decoder grabbed an auxiliary depth or gain map | Re-save as a standard photo on the phone first |
Since iOS 16, pressing and holding a subject in the Apple Photos app lifts it out of the background. If you save or share that cutout, iOS writes a HEIC file with an alpha channel—an extra layer that marks the surrounding pixels as transparent.
The JPEG standard (ITU-T T.81) has no concept of transparency. Every pixel must have a solid red, green, and blue value. In raw pixel data, transparent areas are often stored as 0, 0, 0, 0 (red zero, green zero, blue zero, alpha zero). When a basic converter strips the fourth number to make a 3-channel JPG, you are left with 0, 0, 0—pitch black. If the subject itself was dark, the whole picture looks like a black box.
Browser-based converters decode the HEIC inside WebAssembly and paint the raw pixels onto an invisible HTML5 <canvas> element before exporting the JPG. Browsers strictly cap how much memory a single tab can allocate for canvas buffers.
When you drop a huge batch of 48-megapixel iPhone Pro photos into a tab, the browser may silently refuse to allocate the next canvas buffer. Instead of crashing the page, the canvas API often returns a blank, zeroed-out bitmap, which the encoder dutifully saves as a valid, solid-black JPG. We cover how this limit behaves in our guide on converting large batches in browser memory.
A HEIC file is an ISO Base Media container built out of boxes. The file header (meta) sits near the start, telling the decoder the image width and height, while the heavy compressed HEVC tiles sit inside the media data (mdat) box. If a Windows USB transfer stalls or an AirDrop gets cancelled right at the end, the header arrives intact, so the converter sets up a full-size canvas. When the decoder hits the missing bytes at the bottom, the remaining canvas tiles stay unfilled—showing up as a solid grey or black band.
Less commonly, a portrait-mode HEIC stores multiple images inside one container: the main photo, a monochrome disparity map for background blur, and an HDR gain map. If a file is slightly mangled, a basic parser might skip the primary image item and decode the 8-bit greyscale depth map instead, giving you a ghostly silhouette.
Following those four steps in order takes under a minute and stops you from wasting time trying to repair a file when the browser merely needed a refresh.
Open the HEIC to JPG converter in a fresh tab and drop just the one problem photo onto the page. It runs locally on your machine without uploading anything, and testing one file in isolation immediately tells you whether you were dealing with a memory limit or a damaged photo.
Your photos are decoded in your own browser — open the converter and see.
First published: 30 October 2026