Convert HEIC to BMP

Converting HEIC to BMP produces an uncompressed 24-bit Windows bitmap from an iPhone photograph, which is what an old desktop program wants when its import dialogue has never heard of HEIC. Expect around 36 MB from a 12-megapixel frame, and read the note on PNG before you commit a folder to it.

  • Where it runs In your browser. The file is never uploaded.
  • Lossy The colours survive exactly. BMP cannot carry transparency, so anything cut out is filled with the background colour.
  • File size limit Up to 100 MB per file, free, without an account.
  • Worth knowing Transparency is not supported by the target format and is filled with the background colour.

Up to 100 files at once. Mixed formats are fine.

The importer decided this, not you

Nobody chooses BMP. The searches that land here come from a file dialogue: a stock control system, a warehouse label printer, an ID badge suite, a microscope or gauge camera utility, a knitting or embroidery design package, or something a contractor wrote in Visual Basic in 2003 and nobody has touched since. The list of extensions it offers was written when JPEG was new, and BMP is on it because BMP has been on every such list since Windows 3.0.

That is the whole reason for this page. If the program will take a PNG, take the PNG route and stop reading — it is the same pixels in a third of the space. If the list really does stop at BMP, JPG and TIF, then BMP is the option that does not compress your photograph a second time, and the rest of this page is about what that costs.

Why a HEIC file is unreadable to software that reads BMP fine

A BMP is a header followed by pixels. Fifty-four bytes describe the width, the height and the colour depth, and everything after that is the picture, in order. A program can read one without any library at all, which is why the format has outlived four decades of Windows and why every ancient importer supports it.

HEIC is the opposite kind of thing. It is an ISO base media container — the same box-and-atom structure as an MP4 — holding image data compressed with HEVC, the video codec. Opening one means shipping an HEVC decoder and dealing with the patent pool behind it, which is why support arrived late even in Microsoft’s own products and never arrived at all in the long tail of small desktop software. The gap is not laziness; it is a genuine dependency that a bitmap does not have.

The size of the BMP, worked out rather than guessed

Three bytes per pixel, one row after another, each row padded up to a multiple of four bytes, plus 54 bytes of header. A 12-megapixel iPhone photograph at 4,032 by 3,024 needs 12,096 bytes a row, which is already a multiple of four, so it comes to 36,578,304 bytes of pixel data and 36,578,358 bytes in total — 36.6 MB. The HEIC it came from was very likely between 1.5 and 2.5 MB.

That factor of roughly twenty is the point of the format and the price of it. A 48-megapixel frame from an iPhone 14 Pro or later, 8,064 by 6,048, lands near 146 MB. Anything at that size will move slowly through a program that was expecting a scanned form, and some older importers have their own limits well below it — which is the argument for setting a maximum width during the conversion rather than discovering the ceiling afterwards.

What a BMP written here actually contains

A 14-byte file header, a 40-byte BITMAPINFOHEADER, then the pixels: 24 bits each, blue before green before red, rows running bottom to top. All three of those look like mistakes and all three are in the specification — BMP was designed around how a display adapter of the period wanted to be fed, and the layout never changed.

Both resolution fields are written as 2,835 pixels per metre, which is 72 dpi. Nothing much reads them, but a zero there makes some older viewers reject the file outright, so a real number goes in. There is no colour table, no compression field in use and no ICC profile, because the format as written here has nowhere to put one.

Ten bits from the iPhone, eight bits into the bitmap

A HEIC file can hold ten bits per channel and your iPhone uses that headroom, particularly in the smooth gradients where eight bits show their steps — a clear sky, a wall lit from one side, skin in soft light. The bitmap written here is eight bits per channel, so those extra levels are quantised away on the way through.

On a photograph destined for a label printer or a measurement tool this is invisible and irrelevant. It matters only if the receiving program is going to stretch the tones a long way, because banding that was not visible in the source can become visible once the range is pulled apart. If that is the job, keep the HEIC as well; the eight-bit bitmap is the copy you feed the machine, not the copy you edit.

Display P3 goes in and nothing comes out the other side

An iPhone tags its photographs with the Display P3 colour space, which is noticeably wider than sRGB in saturated reds and greens. A BMP has no field for a colour profile, so that tag does not travel, and whatever reads the file will treat the numbers as sRGB.

In practice the result is slightly muted saturated colour rather than anything dramatic, and most industrial or utility software would have ignored a profile anyway. If exact colour matters — matching a product to a swatch, for instance — this route is the wrong one, and a format that carries a profile should be used instead.

No transparency in the bitmap, but you choose what fills it

HEIC can carry an alpha channel, and a few iPhone-adjacent workflows produce one. The bitmap cannot: the writer here emits 24 bits per pixel with no alpha, so anything transparent is composited before the pixels are written, onto the background colour set above the drop zone, which starts at white.

For an ordinary camera photograph there is nothing transparent to fill and the control is academic. If you have a HEIC with a genuine cut-out and need a specific colour behind it, set that colour before converting rather than relying on the white default — or convert to PNG instead, which keeps the transparency rather than asking you to settle it with one colour.

Sizing the picture down before it becomes a bitmap

The maximum width setting is the one control on this pair that changes the outcome by an order of magnitude, because the file size is directly proportional to the pixel count. Cutting 4,032 pixels to 1,024 takes the 36.6 MB result down to about 2.4 MB, and for a badge, a label, a parts catalogue entry or a form attachment that is more than enough resolution.

Decide the number from what the program does with the picture rather than from the phone’s output. A photograph shown at 300 pixels on a screen does not benefit from 4,032, and a bitmap is the one format where every unused pixel is paid for in full, every time the file is opened or copied.

