Encodeur et décodeur Base64
Encode, décode et inspecte du Base64, du Base64URL et des data URIs dans ton navigateur.
Colle un mur de Base64 sorti d'un webhook et vois ce qui se cache dedans. Cet encodeur et décodeur Base64 tourne entièrement dans ton navigateur : encode du texte ou un petit fichier local, décode du Base64 standard ou URL-safe pour revenir aux bytes, et inspecte le padding, le nombre de bytes, l'UTF-8 décodé et un data URI optionnel. Il signale les mots qui sentent le secret, affiche un aperçu hex des bytes quand la sortie n'est pas du texte lisible, et gère les alphabets plus, slash, tiret et underscore ainsi que le padding en equals qui fait trébucher tant de décodeurs. Un rappel qu'il garde toujours en avant : le Base64, c'est de l'encodage, pas du chiffrement, donc ça ne cache rien.
100% dans votre navigateur. Rien de ce que vous tapez ne quitte cette page.
Atelier local Base64, Base64URL et data URI
Un webhook te balance un mur de Base64. Toi, tu veux juste savoir ce qui se cache dedans. C'est pile ce moment-là qui m'a poussé à le construire. Colle du texte ou dépose un petit fichier pour encoder ; colle du Base64 standard ou URL-safe pour récupérer les bytes. Tu verras le padding, le nombre de bytes, l'UTF-8 décodé, et un data URI si tu le demandes. Un truc que je n'arrête pas de répéter, et honnêtement je crois que les gens finissent par ne plus l'entendre : le Base64, c'est de l'encodage, pas du chiffrement. Ça ne cache rien.
Tout tourne dans ton navigateur, le texte comme les fichiers. Ne confonds pas le Base64 avec du secret. Et garde tes identifiants actifs ou tes tokens de prod hors de toute capture d'écran que tu t'apprêtes à partager.
Le Base64 sert au transport, pas au secret
L'encodeur et décodeur Base64 peint des bytes bruts avec un petit jeu de caractères ASCII lisibles. C'est toute l'astuce. Du coup il débarque partout où des bytes doivent voyager dans un canal qui ne gère que du texte : corps d'API, pièces jointes d'e-mails, ces vieux exemples de Basic Auth, les moitiés header et payload d'un JWT, les petits data URIs, des blobs de config, des lignes de log. Plein de systèmes brassent du texte sans broncher mais s'étranglent dès qu'on leur tend du binaire. Le Base64 fait le pont. Le souci, c'est que le pont marche dans les deux sens, et n'importe qui détenant la chaîne encodée la décode en une seconde. Appuie-toi dessus comme sur un mot de passe et tu vas passer une mauvaise journée.
Je voulais un truc que je garderais vraiment épinglé dans un onglet, donc celui-ci penche vers l'inspection plutôt que de juste recracher une chaîne. Oui, il fait du Base64 standard, du Base64URL, du padding optionnel, du texte UTF-8, des petits fichiers locaux, un aperçu des bytes, des data URIs. La partie qui m'intéresse, c'est le pourquoi. Ce token est-il URL-safe ? Le padding manque-t-il ? Combien de bytes a-t-on réellement sous la main ? Et le blob décodé, c'est du texte lisible, ou juste du binaire déguisé en texte.
Comment utiliser le résultat sans se faire avoir
L'encodage, c'est le sens facile. Tu prends la sortie, tu la colles dans un exemple d'API, une fixture de test ou un petit data URI, et voilà. C'est au décodage que je lève le pied. Jette un oeil à la liste des problèmes avant de faire confiance à l'aperçu du texte, parce que ce qui en sort peut être du JSON, un identifiant, du binaire brut, ou un format propre à une appli qui ressemble juste à du charabia. Ça sent le segment de JWT ? Passe plutôt le token entier dans un vrai décodeur JWT, cet outil-ci ne te montre qu'un morceau. Et si ça s'avère être un secret, nettoie-le avant qu'il n'atterrisse dans une capture ou un fil Slack. J'ai vu des tokens actifs fuiter exactement comme ça, plus d'une fois.
- Standard Base64 s'en tient aux lettres, aux chiffres, au plus, au slash, plus le padding optionnel en equals collé à la fin.
- Base64URL remplace le plus et le slash par le tiret et l'underscore. C'est celui qu'il te faut dès qu'une URL ou un token entre en jeu.
- Padding fait trébucher les gens tout le temps. Certains décodeurs l'exigent purement et simplement. Plein de formats de token URL-safe le suppriment complètement.
- La sortie en data URI est top pour un petit exemple inline. Pour tout ce que tu appellerais un vrai asset, c'est une mauvaise idée.
- Vue bytes est l'onglet que j'ouvre quand la sortie décodée n'est pas de l'UTF-8 lisible et qu'il me faut le hex réel sous les yeux.
Exemples courants de debug Base64
C'est là qu'il gagne sa place chez moi. Un webhook te dépose un payload en Base64 ? Décode-le, vois si tu tiens du JSON, du texte simple ou du binaire. Une API veut du Basic Auth ? Encode ta chaîne de test username:password et garde le vrai secret hors des logs. Un segment de token plein de tirets et d'underscores ? Bascule en mode URL-safe, sinon le décodage te lâche direct. Et le data URI qui refuse obstinément de s'afficher. Neuf fois sur dix c'est le type MIME qui est faux, ou une étape de copier-coller qui t'a discrètement esquinté le padding. C'est peut-être juste moi, mais ce dernier cas m'a bouffé plus d'après-midi que je n'aimerais l'avouer.
Questions fréquentes
Le Base64, c'est du chiffrement ?
Non. Soyons clairs là-dessus. Le Base64, c'est de l'encodage. Aucune clé secrète n'intervient à aucun moment du processus, donc ça ne protège absolument rien de ton contenu.
Pourquoi le Base64 finit-il parfois par des signes égal ?
Du padding. Ce n'est que ça. Leur boulot, c'est d'arrondir la sortie en un bloc propre de quatre caractères. Beaucoup de formats URL-safe les enlèvent pour gagner deux ou trois bytes, puis les remettent discrètement au décodage.
Je peux encoder des fichiers ?
Oui. Les petits. Le fichier est lu directement ici dans ton navigateur et transformé en Base64, donc rien ne part nulle part. Pour tout ce qui est vraiment gros, un outil en ligne de commande vaut mieux que de poireauter devant un textarea.
C'est quoi le Base64 URL-safe ?
Même idée, deux fauteurs de troubles remplacés : + devient - et / devient _. Pourquoi se donner cette peine ? Parce que ces deux caractères ont déjà un sens dans les URLs et les noms de fichiers. Cette variante évite que ta chaîne encodée casse à la seconde où elle atterrit dans l'un d'eux.