BMP to ICO Crop Converter

Load a BMP image, drag the crop handles to define exactly the area you need, preview the result, then download an ICO icon file. Everything runs in your browser — your image never leaves your device.

🖼️

Drop a BMP here

or Browse Files  ·  BMP supported

What This Tool Does

This tool loads a BMP image directly in your browser, presents an interactive crop overlay with draggable handles, and converts the selected area to an ICO file. No server upload is required. The full workflow — loading, cropping, encoding — runs entirely in client-side JavaScript using the HTML5 Canvas API. BMP files are loaded using URL.createObjectURL() combined with img.decode(), which guarantees the image is fully pixel-decoded before the canvas draws it, preventing the silent blank-canvas problem that can affect asynchronous image loading. The output is an ICO file with an embedded PNG image, compatible with Windows Vista and later, all major browsers for favicon use, and any icon-aware application.

Who This Is For

  • Web developers who have BMP source artwork and need a cropped favicon in ICO format
  • Designers preparing Windows application icons from legacy BMP bitmap files
  • Anyone converting a specific region of a BMP image to an icon without installing software
  • Developers who need a quick crop-and-convert workflow that stays entirely in the browser

BMP vs ICO: Format Comparison

PropertyBMPICO
Primary useRaster images, legacy graphicsApplication icons, favicons
CompressionUncompressed (or RLE)PNG or BMP embedded (varies)
Transparency supportLimited (1-bit mask only)Yes (32-bit RGBA)
Multiple sizes in one fileNoYes — standard for icons
Browser favicon supportNoUniversal — every browser
Windows icon supportNoYes — native
Typical file sizeLarge (uncompressed pixels)Small (PNG-embedded)
Best forLegacy paint apps, print layoutsFavicons, Windows icons, app icons

Frequently Asked Questions

Why use URL.createObjectURL + img.decode() for BMP loading?
Using URL.createObjectURL() to generate an object URL and then calling img.decode() ensures that the image is fully pixel-decoded before the canvas draws it. The decode() method returns a Promise that resolves only after the full decode is ready — guaranteed non-blank pixels. This is the same reliable pattern used for AVIF and other formats that require asynchronous decoding.
How precise is the crop tool?
The crop operates at native pixel accuracy on the original BMP dimensions. The canvas is scaled to fit your screen for display, but the actual crop coordinates are mapped back to the full-resolution image before the ICO is generated. You get an ICO at the exact pixel dimensions shown in the crop dimensions badge.
Should I crop to a square for favicon use?
Yes — browser favicons and Windows icons are always displayed square. If your crop selection is not square, the ICO will contain a non-square image that most icon renderers will stretch or letterbox. Use the crop dimensions badge to confirm equal width and height before downloading.
What is the maximum recommended ICO output size?
For favicons, 16×16, 32×32, and 48×48 pixels are standard. For Windows application icons, 256×256 is the maximum size supported natively. The ICO format can technically store larger images, but standard use cases stay at 256×256 or smaller.
What browsers are supported?
All modern browsers — Chrome, Firefox, Edge, Safari (desktop and mobile). The tool uses standard HTML5 Canvas and Blob APIs that have been universally supported since 2015. BMP is a widely supported format and decodes natively in all major browsers.
Is there a file size limit?
There is no server-imposed limit because no upload occurs. The practical limit is your browser's available RAM. BMP files can be very large since they are uncompressed, so very large BMPs on memory-constrained devices may be slower to process.