So berechnen Sie die Base64-Größe
- Lassen Sie Bytes → Base64-Länge ausgewählt, tippen Sie die Originalgröße ein und wählen Sie die Einheit. Unter Einheiten wählen Sie 1 KB = 1000 B oder 1 KiB = 1024 B, je nachdem, wie Ihre Größe gemessen wurde.
- Oder legen Sie eine Datei auf dem Feld ab. Gelesen wird nur ihre Größe; der Inhalt der Datei wird nie geöffnet.
- Lesen Sie die Tabelle: Länge mit und ohne Padding, der Overhead in Prozent, ein eigener Umbruch (stellen Sie Zeilenlänge und Zeilenumbruch ein), MIME-Zeilen für E-Mail, ein PEM-Inhalt, eine
data:-URI mit dem MIME-Typ der Datei und ein JSON-String mit Anführungszeichen. - Für die Gegenrichtung wechseln Sie zu Base64-Länge → Bytes, geben die Länge ein, sagen, ob sie Zeilenumbrüche enthält, und wählen den Fall für Padding: bekannt, unbekannt (0–2 ×) oder keines. Wenn Sie das Base64 selbst einfügen, erhalten Sie eine exakte Antwort.
Die Live-Formel unter der Tabelle wiederholt die Rechnung mit Ihren eigenen Zahlen. Das ist praktisch für einen Code-Kommentar oder ein Ticket.
Die Formel und warum es 33 % sind
Base64 macht aus je 3 Bytes 4 Zeichen, von denen jedes 6 Bit trägt. Die letzte Gruppe wird mit = auf volle 4 Zeichen aufgefüllt, also gilt:
padded = 4 × ⌈n ÷ 3⌉
unpadded = ⌈4n ÷ 3⌉
decoded = (characters × 3 ÷ 4) − number of "=" signs
Bei großen Eingaben ist das ein fester Zuwachs von 33,3 %. Bei winzigen dominiert das Padding: Ein Byte wird zu vier Zeichen, ein Overhead von 300 %. Die folgende Tabelle wurde mit demselben Code erzeugt, den der Rechner ausführt:
| Original | Base64 mit Padding | Ohne Padding | MIME (76 + CRLF) | PEM (64 + LF) |
|---|---|---|---|---|
| 1 Byte | 4 | 2 | 4 | 4 |
| 100 Bytes | 136 | 134 | 138 | 138 |
| 1.000 Bytes (1 KB) | 1.336 | 1.334 | 1.370 | 1.356 |
| 1.024 Bytes (1 KiB) | 1.368 | 1.366 | 1.402 | 1.389 |
| 1.048.576 Bytes (1 MiB) | 1.398.104 | 1.398.102 | 1.434.896 | 1.419.949 |
| 5.000.000 Bytes (5 MB) | 6.666.668 | 6.666.667 | 6.842.106 | 6.770.834 |
Zeilenumbrüche werden zwischen den Zeilen gezählt, nach der letzten Zeile keiner. Manche Encoder, zum Beispiel Pythons base64.encodebytes, beenden jede Zeile einschließlich der letzten mit \n, was einen weiteren Umbruch hinzufügt. Für eine Data-URI kommt das Präfix hinzu: data:image/png;base64, hat 22 Zeichen.
Größenlimits einplanen
Typische Limits, die Sie prüfen sollten, bevor etwas schiefgeht:
- Limits für den Request-Body. Nimmt ein Endpunkt 10.000.000 Bytes an und kommt die Datei in ein JSON-Feld, darf die Datei höchstens etwa 7.500.000 Bytes groß sein, abzüglich des restlichen JSON. Wechseln Sie in den Rückwärtsmodus, geben Sie das Limit ein und ziehen Sie Ihre Feldnamen ab.
- Datenbankspalten und Umgebungsvariablen. Ein
VARCHAR(255)fasst Base64 von höchstens 189 Bytes; 190 Bytes brauchen bereits 256 Zeichen. - E-Mail. MIME-Anhänge werden bei 76 Zeichen mit CRLF umbrochen und wachsen dadurch insgesamt um etwa 37 %. Ein Größenlimit für Nachrichten lässt daher nur Dateien mit etwa 73 % seiner Größe zu. Details unter Base64 in E-Mails.
- Data-URIs in HTML oder CSS. Jedes eingebettete Bild kostet ein Drittel mehr als die Datei und lässt sich nicht separat cachen. Performance von Data-URIs erklärt, wann es sich trotzdem lohnt.
Base64-Länge im Code
Jede Sprache kann sie berechnen, ohne etwas zu kodieren:
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))
Das gibt 1398104 1398102 aus. In JavaScript ist die Länge mit Padding 4 * Math.ceil(n / 3). Um einen vorhandenen String zu prüfen, liefert len(s) * 3 // 4 - s.count("=") die dekodierte Größe, nachdem Sie die Zeilenumbrüche entfernt haben. Meldet der Rückwärtsmodus eine unmögliche Länge, etwa einen Rest von 1 bei Division durch 4, ist der String beschädigt: Lassen Sie ihn durch den Base64-Validator laufen, um herauszufinden, wo.
Häufige Fragen
Wie lautet die Formel für die Base64-Länge?
Mit Padding sind es 4 × ⌈n ÷ 3⌉ Zeichen für n Bytes, ohne Padding ⌈4n ÷ 3⌉. Zeilenumbrüche, ein data:-Präfix oder JSON-Anführungszeichen kommen noch hinzu.
Wie groß ist eine Datei, nachdem sie aus Base64 dekodiert wurde?
Nehmen Sie die Anzahl der Base64-Zeichen (ohne Zeilenumbrüche), multiplizieren Sie mit 3, teilen Sie durch 4 und ziehen Sie für jedes = am Ende ein Byte ab. Ein String mit 1.400.000 Zeichen dekodiert je nach Padding zu 1.049.998 bis 1.050.000 Bytes.
Wie groß darf eine Datei höchstens sein, die ich über eine API mit 10 MB Request-Limit sende?
Etwa 7,5 MB, wenn das Limit 10.000.000 Bytes beträgt, denn 10.000.000 × 3 ÷ 4 = 7.500.000, abzüglich der JSON-Felder und Header rund um den String. Für den genauen Wert nutzen Sie den Rückwärtsmodus mit dem Limit als Länge.
Hebt gzip den Base64-Overhead auf?
Bei der Übertragung größtenteils. Gzip presst Base64 wieder auf ungefähr die Größe der kodierten Bytes zusammen: 1.000.000 Zufallsbytes ergeben 1.333.336 Base64-Zeichen, die mit gzip 1.009.976 Bytes groß sind. Limits, die den Text selbst zählen, etwa ein JSON-Feld, eine Datenbankspalte oder ein unkomprimierter Request, sehen trotzdem das volle Drittel mehr.