Data URL : data:text/html;base64 et ses cousins expliqués

Data URL (URI data:)

Data URI et data:text/html;base64 expliqués, avec encodeur | We.Inc

Comment fonctionnent les URL data: : la syntaxe, base64 ou encodage pourcent, le surcoût d'un tiers en taille, pourquoi data:text/html ne s'ouvre pas dans un onglet, plus un encodeur et un décodeur.

Une data URL transporte un fichier entier dans l'adresse elle-même : data:, un type de média facultatif, ;base64 si les octets sont encodés en base64, une virgule, puis le contenu. data:text/html;base64,PGgxPkhpPC9oMT4= est une minuscule page web. Le base64 alourdit le contenu d'environ un tiers, et les navigateurs refusent d'ouvrir les pages data: comme onglet de premier niveau.

Anatomie d'une data URL

Les data URL sont pratiques pour les petites icônes, les arrière-plans CSS, les fixtures de test et les téléchargements générés, et une source fréquente de confusion quand quelqu'un colle une longue chaîne data:text/html dans la barre d'adresse et que rien ne se passe. Ci-dessous, vous pouvez encoder n'importe quel texte en data URL, en décoder une, et voir exactement ce qu'elle coûte en octets par rapport à l'original.

Questions fréquentes

Pourquoi data:text/html;base64 ne s'ouvre-t-il pas quand je le colle dans la barre d'adresse ?

Les navigateurs modernes bloquent la navigation de premier niveau vers les URL data: pour lutter contre l'hameçonnage, car une page data pourrait imiter n'importe quel site en masquant sa véritable origine. Le contenu fonctionne toujours dans une iframe, un élément img ou un lien de téléchargement.

De combien le base64 alourdit-il un fichier ?

D'environ un tiers. Le base64 écrit chaque groupe de trois octets sous forme de quatre caractères : une image de 30 KB devient donc environ 40 KB de texte avant toute compression. L'augmentation exacte dépend de la longueur et du padding.

Comment reconvertir une data URL base64 en image ?

Collez-la dans le décodeur de cette page pour la prévisualiser, ou placez-la directement dans un img src. Pour l'enregistrer en fichier, utilisez notre outil image vers base64 dans l'autre sens, ou chargez la data URL avec JavaScript et enregistrez le Blob obtenu.

Y a-t-il une limite de taille ?

MDN indique 512 MB pour Chromium et Firefox et 2,048 MB pour Safari. Bien avant cela, les data URL énormes rendent le HTML et le CSS lents à analyser et impossibles à mettre en cache : limitez-les à quelques kilo-octets.

Quelle origine a une page en data URL ?

Une origine opaque qui lui est propre, et non l'origine de la page qui l'a créée. Un script dans une iframe data: est donc traité comme un étranger par la page qui la contient, et non comme une partie du même site.

Quand l'intégration aide et quand elle nuit

Base64 ou encodage pourcent ?

Erreurs fréquentes

Les data URL dans du vrai code

Arrière-plan SVG en CSS, encodé en pourcent

Les guillemets simples dans le SVG évitent le conflit avec les guillemets doubles autour de url(), et le # de la couleur s'écrit %23.

Une petite image intégrée

Le même principe fonctionne dans une balise img. Gardez un texte alt, comme pour toute image.

Créer une data URL à partir d'un fichier en JavaScript

FileReader.readAsDataURL produit la chaîne data: complète, type de média compris, pour un fichier choisi par le visiteur.

Reconvertir une data URL en Blob

fetch comprend les URL data:, c'est le moyen le plus court de récupérer les octets.

Encodeur et décodeur de data URL

Contenu à encoder

Type de média

Data URL en base64

Data URL encodée en pourcent

Original {n} octets, URL base64 {v} caractères

URL encodée en pourcent {v} caractères

Affiché dans un cadre sandboxé

Décoder une data URL

Collez une data URL

Type de média : {v}

Encodage : {v}

Taille décodée : {n} octets

Cela ne ressemble pas à une data URL valide. Il faut data:, un type facultatif, une virgule et les données.

Aperçu de l'image

Texte décodé

Copier

Commencer gratuitement · Sans carte bancaire

Voir aussi: Guides

Produit

Pour qui

Fonctionnalités

Ressources

Entreprise

Plan du site