Décodage Base64

Entrée Base64
0 caractères

Décodage Base64 en ligne gratuit pour convertir des chaînes Base64 en texte lisible. Prise en charge UTF-8, ASCII et ISO-8859-1, compatible URL-safe et MIME. Idéal pour le débogage d'API et la lecture de logs.

Recommandations connexes

Qu'est-ce que le décodage Base64 ?

Le décodage Base64 est l'opération inverse du codage Base64 : il transforme une chaîne de caractères ASCII (A-Z, a-z, 0-9, +, /, =) en données binaires d'origine (octets bruts), qui sont ensuite réinterprétées dans un jeu de caractères donné (UTF-8, ASCII, ISO-8859-1) pour produire du texte lisible. Le processus inverse l'opération consistant à regrouper les bits par paquets de 6, puis à les reconvertir en octets de 8 bits.

**Le décodage Base64 n'est pas du déchiffrement**. Base64 est un schéma d'encodage réversible et public, sans aucune clé secrète. Toute personne disposant d'une chaîne Base64 peut la décoder immédiatement. Si vous voyez un champ Base64 dans une réponse API, un en-tête HTTP ou un fichier de configuration, vous pouvez le décoder librement pour lire le contenu original. Pour protéger des données sensibles, utilisez un véritable algorithme de chiffrement tel que AES.

Il existe trois variantes principales à connaître avant de décoder : **Standard Base64** (RFC 4648 §4, utilise + / et le padding =), **Base64URL** (RFC 4648 §5, utilise - _ et omet généralement le padding), et **MIME Base64** (RFC 2045, insère un retour à la ligne tous les 76 caractères). Un grand nombre d'erreurs de décodage (InvalidCharacterError, padding manquant) viennent d'une confusion entre ces variantes.

**Le choix du jeu de caractères** est crucial à l'étape finale : si l'original est en UTF-8 (contenant par exemple du français, des caractères accentués, du chinois ou des emoji), vous devez décoder en UTF-8, sinon vous verrez des caractères remplacés par des « � » ou des hiéroglyphes. Pour du texte purement anglais ou des données binaires brutes, ASCII ou ISO-8859-1 (Latin-1) suffit.

Notre outil utilise l'API native **atob** du navigateur, combinée à une logique de transcodage UTF-8 sécurisée, pour garantir que le français, les emojis et tous les caractères multi-octets sont correctement décodés. Tous les calculs s'exécutent localement dans votre navigateur — aucune donnée n'est envoyée à un serveur.

Cas d'utilisation

  • Décoder une réponse d'API contenant un champ Base64 pour lire son contenu original
  • Restaurer des données Base64 présentes dans des logs applicatifs ou système
  • Lire une valeur encodée en Base64 dans un fichier de configuration (YAML, JSON, .env)
  • Diagnostiquer une erreur de décodage Base64 (padding manquant, caractères invalides, mauvais jeu)
  • Décoder le header ou le payload d'un JWT en mode URL-Safe pour inspecter les claims
  • Récupérer le contenu lisible d'un token OAuth ou d'un en-tête HTTP Authorization Basic
  • Convertir un texte MIME Base64 multi-lignes (pièce jointe e-mail) en contenu exploitable

Comment utiliser

  1. Collez la chaîne Base64 à décoder dans la zone de saisie
  2. Sélectionnez le jeu de caractères (UTF-8, ASCII ou ISO-8859-1) et la variante (Standard, URL-Safe, MIME)
  3. L'outil décode automatiquement la chaîne et affiche le texte en clair
  4. Copiez le résultat décodé ou téléchargez-le en .txt pour vos notes ou votre débogage

Fonctionnalités

  • Conversion bidirectionnelle instantanée : décodage en temps réel avec debounce de 300 ms, sans clic manuel
  • Trois jeux de caractères : UTF-8, ASCII, ISO-8859-1 pour couvrir le français, l'anglais et les données multilingues
  • Compatibilité URL-safe et MIME : prise en charge automatique des variantes Base64URL (- _) et MIME (RFC 2045)
  • Détection des caractères invalides : affichage de la position exacte de l'erreur pour corriger rapidement la chaîne
  • Copie et téléchargement en un clic : copie du résultat dans le presse-papiers ou export en fichier .txt
  • Trois variantes d'entrée : Standard, URL-Safe et MIME pour décoder toutes les formes de Base64
  • Traitement 100 % local : tout le décodage s'effectue dans le navigateur, aucune donnée envoyée sur un serveur

