ICO to BMP converter
Convert ICO images to BMP format
There is a genuine family resemblance here: the payload inside a classic icon entry is a device-independent bitmap, the same info header and bottom-up BGR rows a .bmp uses, so this conversion is largely unwrapping. The one real difference is alpha. Icon entries reserve a byte for it, and the bitmap this page writes is 24-bit with no alpha at all, so transparency is discarded and the pixels behind it come out black. That is the fact to plan around.
Key facts about ICO to BMP converter
| Format relationship | An icon directory entry wraps a DIB with a 40-byte info header, which is what a .bmp contains after its 14-byte file header. The unwrapping is close to lossless. |
|---|---|
| Alpha discarded to black | The writer stores 24 bits per pixel and copies only blue, green and red. A transparent canvas pixel reads back as zero everywhere, so those areas land solid black. |
| Output size for a 32 pixel icon | Exactly 3,126 bytes: a 54-byte header plus 32 padded rows of 96 bytes. A 256 pixel entry gives 196,662 bytes. |
| Size formula | 54 bytes plus the height times the row width rounded up to a multiple of four. Icon widths are powers of two, so no padding is ever wasted. |
| Pixel fidelity | Exact. No lossy codec is involved, so every colour value the browser decoded from the icon entry is written unchanged. |
| Which entry | One image per icon file. A container holding 16, 32, 48 and 256 pixel versions yields a single bitmap, chosen by the browser. |
| Bit depth of the output | Always 24-bit with no colour table, even when the icon entry was a 4-bit or 8-bit palette image that would fit in far fewer bytes. |
| Opens the result | Windows Paint and Photos, Visual Studio resource editors, legacy Delphi and Visual Basic image controls, GIMP, Photoshop and ImageMagick. |
What happens to your file
The bitmap is built in your tab from start to finish. Your icon becomes an object URL, the browser's own icon decoder resolves the container and produces pixels for an Image element, and those pixels are drawn onto a canvas this page created. The page reads the canvas back with getImageData and walks the rows in reverse, writing blue, green and red bytes into an ArrayBuffer through a DataView. No request leaves the browser.
About this tool
- 1
Load the icon file
Drag a .ico onto the drop area or click to browse. Twenty files per batch, well beyond what any icon set needs.
- 2
Decide about the background
If the preview shows checkerboard, flatten the icon onto the colour you want first, because the bitmap makes those areas black.
- 3
Convert
Press Convert. There is no encoder to run, so the write is essentially instantaneous even for a full batch.
- 4
Download the bitmap
Save the .bmp, or take converted-bmp-files.zip which is assembled inside the browser for multi-file runs.
| Input and output | Takes .ico only (image/x-icon) and returns .bmp with the image/bmp type; any other extension is refused before decoding. |
|---|---|
| Conversion path | ICO to BMP runs in three steps: an <img> element decodes the icon and the browser picks one entry from a multi-size file; the pixels land on a 2D canvas in this tab; then getImageData feeds a 24-bit BI_RGB writer that assembles the file in page memory. |
| Browser support | The icon side decodes in Chrome, Edge, Firefox and Safari, while writing the BMP needs nothing from the browser, the bytes being assembled in the page. |
| Controls for this pair | No quality slider, BMP not being a lossy target here, so the max-dimension presets from 3840 down to 200 px are the only way to hold the BMP down in size against the ICO. |
| Batch, caps and naming | Twenty ICO files per run at 500 MB each; one result downloads as a single BMP, several as converted-bmp-files.zip, zipped by JSZip 3.10 in page memory. |
| Device ceiling | The canvas caps it: past roughly 16,384 px a side Chromium refuses the bitmap and iPhone Safari gives up sooner, so an oversized ICO fails before any BMP bytes exist. |
- Icons are tiny, so the usual warning about huge uncompressed bitmaps does not apply: a 32-pixel icon makes a three kilobyte file.
- Legacy toolchains asking for a bitmap often want a specific size, so check before converting a 256-pixel entry.
- Black edges around your artwork are the discarded alpha showing; no setting here changes the fill colour.
- Keep the .ico itself for anything Windows loads as an icon resource, since a bitmap cannot serve that role.
- Uncompressed 24-bit BGR bitmap output
- Bottom-up rows padded to four bytes
- Exact pixel pass-through with no codec
- Twenty icons per run, zipped in the tab
- Supplying an image to a legacy Windows application or installer that loads only .bmp resources.
- Getting icon artwork into an embedded toolchain that reads raw bitmaps.
- Preparing a splash or button graphic for an old Visual Basic or Delphi form.
Related tools
View allNeed the opposite? Try BMP to ICO
Other BMP tools12
More in Images12
Related categories1
Updated