Quand faut-il utiliser des images en Base64 ?

Utilisez des images en Base64 (data URI) pour les toutes petites images de quelques kilooctets, comme les icônes, les petits logos et les éléments d'interface, et dans les cas où un fichier séparé est impossible : pages HTML autonomes, données JSON ou documents hors ligne. Évitez-les pour les photos, les grandes images et les images partagées entre de nombreuses pages, car le Base64 ajoute environ 33 % au poids et l'image ne peut plus être mise en cache séparément.

7 min de lecture

La règle de base

Intégrez une image directement dans le code quand le coût d'une requête séparée dépasse celui des octets en plus. Avec les connexions HTTP/2 et HTTP/3 actuelles, les requêtes supplémentaires coûtent peu, et ce seuil arrive donc vite : une bonne limite pratique est de 2 à 4 Ko par image. Les outils de build courants vont dans le même sens : Vite intègre par défaut les fichiers de moins de 4 Ko, et les asset modules de webpack ceux de moins de 8 Ko.

L'outil ci-dessous transforme un PNG (ou n'importe quelle image) en data URI. Déposez l'image ou ouvrez-la, puis choisissez comment la copier dans Copier en : Data URI, Base64 seul, une ligne CSS background-image prête à l'emploi, une balise HTML img avec largeur et hauteur, ou Markdown. Il affiche le poids de la data URI et de combien elle dépasse le fichier, et vous prévient quand le résultat est assez lourd pour ralentir une page. Les images sont converties dans votre navigateur et ne sont jamais envoyées.

Essayez ici : PNG en Base64

Ouvrir la page complète de l'outil

Ce qui se passe quand on intègre une image

Une data URI comme data:image/png;base64,iVBORw0KGgo... place les octets de l'image à l'intérieur du HTML, du CSS ou du JSON qui y fait référence. Le navigateur reçoit l'image en même temps que ce fichier, sans téléchargement séparé. C'est là tout l'avantage. Les inconvénients découlent du même principe :

  • Le poids : le Base64 écrit 3 octets sous forme de 4 caractères, l'image grossit donc d'environ un tiers. La compression Gzip ou Brotli du serveur en récupère une partie pendant le transfert, mais pas tout, et les images déjà compressées (PNG, JPG, WebP) y gagnent peu.
  • Le cache : un fichier image séparé est mis en cache une fois et réutilisé sur chaque page. Une image intégrée n'est mise en cache qu'avec le fichier qui la contient. Modifiez une ligne de CSS, et toutes les icônes intégrées sont téléchargées à nouveau.
  • Le blocage de l'affichage : le CSS bloque le premier rendu. Chaque kilooctet d'image intégré dans une feuille de style retarde le moment où quelque chose apparaît à l'écran, même si ces images sont tout en bas de la page.
  • Pas de chargement différé : loading="lazy" et les choix responsive de srcset perdent leur intérêt, puisque les octets sont déjà arrivés avec la page.
  • La maintenance : une longue chaîne Base64 est illisible en revue de code et facile à casser avec un copier-coller raté.

Guide des poids : intégrer ou fichier séparé ?

ImagePoids type du fichierEn Base64Recommandation
Icône d'interface de 16 à 24 px (PNG ou SVG)200 octets à 1 Koenviron 0,3 à 1,4 KoIntégrer, cas idéal
Petit logo ou badge2 à 5 Koenviron 2,7 à 6,7 KoIntégrer s'il sert sur une seule page ou dans une signature e-mail, sinon un fichier
Aperçu flou d'une photo300 octets à 1 Koenviron 0,4 à 1,4 KoIntégrer, puis charger la vraie photo en fichier
Logo utilisé sur toutes les pages10 à 30 Koenviron 13 à 40 KoFichier séparé, mis en cache une seule fois
Photo de produit ou image principale50 à 500 Koenviron 67 à 670 KoFichier séparé avec chargement différé ou preload

Les bons usages des images en Base64

  • Les petites icônes en CSS, comme des flèches, des coches, une case à cocher personnalisée ou la flèche d'une liste déroulante, qui doivent apparaître en même temps que les styles et ne jamais surgir en retard.
  • Les livrables en un seul fichier : un rapport HTML, une facture exportée, une page de documentation ou un prototype qui doit fonctionner ouvert depuis le disque ou envoyé en une seule pièce jointe.
  • Les API et les bases de données : le JSON n'a pas de type binaire, donc les images dans les requêtes et réponses d'API (signatures, avatars, documents scannés, images produits de certaines intégrations de places de marché) sont souvent envoyées sous forme de chaînes Base64.
  • Les aperçus basse qualité : une toute petite version floue intégrée dans le HTML s'affiche instantanément pendant le chargement de l'image complète.
  • Les icônes SVG : le SVG est du texte, il n'a donc souvent pas besoin de Base64 du tout. L'option Encodage URL au lieu du Base64 (plus court) de l'outil garde le SVG lisible et donne généralement un résultat plus court.