Exemples de code

Décodage Base64 en JavaScript (avec prise en charge UTF-8)

// Decode UTF-8 safe (handles accents, emoji, Chinese, etc.)
function b64Decode(str) {
  // 1. Convert Base64 to binary string (Latin-1)
  const binary = atob(str);
  // 2. Convert binary string to percent-encoded UTF-8
  const percent = Array.from(binary)
    .map(c => '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2))
    .join('');
  // 3. Decode as UTF-8
  return decodeURIComponent(percent);
}

// URL-Safe decode (for JWT / OAuth)
function b64UrlDecode(str) {
  // Re-add padding
  str = str.replace(/-/g, '+').replace(/_/g, '/');
  while (str.length % 4) str += '=';
  return b64Decode(str);
}

console.log(b64Decode('SGVsbG8g8J+YiQ==')); // Hello 😀
console.log(b64UrlDecode('SGVsbG8g8J-YiQ')); // Hello 😀

Décodage Base64 en Python

import base64

# Standard decode (UTF-8)
decoded = base64.b64decode('SGVsbG8g8J+YiQ==').decode('utf-8')
print(decoded)  # Hello 😀

# URL-Safe decode (for JWT / OAuth)
url_decoded = base64.urlsafe_b64decode('SGVsbG8g8J-YiQ==').decode('utf-8')
print(url_decoded)  # Hello 😀

# Decode without padding (common in JWT)
def b64_decode_no_pad(s):
    s += '=' * (-len(s) % 4)
    return base64.urlsafe_b64decode(s).decode('utf-8')

print(b64_decode_no_pad('SGVsbG8g8J-YiQ'))  # Hello 😀

Décodage Base64 en Java

import java.nio.charset.StandardCharsets;
import java.util.Base64;

public class Base64DecodeExample {
    public static void main(String[] args) {
        String encoded = "SGVsbG8g8J+YiQ==";

        // Standard decode
        String decoded = new String(
            Base64.getDecoder().decode(encoded), StandardCharsets.UTF_8);
        System.out.println(decoded); // Hello 😀

        // URL-Safe decode (for JWT / URL)
        String urlSafe = new String(
            Base64.getUrlDecoder().decode(encoded), StandardCharsets.UTF_8);
        System.out.println(urlSafe);

        // MIME decode (handles line breaks)
        String mimeDecoded = new String(
            Base64.getMimeDecoder().decode(encoded), StandardCharsets.UTF_8);
        System.out.println(mimeDecoded);
    }
}

FAQ

Pourquoi le décodage Base64 renvoie-t-il InvalidCharacterError ?

Les causes courantes sont : présence de caractères parasites (espaces, sauts de ligne, guillemets), nombre incorrect de = de padding, ou utilisation d'une variante URL-safe (- _) confondue avec la variante standard (+ /). Nettoyez d'abord la chaîne avec un outil de prétraitement, puis réessayez.

Que faire si le texte décodé affiche des hiéroglyphes ?

Le jeu de caractères est probablement mal choisi. Si le texte d'origine est en français ou contient des accents, sélectionnez UTF-8. Pour des données purement anglaises ou binaires, essayez ASCII ou ISO-8859-1 (Latin-1). Notre outil affiche en temps réel le rendu selon le jeu choisi.

Quelle est la différence entre Base64 URL-safe et Base64 standard ?

Le Base64 URL-safe (RFC 4648 §5) remplace + et / par - et _, et omet en général le padding =. Avant de décoder une chaîne URL-safe, il faut remplacer - par + et _ par /, puis compléter le padding = pour que la longueur soit un multiple de 4.

Le décodage Base64 est-il adapté au débogage d'API ?

Oui, c'est même l'un des usages les plus fréquents. De nombreuses réponses d'API, tokens OAuth, paramètres de callback et logs de middleware encapsulent leur contenu en Base64. Le décodage permet de lire directement la donnée originale sans outil externe.

Comment décoder le header ou le payload d'un JWT ?

Sélectionnez le mode URL-Safe dans l'outil, puis collez la première partie (header) ou la deuxième partie (payload) du JWT, séparées par des points. La signature (troisième partie) ne doit pas être décodée pour être vérifiée — utilisez plutôt un outil dédié de validation JWT.

L'outil envoie-t-il mes données sur un serveur ?

Non. Le décodage s'effectue intégralement dans votre navigateur via l'API native atob. Aucune donnée ne quitte votre machine : vous pouvez vérifier dans l'onglet Réseau des outils de développement qu'aucune requête externe n'est émise.

Quelle est la limite de taille d'une chaîne Base64 à décoder ?

L'API atob du navigateur accepte des chaînes très longues (plusieurs mégaoctets) sans problème sur les navigateurs modernes. En pratique, la limite vient de la mémoire disponible dans l'onglet. Pour des fichiers de plusieurs Mo, préférez des outils dédiés ou une exécution côté serveur.

Que faire si la chaîne contient des sauts de ligne ?

Les sauts de ligne apparaissent surtout dans les exports MIME (RFC 2045) ou les copier-coller depuis des e-mails. Supprimez-les ("\n", "\r") avant de décoder, ou activez le mode MIME qui les ignore automatiquement. Notre outil retire les espaces et sauts de ligne en option.

Le Base64 est-il un chiffrement ?

Non. Base64 est un encodage réversible sans clé : n'importe qui peut décoder la chaîne. Si vous avez besoin de protéger un mot de passe ou un token sensible, utilisez un vrai algorithme de chiffrement (AES, RSA) ou un transport sécurisé (HTTPS).

Dépannage

Pourquoi atob() renvoie-t-il InvalidCharacterError ?

Cette erreur signifie que la chaîne contient un caractère absent de l'alphabet Base64 (A-Z, a-z, 0-9, +, /, =). Les coupables les plus fréquents sont les espaces, tabulations, sauts de ligne et guillemets parasites, ou encore l'utilisation accidentelle d'une chaîne URL-safe (- _) dans une fonction standard. Nettoyez d'abord la chaîne, ou utilisez le mode URL-Safe si nécessaire.

Le résultat s'affiche avec des hiéroglyphes ou des « � »

Le décodage Base64 produit une suite d'octets bruts ; c'est l'étape d'interprétation qui échoue. Si l'original est en UTF-8 (français avec accents, emoji, chinois, etc.), sélectionnez le jeu de caractères UTF-8. Pour des données purement binaires ou anglo-saxonnes, essayez ASCII ou ISO-8859-1.

Le décodage renvoie une chaîne plus courte que prévu

Le padding = manque ou est incorrect. Une chaîne Base64 valide doit avoir une longueur multiple de 4. Ajoutez autant de = que nécessaire à la fin (1, 2 ou 0 caractères), puis réessayez. Notre outil ajoute automatiquement le padding manquant en mode URL-Safe.

Comment décoder une chaîne URL-safe issue d'un JWT ?

Sélectionnez le mode URL-Safe (ou Base64URL) dans l'outil, puis collez directement la première partie (header) ou la deuxième partie (payload) du JWT. L'outil remplacera automatiquement - par + et _ par /, et ajoutera le padding = manquant. La troisième partie (signature) ne doit pas être décodée pour être validée.

Le décodage fonctionne en ligne mais pas dans mon code

Vérifiez trois points : (1) le jeu de caractères attendu (UTF-8 dans 99 % des cas) ; (2) la présence de sauts de ligne MIME non retirés ; (3) la confusion entre bibliothèque standard et URL-safe (en Python : base64.b64decode vs base64.urlsafe_b64decode). Activez également les logs détaillés côté serveur pour identifier la ligne fautive.

Erreur « Incorrect padding » en Python

Python est plus strict que JavaScript sur le nombre de caractères. Une chaîne de longueur non multiple de 4 provoque l'erreur binascii.Error: Incorrect padding. Solution : ajoutez le padding manquant avec `s += '=' * (-len(s) % 4)` avant d'appeler base64.b64decode.

Glossaire

Base64 (RFC 4648)
Schéma de codage binaire-vers-texte utilisant un alphabet de 64 caractères imprimables (A-Z, a-z, 0-9, +, /), défini officiellement par la RFC 4648 §4. Le décodage consiste à regrouper les caractères par paquets de 4 pour reconstituer 3 octets d'origine.
Base64URL (URL-safe Base64)
Variante définie par la RFC 4648 §5. Les caractères + et / sont remplacés par - et _, et le padding = est généralement omis. C'est la forme utilisée dans les tokens JWT, OAuth PKCE, les paramètres d'URL et les noms de fichiers.
MIME Base64 (RFC 2045)
Variante conforme à la RFC 2045, qui insère un saut de ligne (CRLF) tous les 76 caractères. Conçue à l'origine pour le transport des pièces jointes par e-mail via SMTP, qui imposait une limite de longueur par ligne.
Padding (=)
Caractère = ajouté en fin de chaîne Base64 pour que la longueur totale soit un multiple de 4. Le Base64 standard l'utilise systématiquement, le Base64URL l'omet en général. Une erreur de padding est une cause fréquente d'InvalidCharacterError.
InvalidCharacterError
Erreur levée (notamment par la fonction atob en JavaScript) lorsqu'une chaîne contient un caractère absent de l'alphabet Base64 : espaces, retours à la ligne non retirés, guillemets, ou caractères URL-safe (- _) traités comme du Base64 standard.
btoa / atob
API natives du navigateur pour coder (btoa, binary to ASCII) et décoder (atob, ASCII to binary) en Base64. Elles ne manipulent que des chaînes Latin-1 (ISO-8859-1) : pour décoder du texte UTF-8, il faut d'abord décoder avec atob puis réinterpréter les octets via TextDecoder ou unescape/decodeURIComponent.
Encodage de caractères (UTF-8, ASCII, ISO-8859-1)
Façon dont une séquence d'octets est interprétée comme du texte. UTF-8 est l'encodage universel (1 à 4 octets par caractère), ASCII ne couvre que 128 caractères sur 7 bits, ISO-8859-1 (Latin-1) couvre 256 caractères sur 8 bits et convient aux langues occidentales sans accents étendus.
JWT (JSON Web Token)
Jeton signé composé de trois parties (header.payload.signature) encodées en Base64URL. Le header et le payload peuvent être librement décodés en Base64URL pour lire les claims ; la signature ne doit jamais être décodée pour être validée.

Comparaison des trois variantes Base64

CaractéristiqueStandardURL-SafeMIME
Caractères spéciaux+ /- _+ /
Padding (=)UtiliséGénéralement omisUtilisé
Sauts de ligneAucunAucunTous les 76 caractères
NormeRFC 4648 §4RFC 4648 §5RFC 2045
Cas d'usage typiquesData URI, encodage généralJWT, paramètres d'URL, noms de fichiersPièces jointes e-mail, transport SMTP

Causes fréquentes d'erreur de décodage

SymptômeCause probableSolution
InvalidCharacterErrorCaractère hors alphabet Base64 (espace, saut de ligne, guillemet)Nettoyer la chaîne avant de décoder
Texte final tronqué ou illisiblePadding = manquant ou en nombre incorrectCompléter le padding jusqu'à un multiple de 4
Caractères remplacés par des symbolesChaîne URL-safe (- _) traitée comme Base64 standardReconvertir - en + et _ en /, puis ajouter le padding
Hiéroglyphes ou « � » dans le résultatMauvais jeu de caractères (UTF-8 lu en Latin-1 ou l'inverse)Sélectionner le jeu de caractères adapté à l'original
Erreur côté serveur / APISaut de ligne MIME non retiré avant traitementSupprimer les \n et \r du contenu MIME avant décodage

Authoritative References