BMP to ICO converter
Convert BMP images to ICO format
This pair is closer than it looks. An ICO is a directory header wrapped around what is essentially a bitmap: the same BITMAPINFOHEADER, the same bottom-up rows, the same BGRA layout. Converting is mostly rescaling to icon dimensions and rewriting the header. This page does that at a fixed 32 by 32 pixels in 32-bit colour, the classic Windows shell icon size and the size a browser asks for when it wants a favicon. It produces one image entry, not a multi-resolution icon set.
Key facts about BMP to ICO converter
| Output dimensions | Always 32 by 32. Whatever the bitmap measures, it is scaled to that square, and the resize presets are hidden because the size is not adjustable. |
|---|---|
| Output file size | Exactly 4,158 bytes every time: a 6-byte directory, a 16-byte entry, a 40-byte info header and 4,096 bytes of uncompressed BGRA. |
| Colour depth | 32 bits per pixel. Unlike the source bitmap, which is normally 24-bit BGR, the icon reserves a full byte for alpha on every pixel. |
| Transparency | The alpha byte is written from the canvas, so a 32-bit bitmap that decoded with alpha keeps its soft edges. A standard 24-bit bitmap yields a solid square. |
| Icon entries | One. Real Windows icons often pack 16, 32, 48 and 256 pixel versions together; this writer emits a single 32-pixel entry, so Windows scales it up for large-icon views. |
| Compression | None. The payload is raw pixels, not the PNG-compressed entry that modern 256-pixel icons use. |
| Aspect ratio | Not preserved. A wide bitmap is squashed into the square rather than letterboxed, so crop to a square first if proportions matter. |
| Opens the result | Windows Explorer, the taskbar and shortcut properties, Visual Studio resource editors, GIMP, and every browser as a favicon at the site root. |
What happens to your file
Everything happens in the tab you are looking at. The bitmap becomes an object URL, your browser's own BMP decoder turns it into pixels, and those pixels are drawn twice: into a working canvas and then into a 32 by 32 canvas that supplies the icon payload. The icon is assembled byte by byte with a DataView in this page's JavaScript, writing the directory and header fields little-endian before appending the BGRA rows bottom-up. No server call occurs anywhere in that sequence.
About this tool
- 1
Crop to a square first
Optional but worth it, since the icon is written at 32x32 regardless of the source aspect ratio.
- 2
Load the bitmap
Drag the .bmp onto the drop area or browse for it. Up to twenty bitmaps queued gives twenty icons.
- 3
Convert
Press Convert. There is no quality slider and no size choice, only the notice confirming the fixed 32x32 output.
- 4
Download and place it
Save the .ico. For a website, put it at the site root as favicon.ico; for Windows, point a shortcut or application resource at it.
| Input and output | Takes .bmp only (image/bmp) and returns .ico with the image/x-icon type; any other extension is refused before decoding. |
|---|---|
| Conversion path | BMP to ICO runs in three steps: an <img> element decodes the bitmap, 24-bit and 32-bit variants alike; the pixels land on a 2D canvas in this tab; then the canvas is redrawn at 32x32 and an icon writer in the page emits the directory and the DIB. |
| Browser support | The bitmap side decodes in every current browser, while writing the ICO needs nothing from the browser, the icon being assembled in the page. |
| Controls for this pair | No quality slider and no resize presets: BMP to ICO is pinned to 32x32 pixels, which the page says above the convert button. |
| Batch, caps and naming | Twenty BMP files per run at 500 MB each; one result downloads as a single ICO, several as converted-ico-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 BMP fails before any ICO bytes exist. |
- Bold high-contrast shapes survive the shrink to 32 pixels; thin outlines and small lettering do not, so simplify before converting.
- A bitmap that already measures 32x32 or 64x64 scales cleanly and the icon will match the source almost exactly.
- Windows caches icons aggressively, so a shortcut still showing the old picture is usually a shell cache issue, not a bad file.
- A 32-pixel favicon looks soft on a high-density display next to a PNG declared at 180 pixels for touch icons.
- Fixed 32x32 single-entry icon output
- Full 32-bit BGRA with an alpha byte per pixel
- Icon bytes written with DataView in the page
- Up to twenty bitmaps converted in one run
- Turning a bitmap logo from an old brand kit into a favicon.ico for a site root.
- Giving a compiled Windows application or a desktop shortcut a custom icon resource.
- Producing an icon for a legacy internal tool whose build script expects an .ico path.
Related tools
View allNeed the opposite? Try ICO to BMP
Other BMP tools12
Updated