Quand les éviter

  • Les photos et toute image de plus de 10 Ko environ sur une page web. Utilisez un fichier classique en WebP ou AVIF, avec largeur et hauteur indiquées et chargement différé pour les images sous la ligne de flottaison.
  • La plus grande image en haut de la page (l'élément LCP). Une grosse image intégrée alourdit le HTML lui-même et retarde tout le reste ; précharger un fichier séparé est généralement plus rapide.
  • Les images répétées d'une page à l'autre, comme le logo du site ou un motif de fond. Le cache l'emporte sur l'économie d'une requête.
  • Les e-mails HTML destinés au grand public. Beaucoup de clients de messagerie n'affichent pas les images en data URI ; Gmail et Outlook pour Windows sont les plus connus. Utilisez plutôt des images hébergées ou des pièces jointes référencées par Content-ID (CID). Les data URI intégrées fonctionnent surtout dans Apple Mail et certaines applications mobiles, ce qui ne suffit pas pour une newsletter.
  • Les très grosses data URI en général. L'ancien Internet Explorer 8 les limitait à 32 Ko ; les navigateurs modernes en acceptent de bien plus grosses, mais les performances se dégradent bien avant d'atteindre une limite.

Bien s'y prendre

Réduisez l'image avant de la convertir. Chaque octet économisé est multiplié par 4/3 dans la data URI : compressez les icônes PNG, ramenez les images trop grandes à leur taille d'affichage, et pour les photos que vous devez intégrer, par exemple dans des données JSON, utilisez un JPG ou un WebP à une qualité raisonnable. Le compresseur et l'outil de redimensionnement d'images de ce site le font dans le navigateur, et vous pouvez ensuite rapporter ici le fichier allégé.

Indiquez les dimensions. Une balise img sans largeur ni hauteur fait sauter la mise en page quand l'image apparaît. C'est pour cela que la sortie HTML de cet outil inclut la largeur et la hauteur réelles de l'image.

Gardez le fichier source. Conservez le PNG ou le SVG d'origine dans votre projet et générez la data URI à partir de lui, avec votre outil de build ou avec cet outil quand quelque chose change. Ne considérez jamais la chaîne Base64 comme la version de référence.

Mesurez. Comparez la page avec et sans les images intégrées dans l'onglet Réseau des outils de développement du navigateur ou avec Lighthouse. Si le fichier CSS ou HTML grossit nettement sans que rien ne s'accélère, revenez à un fichier séparé.

Étape par étape

  1. Ajoutez l'imageDéposez un PNG, un JPG, un SVG ou une autre image sur l'outil, ou ouvrez-la depuis votre appareil.
  2. Vérifiez le poidsLisez le poids de la data URI et de combien elle dépasse le fichier. Un avertissement apparaît quand elle est assez lourde pour ralentir les pages.
  3. Choisissez la sortieDans Copier en, choisissez Data URI, Base64, CSS, HTML ou Markdown. Pour un SVG, activez Encodage URL au lieu du Base64 pour un résultat plus court.
  4. Copiez et collezCopiez le code et collez-le dans votre feuille de style, votre modèle, votre JSON ou votre README.

Questions fréquentes

Les images en Base64 sont-elles plus rapides que les fichiers images ?

Seulement pour les très petites images, en dessous de 2 à 4 Ko environ, où économiser une requête compte plus que le poids supplémentaire. Pour les images plus grandes, un fichier séparé est plus rapide et peut être mis en cache.

De combien une image en Base64 est-elle plus lourde ?

D'environ 33 % par rapport au fichier d'origine, car 3 octets deviennent 4 caractères. Une icône de 3 Ko devient environ 4 Ko de texte.

Les images en Base64 fonctionnent-elles dans les e-mails ?

Pas de façon fiable. Gmail et Outlook pour Windows, entre autres, n'affichent pas les images en data URI. Utilisez des images hébergées ou des pièces jointes CID pour l'e-mail.

Le Base64 est-il mauvais pour le référencement ?

Pas directement, mais une image intégrée n'a pas d'adresse propre : elle a peu de chances d'apparaître dans la recherche d'images comme un fichier classique au nom descriptif, et un HTML lourd ralentit la page. Utilisez des fichiers classiques pour les images que vous voulez voir trouvées.

Mon image est-elle envoyée quand je la convertis ici ?

Non. L'image est lue et convertie dans votre navigateur et n'est jamais envoyée à un serveur. L'outil est gratuit et fonctionne hors ligne une fois la page chargée.

Puis-je retransformer une chaîne Base64 en image ?

Oui. Collez le texte Base64 ou la data URI complète dans le même outil. L'image s'affiche en aperçu et Télécharger l'enregistre avec la bonne extension.