Comment calculer la taille d’un Base64
- Gardez Octets → longueur Base64 sélectionné, saisissez la Taille d’origine et choisissez l’Unité. Sous Unités, choisissez 1 Ko = 1000 o ou 1 Kio = 1024 o selon la façon dont votre taille a été mesurée.
- Ou déposez un fichier dans la zone. Seule sa taille est lue ; le contenu du fichier n’est jamais ouvert.
- Lisez le tableau : longueur avec et sans remplissage, surcoût en pourcentage, découpage personnalisé (réglez Longueur de ligne et Saut de ligne), lignes d’e-mail MIME, corps PEM, data URI avec le type MIME du fichier et chaîne JSON avec guillemets.
- Pour l’autre sens, passez à Longueur Base64 → octets, saisissez la longueur, indiquez si elle inclut les sauts de ligne et choisissez le cas de Remplissage : connu, inconnu (0–2 ×) ou absent. Coller le Base64 lui-même donne une réponse exacte.
La formule affichée sous le tableau reprend le calcul avec vos propres chiffres, ce qui est pratique pour un commentaire de code ou un ticket.
La formule, et pourquoi 33 %
Base64 transforme chaque groupe de 3 octets en 4 caractères de 6 bits chacun. Le dernier groupe est complété par des = jusqu’à 4 caractères, d’où :
padded = 4 × ⌈n ÷ 3⌉
unpadded = ⌈4n ÷ 3⌉
decoded = (characters × 3 ÷ 4) − number of "=" signs
Pour de grandes entrées, c’est une augmentation fixe de 33,3 %. Pour de très petites, le remplissage domine : un octet devient quatre caractères, soit un surcoût de 300 %. Le tableau ci-dessous a été produit avec le même code que celui du calculateur :
| Original | Base64 avec remplissage | Sans remplissage | MIME (76 + CRLF) | PEM (64 + LF) |
|---|---|---|---|---|
| 1 octet | 4 | 2 | 4 | 4 |
| 100 octets | 136 | 134 | 138 | 138 |
| 1 000 octets (1 Ko) | 1 336 | 1 334 | 1 370 | 1 356 |
| 1 024 octets (1 Kio) | 1 368 | 1 366 | 1 402 | 1 389 |
| 1 048 576 octets (1 Mio) | 1 398 104 | 1 398 102 | 1 434 896 | 1 419 949 |
| 5 000 000 octets (5 Mo) | 6 666 668 | 6 666 667 | 6 842 106 | 6 770 834 |
Les sauts de ligne sont comptés entre les lignes, sans saut après la dernière. Certains encodeurs, comme base64.encodebytes en Python, terminent chaque ligne par \n, dernière comprise, ce qui ajoute un saut de plus. Pour une data URI, ajoutez le préfixe : data:image/png;base64, fait 22 caractères.
Anticiper les limites de taille
Les limites courantes à vérifier avant que quelque chose n’échoue :
- Limites de taille des requêtes. Si un endpoint accepte 10 000 000 octets et que le fichier va dans un champ JSON, le fichier peut faire au plus 7 500 000 octets environ, moins le reste du JSON. Passez en mode inverse, saisissez la limite et retirez vos noms de champs.
- Colonnes de base de données et variables d’environnement. Un
VARCHAR(255)contient le Base64 de 189 octets au maximum ; 190 octets demandent déjà 256 caractères. - E-mail. Les pièces jointes MIME sont coupées à 76 caractères avec CRLF, elles grossissent donc d’environ 37 % au total. Une limite de taille de message n’admet ainsi que des fichiers d’environ 73 % de cette taille. Base64 dans les e-mails donne les détails.
- Data URI dans le HTML ou le CSS. Chaque image intégrée coûte un tiers de plus que le fichier et ne peut pas être mise en cache séparément. Performances des data URI explique quand cela reste rentable.
La longueur Base64 dans le code
Tous les langages peuvent la calculer sans rien encoder :
import math
def b64_len(n, padded=True):
return 4 * math.ceil(n / 3) if padded else math.ceil(4 * n / 3)
print(b64_len(1048576), b64_len(1048576, padded=False))
Ce code affiche 1398104 1398102. En JavaScript, la longueur avec remplissage vaut 4 * Math.ceil(n / 3). Pour une chaîne que vous avez déjà, len(s) * 3 // 4 - s.count("=") donne la taille décodée, une fois les sauts de ligne retirés. Si le mode inverse signale une longueur impossible, comme un reste de 1 dans la division par 4, la chaîne est abîmée : passez-la au validateur Base64 pour savoir où.
FAQ
Quelle est la formule de la longueur Base64 ?
Avec remplissage, 4 × ⌈n ÷ 3⌉ caractères pour n octets. Sans remplissage, ⌈4n ÷ 3⌉. Les sauts de ligne, un préfixe data: ou les guillemets JSON s’y ajoutent.
Quelle taille fait un fichier une fois décodé depuis le Base64 ?
Prenez le nombre de caractères Base64 (sans les sauts de ligne), multipliez par 3, divisez par 4 et retirez un octet par = final. Une chaîne de 1 400 000 caractères se décode en 1 049 998 à 1 050 000 octets selon son remplissage.
Quel est le plus gros fichier que je peux envoyer à une API limitée à 10 Mo par requête ?
Environ 7,5 Mo si la limite est de 10 000 000 octets, car 10 000 000 × 3 ÷ 4 = 7 500 000, moins les champs JSON et les en-têtes qui entourent la chaîne. Utilisez le mode inverse avec la limite comme longueur pour obtenir le chiffre exact.
La compression gzip annule-t-elle le surcoût du Base64 ?
Sur le réseau, en grande partie. Gzip ramène le Base64 à peu près à la taille des octets qu’il encode : 1 000 000 octets aléatoires donnent 1 333 336 caractères Base64, qui pèsent 1 009 976 octets une fois compressés. Les limites qui portent sur le texte lui-même, comme un champ JSON, une colonne de base de données ou une requête non compressée, voient toujours le tiers en plus.