fileformer
search⌘KtranslateENexpand_moreupload_fileConvert
Converters8 file families · 44 direct conversions
What changes in a conversionarrow_forward
home / image / ico · cur

Convert ICO Image Free

Convert ICO icons for free, and see how one file holds several sizes, all in your browser.

One .ico holds many images, and something else decides which one you see

An icon file is a 6-byte header and a directory of 16-byte entries, each pointing to either a headerless BMP (with its height doubled to make room for a 1-bit AND mask) or, since Windows Vista, a complete PNG. Width and height are single bytes, so 256 is written as 0. A .cur is the same file with a hotspot instead of colour-plane fields. Open one, or the samples built here, and see every entry decoded by this page and the one your browser actually picks.

folder_openOpen .ico / .curWindows app iconCursor (.cur)Broken icondownloadDownload
app.ico: Windows-style: 16, 24, 32, 48 as 32-bit BMP with AND masks, 256 as PNG (written as 0)
16×16 BMP 32-bit
24×24 BMP 32-bit
32×32 BMP 32-bit
48×48 BMP 32-bit
256×256 PNG
#widthheightcoloursplanesbit countbytesoffsetactual image
0161601321,12886BMP 16×16 · 32-bit
1242401322,4401,214BMP 24×24 · 32-bit
2323201324,2643,654BMP 32×32 · 32-bit
3484801329,6407,918BMP 48×48 · 32-bit
40 = 2560 = 256013262,11317,558PNG 256×256 · 8-bit type 6
entry 4 · PNG 256×25662.1 KB at byte 17,558
decoded, 1:1 pixels enlarged
no AND mask (PNG)
on a dark taskbar
A complete PNG inside the icon: supported since Windows Vista and by every browser. Mandatory for 256 px to keep files small.
70bWidth000 → 256
71bHeight000 → 256
72bColorCount00 = no palette or ≥ 256
73bReserved00
74wPlanes11
76wBitCount3232-bit (hint only)
78dwBytesInRes62,113image data length
82dwImageOffset17,558
+0PNG signature89 50 4E 47complete PNG file, IHDR 256×256
what your browser does with this file

Your browser decoded it as 256 × 256

For an img element without a size, the browser chooses one entry as the image’s natural size: entry 4 (PNG, 256 px), pixel-matched against this page’s decode with max difference 0. createImageBitmap gave 256 × 256.

check_circleDirectory sizes match the images.5 entries.
check_circleFile size 79.7 KB.16 px BMP 1.1 KB · 24 px BMP 2.4 KB · 32 px BMP 4.3 KB · 48 px BMP 9.6 KB · 256 px PNG 62.1 KB.
the same file in an img element at common sizes · device pixel ratio 1
16 CSS px · 16 device px
24 CSS px · 24 device px
32 CSS px · 32 device px
48 CSS px · 48 device px
64 CSS px · 64 device px
These are drawn by the browser’s own ICO decoder. Chrome and Firefox pick the entry closest to the needed device pixels; Safari draws the largest and scales it.
icon builder · real .ico / .cur written here

Choose sizes, choose BMP or PNG per size

Small sizes compress badly as PNG and are often smaller as BMP; 256 px is huge as BMP (262 KB with mask) and tiny as PNG. Windows wants 16, 24, 32, 48 and 256; browsers mostly use 16 and 32. Drop an image or use the generated one, toggle each size, and the file is written and read back by the inspector above.

16 BMP2024 BMP32 BMP4048 PNG64128256 PNG
type.ico.cur (hotspot 0,0)use my image
click a size: off → BMP → PNG → off · source: generated icon
Build and inspectdownload (73.2 KB)
16 px1.1 KBBMP · PNG would be 653 B
24 px2.4 KBBMP · PNG would be 1.1 KB
32 px4.3 KBBMP · PNG would be 1.7 KB
48 px3.2 KBPNG · BMP would be 9.6 KB
256 px62.1 KBPNG · BMP would be 270.4 KB
Total 73.2 KB including the 86-byte header and directory. Yellow means the other format would have been smaller.

Reference

offsetsizefieldmeaning
02idReservedalways 0
22idType1 = icon, 2 = cursor
42idCountnumber of images
6+16i1bWidthpixels, 0 means 256
+11bHeightpixels, 0 means 256
+21bColorCountpalette size, 0 if none
+31bReserved0
+42wPlanes / xHotspotICO: colour planes (0 or 1); CUR: hotspot x
+62wBitCount / yHotspotICO: bits per pixel; CUR: hotspot y
+84dwBytesInReslength of the image data
+124dwImageOffsetwhere the BMP or PNG starts
wheresizes used
Browser tab16 (32 on high-DPI)
Windows taskbar16, 24, 32, 40, 48 depending on scaling
Windows Explorer16, 32, 48, 256
Desktop shortcut32, 48, 256
macOS / iOSignore ICO for apps: use apple-touch-icon (180 PNG) and ICNS
Android / PWAmanifest icons 192 and 512 PNG
Modern sites/favicon.ico 32 + SVG favicon + 180 apple-touch-icon
MIMEimage/vnd.microsoft.icon (registered), image/x-icon (common); cursors image/x-win-bitmap
Magic bytes00 00 01 00 (ICO) · 00 00 02 00 (CUR); no signature string
Extensions.ico, .cur; .ani animated cursors are RIFF files containing ICO frames
Limits256 px max per side through the directory byte; larger PNGs are read by some tools but not Windows
InsideBMP: BITMAPINFOHEADER + colour rows + 1-bit AND mask; PNG: a complete file
favicon.icobrowsers request /favicon.ico when a page declares no icon
1985Windows 1.032 × 32 icons in resource files.
1990Windows 3.0The standalone .ico file with its directory format.
1999favicon.icoInternet Explorer 5 fetches /favicon.ico for bookmarks.
2001Windows XP32-bit icons with alpha channels.
2007Windows VistaPNG inside ICO and 256 px icons.
2019SVG faviconsChrome and Firefox accept rel="icon" with SVG; ICO stays as the fallback.

Making icons

Frequently Asked Questions

How do I convert an ICO file to PNG?

Add your ICO icon file, choose PNG as the output, and convert. PNG keeps the transparency and sharp edges of the icon and opens in any image editor or viewer, which makes it easy to reuse the graphic outside of a Windows icon context.

Can I convert ICO to other image formats?

Yes. You can convert ICO to common formats such as PNG and JPG. PNG is the best choice because it preserves the icon transparency, while JPG produces a smaller file without an alpha channel.

Is the ICO converter free?

Yes, it is free with no account, no watermark, and no limit. You can convert as many icon files as you need directly in your browser, with nothing to install.

Does converting ICO keep transparency?

Yes, when you convert to a format with an alpha channel such as PNG. Icons often have transparent backgrounds, and PNG preserves that. Converting to JPG will fill transparent areas because JPG does not support transparency.