Charger un fichier
  1. base64hub
  2. Outils images
  3. Base64 en ICO

Base64 en ICO

Collez le Base64 d’un favicon.ico ou d’un fichier de curseur et enregistrez-le comme une vraie icône. Un ICO peut contenir plusieurs images ; cette page montre comment savoir quelles tailles contient le vôtre.

Gratuit sans inscription, sans limites Local rien n'est envoyé ICO + CUR icônes et curseurs Mis à jour 27 oct. 2026
Entrée –Sortie –Taille –

Traité dans votre navigateur. Cette page ne peut envoyer vos données nulle part – comment le savons-nous

Comment convertir du Base64 en ICO

  1. Collez le Base64, une URI data:image/x-icon;base64,... ou la balise complète <link rel="icon" href="data:...">.
  2. Vérifiez que la ligne d’état affiche Détecté ICO et regardez l’aperçu.
  3. Appuyez sur Télécharger le fichier. Le nom par défaut est decoded.ico ; renommez-le favicon s’il est destiné à un site web.

Le champ Type MIME affiche image/x-icon, le type que la plupart des serveurs et des data URI utilisent pour les icônes.

Un fichier ICO contient plusieurs images

Contrairement au PNG ou au JPEG, un fichier ICO est un petit conteneur. Un favicon.ico typique contient des versions 16×16, 32×32 et 48×48, et les icônes d’applications Windows y ajoutent souvent du 256×256. Windows choisit la meilleure taille pour la barre des tâches, un raccourci sur le bureau ou l’Explorateur ; les navigateurs en choisissent une pour l’onglet.

Le fichier commence par un en-tête de 6 octets, suivi d’une entrée de répertoire de 16 octets par image. Le Base64 de tout ICO commence donc par AAABAA, soit les octets 00 00 01 00. Voici Afficher le dump hex pour une icône à trois tailles :

00000000  00 00 01 00 03 00 10 10  00 00 00 00 20 00 56 00  |............ .V.|
00000010  00 00 36 00 00 00 20 20  00 00 00 00 20 00 6b 00  |..6...  .... .k.|
00000020  00 00 8c 00 00 00 30 30  00 00 00 00 20 00 8c 00  |......00.... ...|
00000030  00 00 f7 00 00 00 89 50  4e 47 0d 0a 1a 0a 00 00  |.......PNG......|
OctetsValeurSignification
00 000réservé
01 001type : 1 = icône, 2 = curseur
03 003nombre d’images
10 1016, 16première image : largeur et hauteur (00 signifierait 256)
20 0032bits par pixel
56 00 00 0086taille des données de l’image en octets
36 00 00 0054début des données de l’image

Les deux entrées suivantes décrivent du 32×32 (20 20) et du 48×48 (30 30). La première image commence à l’offset 54, et le .PNG dans la colonne de texte montre qu’elle est stockée en PNG.

Du PNG ou du BMP à l’intérieur

Chaque image d’un ICO est stockée soit sous forme de fichier PNG complet, soit sous forme de bitmap sans l’en-tête de fichier BM habituel. Dans le second cas, ses données commencent par 28 00 00 00, et la hauteur indiquée dans cet en-tête de bitmap est doublée, car un masque de transparence de 1 bit suit les pixels de couleur. Les grandes images de 256×256 sont en général en PNG, car un bitmap 32 bits non compressé de cette taille dépasse 256 Ko.

Une chaîne ICO est souvent bien plus longue que ne le laisse penser l’icône, car toutes les tailles y sont et les entrées bitmap ne sont pas compressées. Pour un site web, un simple PNG de 32×32 ou un favicon SVG est en général bien plus petit. Favicon en Base64 explique comment les intégrer.

Lister et extraire les images dans le code

Cette fonction Python lit le répertoire et renvoie chaque image avec sa taille et son format :

import base64, struct

def ico_entries(b64: str):
    data = base64.b64decode(b64.split(",", 1)[-1])
    reserved, kind, count = struct.unpack_from("<HHH", data, 0)
    if reserved != 0 or kind not in (1, 2):
        raise ValueError("not an ICO or CUR file")
    for i in range(count):
        w, h, colors, _, _, bpp, size, offset = struct.unpack_from("<BBBBHHII", data, 6 + 16 * i)
        image = data[offset:offset + size]
        fmt = "png" if image.startswith(b"\x89PNG") else "bmp"
        yield {"size": f"{w or 256}x{h or 256}", "bpp": bpp, "bytes": size, "format": fmt, "data": image}

Pour l’icône ci-dessus, elle renvoie 16x16, 32x32 et 48x48, toutes en png. Écrivez le entry["data"] d’une entrée PNG dans un fichier .png et vous obtenez cette taille sous forme d’image autonome. Les entrées bitmap ont besoin d’un en-tête de fichier et du retrait du masque avant que d’autres logiciels puissent les lire : pour celles-ci, ouvrez l’ICO dans un éditeur d’icônes. Base64 en Python en dit plus sur le décodage.

Quand l’icône refuse de s’ouvrir

  • « Cela ressemble à PNG, pas à un fichier ICO ». Beaucoup de chaînes « favicon » sont de simples PNG. Les navigateurs acceptent un favicon PNG sous n’importe quel nom, mais les logiciels qui exigent un vrai fichier d’icône, comme les ressources d’applications Windows, n’acceptent pas un PNG renommé. Utilisez Télécharger en .png et gardez-le en PNG.
  • « Votre navigateur ne peut pas afficher les images ICO ». Le navigateur n’a pu dessiner aucune image du fichier, en général parce qu’une entrée est endommagée, tronquée ou utilise un format de bitmap inhabituel. Le téléchargement contient toujours les données exactes ; ouvrez-le dans un éditeur d’icônes pour voir quelle entrée pose problème.
  • Le favicon ne change pas dans le navigateur. Les navigateurs gardent les favicons dans un cache à part : vérifiez donc la nouvelle icône dans une fenêtre de navigation privée.

FAQ

Combien de tailles contient mon fichier ICO ?

Ouvrez Afficher le dump hex et lisez les octets 4 et 5 : ils contiennent le nombre d’images en little-endian, 03 00 signifie donc trois images. Chaque image a ensuite une entrée de 16 octets avec sa largeur, sa hauteur et sa position dans le fichier.

Pourquoi l'aperçu ne montre-t-il qu'une seule taille ?

Le navigateur choisit une image de l’icône à dessiner, et la ligne des dimensions indique celle-là. Les autres tailles sont toujours dans le fichier et sont enregistrées avec lui.

Puis-je extraire un seul PNG d'un ICO ?

Oui, si cette entrée est stockée en PNG, ce qui est courant pour les icônes de 256×256. Ses octets forment un fichier PNG complet ; l’extrait Python de cette page enregistre chacun d’eux.

Cela fonctionne-t-il pour les fichiers de curseur Windows ?

Oui. Un fichier .cur utilise le même conteneur avec le type 2 au lieu de 1 : son Base64 commence donc par AAACAA. Il est détecté comme CUR et enregistré avec l’extension .cur.