
Base64 : encoder et décoder texte, fichiers et images en ligne
Convertir du texte, un fichier ou une image en Base64 (et inversement) sans backend — data URI CSS, pièce jointe email, payload JWT. 100 % local.
Pourquoi Base64 revient dans chaque stack
Un background CSS qui ne peut pas fetcher un fichier, une pièce MIME qui doit voyager en ASCII, un segment JWT coincé entre deux points, une option WordPress sérialisée puis enveloppée en Base64 : aucun de ces cas n'est un problème de chiffrement. Ce sont des problèmes de transport. L'encodeur/décodeur Base64 en ligne transforme du texte Unicode en alphabet ASCII-safe et inversement, entièrement dans l'onglet. Le convertisseur image vers Base64 fait de même pour un PNG, JPEG, GIF, WebP ou SVG local — en data URI ou en Base64 brut. Rien n'est uploadé. Base64 n'est ni un hash, ni un chiffre, ni un substitut à TLS. C'est une façon de faire passer des octets dans des canaux qui n'aiment que lettres, chiffres, +, / et le padding. Le cluster vit sur le hub outils d'encodage.
Quand encoder dans le navigateur, et quand s'en passer
L'encodeur est un scalpel pour une chaîne que vous pouvez coller, pas un CDN.
Si la réponse dépend d'un fichier que le navigateur ne devrait pas tenir, ou de la crypto, restez en CI ou dans un gestionnaire de secrets.
Les erreurs Base64 qui coûtent un après-midi
Quiconque lit la chaîne peut la décoder. Base64 n'a ni clé, ni contrôle d'intégrité, ni confidentialité. Un jeton qui paraît opaque dans un log reste du clair après un décodage. Si les octets doivent rester secrets, chiffrez (ou ne les mettez pas dans le payload). S'ils doivent rester authentiques, signez — HMAC ou signature JWT, pas Base64 lui-même.
RFC 4648 définit deux alphabets. Le Base64 standard utilise + et / et garde en général le padding =. Le Base64 URL-safe (JWT, cookies, chemins) utilise - et _ et omet typiquement le padding. L'option URL-safe de FastMinify fait les deux substitutions et retire le padding à l'encodage. En décodage URL-safe, l'alphabet est remappé et le padding restauré. Si l'option ne correspond pas à la chaîne, vous obtenez une erreur d'entrée invalide — pas un décodage « à peu près ».
Un JWT compact, c'est trois segments Base64URL séparés par des points : header.payload.signature. Les points ne sont pas du Base64. L'outil Base64 décode une chaîne d'alphabet, pas un jeton à points. Le message d'erreur de la page le dit : collez seulement les caractères encodés, sans points ; pour un JWT, copiez chaque partie entre les points — ou, plus simple, ouvrez le décodeur JWT et inspectez header plus payload en une étape.
Base64 gonfle les données binaires d'environ 33 % (3 octets deviennent 4 caractères ASCII). Un JPEG de 200 Kio devient ~267 Kio de CSS. Ce CSS n'a pas de cache séparé, bloque le parsing, et se bat contre le multiplexage HTTP/2. Les data URI gagnent pour les icônes minuscules qui coûteraient autrement une requête. Elles perdent pour les visuels hero, les photos produit, et tout ce que vous minifiez déjà comme fichier.
Base64 standard, URL-safe, data URI — choisir la représentation
Les octets ne changent pas. L'orthographe si. Le Base64 standard est ce qu'émettent le MIME email et la plupart des API. Le Base64 URL-safe est ce dont ont besoin JWT, cookies signés et segments de chemin pour que + et / ne collisionnent pas avec la syntaxe de requête. Une data URI, c'est du Base64 standard avec le préfixe data:<mime>;base64, pour qu'un navigateur traite la chaîne comme une ressource.
Trois outils, trois entrées. L'encodeur texte enchaîne UTF-8 puis Base64 sur une chaîne (collage ou fichier texte). Il n'interprète pas un PNG comme des pixels. Le convertisseur image lit les octets du fichier, vérifie le MIME (PNG, JPEG, GIF, WebP, SVG — MIME vide refusé, pas de sniff silencieux), plafonne à 32 Mio, et émet une data URI ou du Base64 brut. L'aperçu passe par un élément img uniquement : le SVG n'est jamais injecté dans le DOM comme markup. Pour un SVG-as-CSS avec choix utf-8 ou Base64 et un snippet CSS dédié, utilisez SVG vers data URI sur le hub SVG (entrée SVG 512 Kio — un autre plafond, un autre métier).
On mélange ces outils parce qu'ils « rendent une chaîne plus sûre ». Ils résolvent des collisions différentes. URL encode percent-encode les caractères réservés d'une URI. Les entités HTML échappent le markup pour qu'une chaîne tienne dans un attribut. Un hash (SHA-256, HMAC) est de l'intégrité ou de l'authenticité à sens unique — voir hash/HMAC sur le hub encodage, pas cet article. Base64 ne change que la façon d'écrire les octets.
Ce que Base64 fait vraiment à vos octets
Base64 prend 24 bits (3 octets) et les écrit en 4 caractères d'un alphabet à 64 symboles. C'est pourquoi la sortie est plus longue : 4/3, environ 33 % de plus, plus le padding si la longueur d'entrée n'est pas un multiple de 3. La taxe est le but — vous échangez de la taille contre un alphabet qui survit à l'email, aux chaînes JSON et au CSS. C'est l'inverse de la minification. Si le payload est du JSON que vous livrez en HTTP, minifiez le JSON d'abord, puis n'encodez que si une couche d'enveloppe exige de l'ASCII ; voir le guide de minification JSON.
Avant
Après
Le btoa natif de JavaScript opère sur une chaîne binaire (valeurs 0–255). Passez-lui café et il lève une exception ou produit un mensonge, selon le moteur. FastMinify encode les octets UTF-8 avec TextEncoder, puis Base64 — le même contrat que Node Buffer.from(text, 'utf8').toString('base64'). Le décodage inverse avec TextDecoder. Emoji et CJK survivent. Si vous décodez un blob qui n'a jamais été du texte UTF-8 (un PNG, un flux gzip), vous obtenez des caractères de remplacement, pas un fichier — ce blob va dans image-to-base64 ou un dump hex, pas dans un champ texte.
Avant
Après
Quand la longueur en octets n'est pas un multiple de 3, le Base64 standard ajoute = ou == pour que la longueur de chaîne soit un multiple de 4. Les contextes URL-safe (JWT, certains cookies) omettent ce padding parce que = est un délimiteur de query. L'encodage URL-safe FastMinify le retire ; le décodage URL-safe le remet avant atob. Exemples RFC classiques : f → Zg==, fo → Zm8=, foo → Zm9v.
Avant
Après
Encoder dans l'onglet : texte, puis un fichier, puis une image
Ouvrez l'encodeur/décodeur Base64. Collez le texte (ou uploadez un fichier texte — plafond client 32 Mio, même famille que les autres sélections de fichiers du site). Choisissez Encode ou Decode. Laissez URL-safe éteint pour MIME, les payloads data-URI et la plupart des exemples d'API. Activez-le pour les segments JWT, les cookies signés, et tout ce qui ira dans un chemin. Chargez l'exemple si vous voulez seulement voir le pipeline. Tout reste dans l'onglet.
Étape 1 — Coller ou uploader la source
Texte Unicode pour encoder ; une chaîne d'alphabet Base64 pour décoder. N'incluez ni les points d'un JWT ni un préfixe data:.
Étape 2 — Régler URL-safe selon le producteur
On : - _ et pas de padding. Off : + / et padding =. Un décalage est une erreur, pas un décodage partiel.
Étape 3 — Copier le résultat
Si vous avez décodé du JSON minifié, envoyez-le au formateur JSON ou au déminificateur JSON en ligne — format uniquement, les noms déjà perdus le restent.
Ouvrez l'outil image vers Base64. Déposez un PNG, JPEG, GIF, WebP ou SVG (max 32 Mio). Choisissez data URI pour CSS url() et img src, ou Base64 brut pour enchaîner vers un autre outil. L'aperçu passe par un élément img ; le SVG n'est pas monté en DOM. Les MIME vides ou exotiques sont refusés — l'outil ne devine pas. Après une icône minuscule, vous pouvez coller l'URI dans le CSS. Après une photographie, en général non.
L'encodage n'est souvent qu'une étape d'un debug plus long. Le hub encodage garde les voisins à un clic.
Quand le navigateur suffit — et quand il faut encore un REPL
Si la chaîne vit déjà dans un script, le Buffer de Node suit le même chemin UTF-8 puis Base64 que FastMinify. Utilisez base64url quand le consommateur est une lib JWT.
Exemple de base
Le couple natif btoa / atob est une API de chaîne binaire. Enveloppez-le avec TextEncoder/TextDecoder, sinon tout ce qui sort du Latin-1 sera corrompu. C'est exactement l'enveloppe que l'outil texte FastMinify applique déjà.
Exemple de base
Un PEM local, une fixture binaire, ou un job CI qui ne doit pas ouvrir un navigateur : openssl reste le bon marteau. FastMinify ne remplace pas un pipeline qui hashe ou signe déjà des fichiers sur disque.
Exemple de base
Pas d'install, pas d'upload, texte UTF-8 plus un convertisseur image dédié avec un plafond honnête de 32 Mio et une option URL-safe. Contrepartie : l'outil texte n'est pas un encodeur de fichier binaire ; HEIC/PDF hors scope de l'outil image ; la vérification JWT est une autre page. Servez-vous-en pour inspecter, enseigner, et débloquer une machine sans Node — puis gardez openssl ou Buffer en CI.
Conclusion
Base64 est un adaptateur ennuyeux et essentiel : des octets en entrée, un alphabet ASCII-safe en sortie, 33 % plus gros, entièrement réversible. FastMinify fait tourner cet adaptateur dans le navigateur — texte UTF-8 avec alphabet URL-safe optionnel, et un convertisseur image séparé (PNG, JPEG, GIF, WebP, SVG, 32 Mio) qui émet une data URI ou du Base64 brut sans injecter de SVG dans le DOM. Il ne chiffre pas, il ne hashe pas, et il ne remplace ni jwt-verify ni un CDN. Encodez le snippet, décodez la ligne de log, inlinez l'icône, puis arrêtez-vous. Commencez sur le hub outils d'encodage, et ouvrez JWT decode quand la chaîne a deux points.
Articles connexes

Compilez un extrait SCSS ou LESS (variables, mixins) en CSS dans le navigateur, sans npm run build — pour une revue, un snippet ou une machine sans Node.

Un ratio de contraste texte/fond insuffisant est l'erreur d'accessibilité la plus fréquente sur le web. Vérifiez AA/AAA en collant deux couleurs, sans plugin ni extension.

Meta description 155 caractères, title ~60, tweet 280 : comptez mots et caractères dans le navigateur avec le compteur FastMinify — presets SEO, temps de lecture, 100 % local.