À propos de cet outil
Qu'est-ce qu'un data URI ?
Un data URI transporte un fichier dans l'adresse elle-même : data:image/png;base64,iVBORw0KGgo…. Après data: viennent le type de média, puis un marqueur ;base64 facultatif qui indique comment le contenu est encodé, puis le contenu après une virgule. Partout où un navigateur accepte l'URL d'une image, comme src en HTML ou url() en CSS, il accepte un data URI et affiche l'image sans requête supplémentaire. Le format est défini par la RFC 2397.
Ce que coûte une image intégrée
Base64 écrit chaque groupe de 3 octets sous forme de 4 caractères : l'image encodée est donc environ 33 % plus grande que le fichier. Une image intégrée est aussi liée au document qui la contient : le navigateur ne peut pas la mettre en cache séparément, et elle est transférée de nouveau avec chaque page ou feuille de style qui la répète.
Les data URI conviennent donc bien à quelques petites images, comme une icône d'un ou deux kilo-octets ou une image de substitution, et mal aux photographies. L'outil vous avertit dès que le résultat dépasse environ 10 KB.
Le SVG n'a pas besoin de Base64
Un fichier SVG étant du texte, il peut entrer dans un data URI sous forme de texte : data:image/svg+xml;charset=utf-8,…. Seuls certains caractères doivent être encodés en pourcentage : ceux qui mettraient fin à l'URL ou aux guillemets qui l'entourent, et ceux qu'une URL ne peut pas contenir tels quels. Un # non échappé, fréquent dans les valeurs de couleur, ouvre le fragment de l'URL et tronque l'image. Cet outil échappe %, #, <, >, ", &, la barre oblique inverse, les blancs et les caractères de contrôle, et écrit les caractères hors ASCII sous forme de séquences d'échappement UTF-8. Le décodage du résultat redonne le même texte SVG. La forme texte n'est proposée que si le fichier est de l'UTF-8 valide.
La forme encodée pour URL reste lisible et, comme il s'agit toujours de texte brut, gzip et Brotli la compressent généralement mieux que le Base64. Laquelle des deux formes est la plus courte avant compression dépend du fichier : l'outil affiche donc les deux tailles.
Fonctionnement
L'image est lue par votre navigateur et encodée par JavaScript sur votre appareil. L'autre sens fonctionne de la même façon : le data URI collé est décodé dans la page et vous est proposé sous forme de fichier. Ni l'image ni le data URI ne sont envoyés.