Converting a folder of iPhone photographs at once

Drop the whole selection rather than one file at a time. Each is decoded and written separately with its own progress, and the finished bitmaps can be taken together as a single ZIP, which also happens to be the sensible way to move thirty 36 MB files across a network.

The free tier accepts input files up to 100 MB, which every HEIC clears with a wide margin — the constraint on this pair is the output rather than the input. The work runs on your own processor, so a large batch is limited by your machine rather than by a queue behind other people’s jobs.

Keeping the HEIC after the bitmap has been handed over

The bitmap is a delivery format, not a copy worth keeping. It carries no timestamp, no camera information, no location and no colour profile, and it occupies twenty times the space of the file it came from, so an archive of BMPs is the worst of both.

Keep the HEIC files where they are, in the Photos library or wherever they were exported to, and treat each BMP as disposable output that can be regenerated in seconds. If the old program later gains a PNG importer, or gets replaced, you will still have the originals with their dates and their full colour intact.

How to get a BMP out of an iPhone HEIC file

  1. Check first whether the program will accept a PNG — it is the same pixels in far less space.
  2. Drop your HEIC files onto this page and set a maximum width if the full 4,032 pixels are not needed.
  3. Download the BMP files, or take the whole set as one ZIP.

HEIC against BMP: a 2015 ISO container and a 1990 Windows bitmap

HEIC compared with BMP
HEICBMP
Full nameHigh Efficiency Image ContainerWindows Bitmap
File extension.heic.bmp, .dib
Media typeimage/heicimage/bmp
CompressionLossy — file size is bought with qualityUncompressed
First published20151987
Published byMPEGMicrosoft
SpecificationISO/IEC 23008-12
LicensingPublished, not standardisedPublished, not standardised
Standing todayCurrentLegacy, still read everywhere
Bit depth108
Colour it can describeYCbCr, wide gamutRGB, indexed palette
Opens in a browserSome browsersEvery browser
Considered insteadJPG, AVIF, WebPPNG, TIFF

What is lost

BMP has no alpha channel. A transparent HEIC comes out with those areas filled in — white unless something else is set — and no setting in BMP brings the transparency back.

BMP holds a single still image. An animated HEIC keeps its first frame and loses the rest, so a conversion is a way to take a still out of one, not a way to move it.

HEIC carries up to 10 bits per channel and BMP stores 8. The extra precision is what survives heavy correction without banding, so the conversion is best made after the editing rather than before it.

Opening the result

BMP opens in every current browser. HEIC has narrower browser support than that. If the file is going onto a web page or into a form, that is usually the whole reason for the conversion.

The usual programs do not overlap: HEIC opens in Apple Photos and Adobe Lightroom, BMP in Microsoft Paint, GIMP and IrfanView — so whoever receives the result needs something from the second list.

File size and quality

The result is larger than the original and no better. HEIC has already discarded detail, and BMP stores what is left without discarding more — it prevents further loss rather than undoing the first one.

What each format is for

The two are aimed at different work: HEIC at phones and photography, BMP at moving data between programs. That is worth weighing before converting, because the reason one exists is usually the reason the other is awkward.

HEIC is MPEG's format, published in 2015. It records 10 bits per channel.

BMP comes from Microsoft and dates from 1987. Microsoft Paint, GIMP and IrfanView all read it.

BMP was published in 1987 and HEIC in 2015. The older one is generally the safer file to hand to somebody; the newer one usually does the job in fewer bytes.

HEIC to BMP: size, colour and what old importers accept

Are my HEIC files uploaded anywhere?

No. This conversion runs entirely inside your browser, so the file never leaves your device. You can confirm it yourself: open the network tab of your browser's developer tools and convert something. You will see the page load, plus the analytics and advertising the site is paid for with — and nothing carrying your file. The engine behind this particular pair is libheif, the reference decoder for Apple's HEIC; your browser fetches it once and caches it.

Why will my program open a BMP but not a HEIC file?

Because BMP is not really a compressed format at all — it is a header followed by the pixels, and any program can read it in thirty lines of code. HEIC is an ISO container holding HEVC-compressed image data, published in 2015, and reading one means shipping a video decoder. Software written before 2015, or written since by anyone who did not want that dependency, has no path to it.

How big will the BMP be?

It is arithmetic rather than an estimate. A standard 12-megapixel iPhone frame is 4,032 by 3,024, three bytes a pixel, which is 36,578,304 bytes of pixels plus a 54-byte header — about 36.6 MB from a HEIC that was probably under 2 MB. A 48-megapixel frame at 8,064 by 6,048 comes to roughly 146 MB.

Is anything lost turning HEIC into BMP?

The picture itself is not compressed again, so no new compression artefacts appear. What is lost is everything around it: the EXIF block, the timestamp, the GPS coordinate, the Display P3 colour profile and the ten bits per channel your iPhone recorded, which become eight. Nothing is recovered either — a BMP made from a lossy source still contains the lossy picture, only written out at full size.

Does the BMP keep transparency?

No. The file written here is 24-bit BGR with no alpha channel at all, so anything transparent in the source is composited onto white before the pixels are written. For an ordinary camera photograph this makes no difference, since there is nothing transparent in it.

Would PNG not be better?

Almost always, yes. PNG is lossless in exactly the same sense — the pixels come back bit for bit — and is typically a third to a half the size. Convert to BMP only when the program on the other end genuinely will not take a PNG. If its dialogue lists PNG, use that page instead.

Do the photographs get uploaded?

No. The HEIC is decoded by libheif compiled to WebAssembly and the BMP is written by JavaScript, both inside the tab. You can watch the network tab during a conversion, or pull the network cable and convert anyway.

More about these formats