> base64 | decode | PNG <
// Décodez les chaînes Base64 et URI de données en images PNG — alpha préservé, aperçu instantané, téléchargement en un clic
Le PNG décodé apparaîtra ici
Parfait au bit près
Le PNG décodé est octet-à-octet identique à l'original — alpha, palette et profil de couleur effectuent tous un aller-retour intact.
Décodage local
La charge utile Base64 est décodée dans votre navigateur avec atob(). Aucun téléversement serveur, aucune journalisation de vos octets PNG.
Aperçu en direct
Voyez l'image décodée, ses dimensions et sa taille de fichier approximative instantanément avant le téléchargement.
// À PROPOS DE BASE64 VERS PNG
Ce que cet outil accepte
- >URI de données : data:image/png;base64,iVBORw0KGgo…
- >Charge utile Base64 PNG brute (commence par iVBORw0KGgo)
- >Base64 avec espaces / sauts de ligne intégrés
- >Alphabet standard RFC 4648 (+/, padding = optionnel)
- >Base64 URL-safe (-_) — normalisé automatiquement lors du décodage
- >Collage Unicode-aware — les BOM sont supprimés
Cas d'usage courants
- >Sauvegarder une capture d'écran depuis une URI de données d'un inspecteur DOM
- >Extraire un logo d'un arrière-plan CSS en URI de données
- >Récupérer une image depuis une réponse d'API JSON
- >Restaurer une image depuis une colonne TEXT d'une base de données
- >Récupérer un PNG depuis une partie MIME d'e-mail
- >Inspecter une icône intégrée dans un SVG en ligne
- >Déboguer une balise <img src="data:image/png;base64,…"> cassée
Comment fonctionne le décodage Base64 → PNG
Le décodeur retire tout préfixe d'URI de données, normalise les espaces et les caractères URL-safe, puis appelle atob() pour convertir chaque groupe de 4 caractères en 3 octets binaires. Le tableau d'octets est enveloppé dans un Blob avec le type MIME image/png, reçoit une URL d'objet et est affiché dans un élément <img>. Parce que Base64 est bijectif avec le binaire, la sortie est bit à bit identique au PNG original — un SHA-256 du fichier décodé correspond à l'original.
Exemple d'URI de données PNG:
data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8/5+hHgAHggJ/PchI7wAAAABJRU5ErkJggg==
Performances et compatibilité
- >Le décodage est en O(n) sur la longueur de la charge utile — gère 100 Mo+ sans problème
- >Utilise l'atob() natif du navigateur — aucun shim JS lourd
- >Prend en charge l'APNG multi-images quand le visualiseur le permet
- >Fonctionne dans tous les navigateurs modernes (Chrome, Firefox, Safari, Edge)
- >Aperçu adapté au mobile avec zoom par pincement
- >Le téléchargement utilise une URL Blob — aucun aller-retour serveur intermédiaire
// COMMENT DÉCODER BASE64 EN PNG
Étape 1 : Coller
Collez la chaîne Base64 ou l'URI de données complète dans le champ d'entrée
Étape 2 : Décoder
Cliquez sur [DECODE] — le PNG est affiché dans l'aperçu instantanément
Étape 3 : Inspecter
Vérifiez les dimensions, la taille du fichier et le canal alpha avant d'enregistrer
Étape 4 : Télécharger
Cliquez sur [DOWNLOAD .png] pour enregistrer sur disque un PNG identique au bit près
// EXEMPLES DE CODE — BASE64 VERS PNG
JavaScript (Navigateur)
// Decode Base64 → PNG Blob → download link
const b64 = 'iVBORw0KGgoAAAANSUhEUg...';
const bin = atob(b64);
const arr = new Uint8Array(bin.length);
for (let i = 0; i < bin.length; i++) arr[i] = bin.charCodeAt(i);
const blob = new Blob([arr], { type: 'image/png' });
const url = URL.createObjectURL(blob);
window.open(url);
Décoder une charge utile Base64 brute dans un Blob et l'ouvrir. Pour une URI de données complète, la balise <img> l'accepte directement.
Node.js
const fs = require('fs');
const b64 = 'iVBORw0KGgoAAAANSUhEUg...';
fs.writeFileSync('out.png', Buffer.from(b64, 'base64'));
Ligne unique utilisant le Buffer intégré de Node pour décoder le Base64 et écrire un fichier PNG.
Python
import base64
with open('out.png', 'wb') as f:
f.write(base64.b64decode('iVBORw0KGgoAAAANSUhEUg...'))
Bibliothèque standard uniquement — décode le texte Base64 en octets PNG.
PHP
<?php
file_put_contents('out.png', base64_decode('iVBORw0KGgoAAAANSUhEUg...'));
Ligne unique utilisant les intégrés base64_decode() et file_put_contents().
Shell (macOS / Linux)
echo 'iVBORw0KGgoAAAANSUhEUg...' | base64 -d > out.png
POSIX base64 -d / -D lit le texte depuis stdin et écrit le PNG décodé sur stdout.
// FAQ — BASE64 VERS PNG
Q : Qu'est-ce que le décodage Base64 vers PNG ?
R : Il inverse un PNG encodé en Base64 pour le ramener à sa forme binaire d'origine. La chaîne que vous collez est constituée de 4 caractères ASCII pour 3 octets binaires ; le décodeur lit 4 caractères à la fois, applique la recherche dans l'alphabet RFC 4648, et écrit 3 octets par groupe jusqu'à ce que la chaîne soit épuisée. Le tableau d'octets résultant est un fichier PNG complet et valide que vous pouvez prévisualiser, enregistrer ou envoyer partout où un PNG normal est accepté.
Q : Comment savoir si la chaîne Base64 est vraiment un PNG ?
R : Les 8 premiers octets de tout PNG sont la signature magique 89 50 4E 47 0D 0A 1A 0A. Encodés en Base64, ces 8 octets commencent toujours par iVBORw0KGgo. Donc toute chaîne Base64 qui commence par iVBORw0KGgo est un PNG. D'autres formats ont des préfixes différents : /9j/ pour JPEG, R0lGOD pour GIF, UklGR pour WebP. Notre décodeur détecte automatiquement les PNG à partir de ce préfixe magique et se rabat sur le type MIME dans l'URI de données s'il est présent.
Q : Puis-je coller une URI de données ou uniquement du Base64 brut ?
R : Les deux. Si votre chaîne commence par data:image/png;base64,, le décodeur retire le préfixe automatiquement. Si vous collez uniquement la portion charge utile, nous déduisons le type MIME PNG à partir des octets magiques. Les espaces, sauts de ligne, retours chariot et tabulations sont normalisés avant le décodage, vous pouvez donc coller une réponse JSON formatée sans rien casser.
Q : Le PNG décodé est cassé — pourquoi ?
R : Causes courantes :
• Chaîne tronquée — le Base64 a été coupé quelque part (par exemple, par une limite de saut de ligne dans votre source de copie). Un PNG Base64 complet se termine par RU5ErkJggg== (le bloc IEND) ; si cela manque, le fichier est incomplet.
• Alphabet URL-safe — si la chaîne utilise -_ au lieu de +/ (base64url), notre outil la normalise ; d'autres décodeurs peuvent la rejeter.
• Double-encodé — le PNG a été encodé en Base64 deux fois. Décodez-le à nouveau.
• Pas un PNG — la charge utile est en réalité JPEG ou WebP. Utilisez notre décodeur Base64 → Image générique qui détecte automatiquement tout format.
Q : Le décodage en PNG entraîne-t-il une perte de qualité ou de transparence ?
R : Non. Base64 est une transformation bit à bit réversible. Le PNG décodé est octet-à-octet identique à l'original : canal alpha, palette (PLTE), transparence (tRNS), profil de couleur (iCCP/sRGB), gamma (gAMA) et dimensions pixel physiques (pHYs) survivent tous. Un hachage SHA-256 du fichier décodé correspond au hachage de l'original. Si vous voyez une différence, le changement s'est produit avant l'encodage, pas pendant l'aller-retour Base64.
Q : Puis-je décoder Base64 en PNG depuis le terminal ?
R : Oui. Sur macOS et Linux : echo 'iVBORw0KGgo…' | base64 -d > out.png
(les anciennes versions de macOS utilisent -D.)
Sur Windows PowerShell : [IO.File]::WriteAllBytes('out.png', [Convert]::FromBase64String('iVBORw0KGgo…'))
Si la chaîne est une URI de données complète, retirez d'abord le préfixe data:image/png;base64, (la plupart des shells acceptent sed 's|^data:.*base64,||').
Q : Quelle est la taille maximale de l'entrée PNG Base64 ?
R : Nous décodons dans le navigateur, donc la limite est la mémoire de votre appareil — confortablement 100 Mo+ sur ordinateur de bureau. Un PNG décodé de 100 Mo aurait besoin d'environ 135 Mo de texte Base64, que la plupart des navigateurs collent sans se plaindre. Si vous travaillez avec des PNG scientifiques ou médicaux très volumineux, envisagez plutôt un décodage côté serveur, car les performances de atob() du navigateur se dégradent près du plafond de mémoire.
Q : Ce décodeur fonctionne-t-il hors ligne ?
R : Oui. Tout le décodage utilise les API natives atob() + Uint8Array + Blob, qui sont intégrées à tout navigateur moderne. Une fois la page chargée, vous pouvez vous déconnecter du réseau et continuer à décoder. Aucun service externe, aucun aller-retour serveur, aucune analytique sur votre charge utile d'image.
Q : Quelle est la différence entre un PNG Base64 et un fichier PNG normal ?
R : Ils contiennent exactement les mêmes octets. Un fichier .png normal est le binaire brut ; une chaîne PNG Base64 est ce même binaire réécrit dans l'alphabet ASCII à 64 caractères. La forme Base64 est 33 % plus grande mais sûre à insérer dans les attributs HTML, les chaînes JSON, les url() CSS et les e-mails. Vous ne pouvez pas mettre d'octets PNG bruts dans du HTML — ils contiennent des octets nuls et des caractères à bit de poids fort qui cassent les analyseurs de texte. Base64 est la solution de contournement.
Q : Un PNG Base64 se charge-t-il plus rapidement qu'un fichier .png séparé ?
R : Seulement pour de minuscules images. Base64 économise un aller-retour HTTP, qui peut prendre 50 à 100 ms sur une connexion fraîche — utile pour les icônes d'interface critiques de moins de 4 Ko. Pour tout ce qui est plus grand, un fichier .png séparé servi avec des en-têtes de cache à longue durée gagne presque toujours parce que (a) gzip compresse mal le texte Base64, (b) les URI de données ne peuvent pas être mises en cache indépendamment, et (c) elles bloquent l'analyse HTML. Utilisez Base64 pour les micro-ressources au-dessus de la ligne de flottaison, pas pour les images hero.
Q : Puis-je décoder Base64 en PNG sans téléverser les données ?
R : Oui — cet outil s'exécute à 100 % côté client. Votre chaîne Base64 est décodée en JavaScript sur votre appareil, enveloppée dans un Blob localement et affichée via URL.createObjectURL(). Rien n'est téléversé. Vous pouvez le vérifier en ouvrant l'onglet Réseau des dev-tools du navigateur pendant le décodage — aucune requête n'est émise. Exécuter tout le flux hors ligne (mode avion) fonctionne aussi après le chargement initial de la page.
Q : Comment décoder Base64 en PNG dans du code de production ?
R : En Node.js : fs.writeFileSync('out.png', Buffer.from(b64, 'base64')). En Python : open('out.png','wb').write(base64.b64decode(b64)). En Go : b, _ := base64.StdEncoding.DecodeString(b64); os.WriteFile("out.png", b, 0644). En Java : Files.write(Path.of("out.png"), Base64.getDecoder().decode(b64)). En Rust : std::fs::write("out.png", base64::decode(b64)?)?. En PHP : file_put_contents('out.png', base64_decode($b64)). La bibliothèque standard de tout runtime embarque un décodeur Base64 — vous avez rarement besoin d'une dépendance tierce.
Q : Base64 vers PNG vs Base64 vers JPG — lequel utiliser ?
R : Utilisez Base64 → PNG quand la chaîne Base64 commence par iVBORw0KGgo (ou que l'URI de données dit data:image/png;base64,). Utilisez Base64 → JPG quand la chaîne commence par /9j/4AAQ ou /9j/2wC. En cas de doute, utilisez notre décodeur Base64 → Image générique qui inspecte les octets magiques et choisit automatiquement le bon format. Ne forcez jamais un format qui ne correspond pas à la charge utile — le fichier décodé aura des octets valides mais sera illisible.