Lição de história: O que é um arquivo .ico? O formato de ícones do Windows
O formato de ícones do Windows — um arquivo com vários tamanhos e profundidades de cor, um pequeno cabeçalho e um diretório no início, imagens compactadas em PNG desde o Windows Vista, um irmão .cur para cursores e o favicon.ico que todo site ainda serve.

TL;DR
Um .ico é um arquivo de ícones do Windows. Um único arquivo pode conter várias imagens do mesmo ícone em diferentes tamanhos e profundidades de cor, e o Windows escolhe a mais adequada para a área de trabalho, uma barra de título ou uma caixa de diálogo. A estrutura é simples: um cabeçalho de 6 bytes (reservado, tipo, número de imagens), uma entrada de diretório de 16 bytes por imagem e depois os dados. As entradas clássicas são bitmaps (DIB) com uma máscara AND para transparência; desde o Windows Vista, uma entrada pode ser um PNG completo, o que tornou práticos os ícones de 256×256. O formato de cursor .cur é quase gêmeo (tipo 2 em vez de 1, mais um ponto ativo). Na web, o Internet Explorer 5 (março de 1999) começou a pedir favicon.ico na raiz dos sites. Para obter uma imagem comum, converta .ico para PNG localmente — o Legacy File Converter faz isso no seu próprio PC, sem enviar nada.
O que é um arquivo .ico?
Um arquivo .ico é o formato de ícones do Windows. A maioria dos arquivos de imagem guarda uma única imagem; um arquivo ICO guarda um recurso de ícone — uma pequena coleção de imagens que mostram o mesmo ícone, cada uma desenhada em um tamanho e/ou profundidade de cor diferente. A própria explicação da Microsoft, o artigo Icons de John Hornick datado de 29 de setembro de 1995, diz isso claramente: um único arquivo ICO, ou um recurso de ícone dentro de um EXE ou DLL, pode conter várias imagens de ícone, cada uma com tamanho e/ou profundidade de cor diferente.
É por isso que a busca “o que é um arquivo .ico” costuma vir de alguém que encontrou um na pasta de um programa, num download da web ou num projeto antigo e não entende por que o visualizador de fotos mostra só um quadradinho — ou nada. O arquivo é válido; ele é apenas um contêiner de imagens de ícone, não uma foto comum. Para formatos relacionados neste site, veja Lição de história: O que é um arquivo .bmp? e Lição de história: O que é um arquivo .png?.
Os primeiros ícones do Windows e a era do tamanho único
Os ícones fazem parte do Windows desde seus primeiros ambientes de área de trabalho, mas o sistema inicial pensava em um único tamanho de ícone. O artigo da Microsoft de 1995 observa que as funções originais como LoadIcon, ExtractIcon e DrawIcon vinham “dos tempos de 16 bits, quando o sistema definia apenas um tamanho de ícone”, e esticam o que recebem até o tamanho grande padrão.
Com o Windows 95 e as versões seguintes do Windows NT, o Windows passou a controlar ícones pequenos e grandes tanto para o sistema quanto para o shell, e novas funções (as variantes Ex, LoadImage, DrawIconEx) podiam pedir um tamanho específico. As orientações de 1995 incentivavam os desenvolvedores a incluir pelo menos 16×16 e 32×32 em 16 cores, além de 48×48 em 256 cores. O formato já podia conter tamanhos incomuns havia muito tempo; era o Windows que estava se atualizando para usá-los.
Um arquivo, muitos tamanhos e profundidades de cor
Quando o Windows precisa de um ícone, ele percorre as imagens do recurso. Pelas regras da Microsoft de 1995, escolhe a imagem de tamanho mais próximo do solicitado; se várias têm esse tamanho, prefere a que corresponde à profundidade de cor da tela e, se não houver, a mais profunda que não a ultrapasse. Os tamanhos pequenos não são meras cópias reduzidas — os designers costumam redesenhá-los para que a versão 16×16 continue legível.
As diretrizes de ícones do Windows Vista da Microsoft depois listaram como conjunto completo para ícones de aplicativos 16×16, 32×32, 48×48 e 256×256, com arte em 32 bits (alfa incluído) mais versões de paleta em 8 bits e 4 bits para situações como a área de trabalho remota. Um pequeno .ico pode, portanto, conter uma dúzia de imagens ou mais — exatamente o que se vê ao abri-lo num editor de ícones.
Muitas imagens, um ícone
Se um visualizador mostra uma imagem diferente ou minúscula, provavelmente escolheu uma entrada entre várias. Converter para PNG normalmente significa escolher uma entrada — em geral a maior — e exportá-la.
Como um arquivo .ico é organizado
A estrutura cabe num parágrafo. O arquivo começa com um cabeçalho ICONDIR de três palavras de 2 bytes: um valor reservado que deve ser 0, um tipo que vale 1 para ícones e uma contagem de imagens. Em seguida vem uma ICONDIRENTRY por imagem — 16 bytes cada — com largura, altura, número de cores, planos, bits por pixel, o número de bytes dos dados da imagem e o deslocamento onde esses dados começam no arquivo.
Cada imagem clássica é um DIB (bitmap independente de dispositivo) — um BITMAPINFOHEADER, uma tabela de cores opcional, a máscara XOR (os pixels coloridos) e uma máscara AND de 1 bit que marca as áreas transparentes. A Microsoft aponta uma armadilha clássica: a altura no cabeçalho é a altura combinada das duas máscaras, por isso aparece como o dobro da altura real do ícone. Na mesma família, os ícones guardados dentro de arquivos EXE e DLL usam estruturas quase idênticas como recursos RT_GROUP_ICON e RT_ICON.
PNG dentro do ícone desde o Windows Vista
Ícones maiores deixavam os dados de bitmap pesados. Um artigo da MSDN Magazine de 2008 sobre a decodificação de ícones do Windows Vista explica que, ao crescerem, os bitmaps ocupavam espaço demais em disco e na memória, então a Microsoft escolheu o PNG: ícones no Windows Vista podem incorporar imagens PNG em vez de DIBs, o que tornou práticos os ícones de 256×256 em 32 bits com uma fração do tamanho. As diretrizes do Vista dizem que apenas a imagem de 256×256 deve ser compactada, mantendo os tamanhos menores na forma clássica.
Um campo de largura ou altura de um byte não comporta 256, então um 0 na entrada de diretório é lido como 256. Para softwares escritos antes do Vista, uma entrada compactada em PNG é um dado desconhecido — um dos motivos pelos quais algumas ferramentas antigas falham com arquivos .ico modernos, embora o próprio Windows os exiba sem problema.
Ferramenta antiga, ícone novo
Um editor da época do Windows XP pode abrir as pequenas entradas de bitmap de um ícone moderno, mas falhar na entrada PNG de 256×256 — ou rejeitar o arquivo inteiro. O ícone não está danificado; o programa apenas é mais antigo que o PNG dentro do ICO.
O irmão .cur para cursores
Os ponteiros do mouse usam um formato quase idêntico com a extensão .cur. O artigo da Microsoft de 1995 diz que os cursores são “muito parecidos com os ícones” — tanto que seu editor de ícones de exemplo conseguia ler arquivos .CUR relaxando uma única verificação: o tipo de cabeçalho 2 para cursores em vez de 1 para ícones. O artigo da MSDN de 2008 repete a regra: a segunda palavra é 1 para ícones e 2 para cursores.
O extra importante de um cursor é o ponto ativo (hotspot), as coordenadas do pixel que conta como a ponta do ponteiro. Como Raymond Chen descreve no The Old New Thing, os recursos de imagem de cursor começam com as coordenadas x e y do ponto ativo antes dos dados de bitmap. Cursores animados (.ani) são um formato à parte e não fazem parte desta lição.
favicon.ico na web
O formato .ico saiu da área de trabalho pelo navegador. O Internet Explorer 5, lançado em março de 1999, pedia um arquivo chamado favicon.ico na raiz de um site quando o usuário o adicionava aos Favoritos, e mostrava esse ícone na lista de Favoritos. Raymond Chen explicou mais tarde que o IE só o procurava quando uma página era adicionada aos Favoritos, não a cada visita, para não sobrecarregar os servidores. As páginas também podiam indicar outro local com um elemento link no HTML.
Hoje os navegadores aceitam outros formatos para ícones de sites, mas muitos sites ainda mantêm um favicon.ico na raiz, e a equipe do IE da Microsoft observou que a capacidade do ICO de conter vários tamanhos combina com os muitos lugares onde um ícone de site aparece — abas, favoritos, atalhos. Por isso, um .ico na sua pasta Downloads muitas vezes é só um ícone de site salvo da web.
Como converter .ico para PNG localmente
Renomear .ico para .png não funciona: o arquivo começa com o cabeçalho ICONDIR, não com uma assinatura PNG, e pode conter muitas imagens. Uma conversão de verdade lê o diretório, escolhe uma entrada — geralmente a maior —, decodifica os dados de bitmap ou PNG, aplica a máscara de transparência e grava um PNG normal que preserva o canal alfa. Escolha JPG apenas se não precisar de transparência.
O Legacy File Converter abre arquivos .ico no seu próprio PC com Windows e os converte para PNG ou JPG — nada é enviado, o que importa quando os ícones pertencem ao projeto de um cliente ou a um aplicativo interno. É uma forma tranquila de transformar arquivos legados como antigos conjuntos de ícones em imagens que qualquer aplicativo abre. Para lições vizinhas, veja BMP, PNG e WebP.
Leituras relacionadas
Pronto para abrir os seus ficheiros antigos?
Comece gratuitamente e depois desbloqueie as conversões ilimitadas com uma licença Standard de $79.95 em pagamento único. Transfira o instalador para Windows — todas as funcionalidades para até 10 ficheiros.
Avaliação gratuita
Todas as funcionalidades da aplicação · até 10 ficheiros
Windows 10 ou 11
A mesma avaliação gratuita de sempre — transfira o instalador para Windows e converta localmente no seu PC.
Instalador direto para Windows · MSI offline
É seguro? — editor, instalador e ajuda com o SmartScreen
Requer Windows 10 ou 11. Sem subscrições. 100% nativo do Windows.