In UTF-8 belegt ein Zeichen, genauer ein einzelner Unicode-Codepunkt, 1 bis 4 Bytes. Die Buchstaben a bis z und A bis Z, Ziffern und die Satzzeichen aus dem ASCII-Bereich brauchen 1 Byte, ä, ö, ü, Ä, Ö, Ü und ß brauchen 2, das Eurozeichen 3 und ein Emoji wie 😀 4. Ein sichtbares Zeichen kann aber aus mehreren Codepunkten bestehen und dann mehr Bytes belegen.
Diese Einteilung stammt aus RFC 3629, der Spezifikation von UTF-8 (gelesen am 29. Oktober 2026). Dort hängt die Länge eines Zeichens von seinem Codepunkt ab. Zeichen von U+0000 bis U+007F, also der klassische US-ASCII-Umfang, kommen mit einem Byte aus. Von U+0080 bis U+07FF sind es 2 Bytes, von U+0800 bis U+FFFF 3 Bytes und von U+10000 bis U+10FFFF 4 Bytes. Bei Emojis heißt es „die meisten“, weil manche Emojis aus mehreren Codepunkten bestehen. Dann werden die Bytes aller beteiligten Codepunkte zusammengezählt.
Bytes pro Zeichen in UTF-8 für deutsche Texte
Buchstaben, Ziffern, Umlaute und ß brauchen in UTF-8 1 oder 2 Bytes, mehr brauchen nur einzelne Sonderzeichen wie ẞ, € oder Emojis. Die Tabelle zeigt typische Beispiele mit Codepunkt und Länge in UTF-8. Die Werte haben wir aus den Bereichen in RFC 3629 abgeleitet.
| Zeichen | Codepunkt | Bytes in UTF-8 |
|---|---|---|
| a, Z, 7, ! | U+0061, U+005A, U+0037, U+0021 | 1 |
| ä, ö, ü, ß | U+00E4, U+00F6, U+00FC, U+00DF | 2 |
| Ä, Ö, Ü | U+00C4, U+00D6, U+00DC | 2 |
| ẞ (großes Eszett) | U+1E9E | 3 |
| € | U+20AC | 3 |
| 😀 | U+1F600 | 4 |
| ä als a + U+0308 | U+0061 U+0308 | 3 |
Beim Eszett gibt es eine Besonderheit. Das kleine ß liegt bei U+00DF und braucht 2 Bytes. Das große ẞ liegt bei U+1E9E, also im Bereich ab U+0800, und braucht deshalb 3 Bytes. Die letzte Zeile zeigt einen Sonderfall, den wir weiter unten erklären. Ein ä kann nämlich auch aus zwei Codepunkten bestehen.
Wie UTF-8 ein Zeichen in Bytes kodiert
UTF-8 verteilt die Bits eines Codepunkts nach einem festen Muster auf 1 bis 4 Bytes. RFC 3629 legt dieses Muster in Abschnitt 3 als Tabelle fest. Bei einem Ein-Byte-Zeichen ist das oberste Bit 0, die übrigen 7 Bits tragen die Zeichennummer. Bei längeren Folgen verrät das erste Byte die Länge. Es beginnt mit so vielen Einsen, wie die Folge Bytes hat, danach folgt eine 0. Jedes weitere Byte beginnt mit 10 und trägt 6 Bits der Zeichennummer.
| Codepunkt (hex) | Bytefolge in UTF-8 (binär) | Bytes |
|---|---|---|
| 0000 0000 bis 0000 007F | 0xxxxxxx | 1 |
| 0000 0080 bis 0000 07FF | 110xxxxx 10xxxxxx | 2 |
| 0000 0800 bis 0000 FFFF | 1110xxxx 10xxxxxx 10xxxxxx | 3 |
| 0001 0000 bis 0010 FFFF | 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx | 4 |
Die Zeilen schließen einander aus. Jeder zulässige Codepunkt hat deshalb genau eine gültige Kodierung. Am ä lässt sich das nachrechnen. Es hat den Codepunkt U+00E4, binär 11100100. Der Wert fällt in die zweite Zeile, die Platz für 11 Bits bietet. Auf 11 Bits aufgefüllt und aufgeteilt ergibt das 00011 und 100100. Mit den Präfixen werden daraus 110 00011 und 10 100100, hexadezimal C3 A4. Das ä belegt also 2 Bytes.
Das Eurozeichen hat den Codepunkt U+20AC, binär 0010 0000 1010 1100, und gehört in die dritte Zeile. Die 16 Bits werden in Gruppen von 4, 6 und 6 Bits aufgeteilt, also 0010, 000010 und 101100. Mit den Präfixen ergibt das 1110 0010, 10 000010 und 10 101100, hexadezimal E2 82 AC. Das € belegt damit 3 Bytes.
Bytes eines Textes am Beispiel „Grüße aus Köln“ berechnen
Die Byte-Größe eines Textes ist die Summe der Bytes aller seiner Zeichen, Leerzeichen eingeschlossen. „Grüße aus Köln“ hat 14 Zeichen, rechnerisch aber 17 Bytes.
- Zeichen zählen. „Grüße“ hat 5 Zeichen, „aus“ 3 und „Köln“ 4. Dazu kommen 2 Leerzeichen, zusammen sind es 14 Zeichen.
- Zeichen mit 2 Bytes markieren. Im Satz stecken ü, ß und ö, also 3 solche Zeichen.
- Bytes addieren. Die übrigen 11 Zeichen brauchen je 1 Byte, die drei Sonderzeichen zusammen 6 Bytes. Zusammen ergibt das 11 + 6 = 17 Bytes.
Schneller geht es mit einer Faustregel. Nimm die Zeichenzahl und addiere für jeden Umlaut und jedes ß ein Byte, hier also 14 + 3 = 17. Das funktioniert, solange alle anderen Zeichen aus dem ASCII-Bereich stammen und die Umlaute als einzelner Codepunkt gespeichert sind. Ein € schlägt mit zwei zusätzlichen Bytes zu Buche, ein Emoji wie 😀 mit drei. Emojis, die aus mehreren Codepunkten bestehen, belegen mehr.
Die 17 Bytes haben wir von Hand aus den Bereichen in RFC 3629 berechnet. Probier denselben Satz im Textgrößenrechner für UTF-8-Bytes aus und vergleiche das Ergebnis mit der Rechnung.
Warum dasselbe ä 2 oder 3 Bytes groß sein kann
Ein ä kann als ein einzelner Codepunkt gespeichert sein (2 Bytes) oder als a plus kombinierendes Trema (U+0308, 1 + 2 = 3 Bytes). Beides sieht gleich aus, ist aber unterschiedlich groß.
Laut dem Unicode-Standardanhang UAX #15 (gelesen am 29. Oktober 2026) sind beide Formen kanonisch äquivalent. Sie stehen also für dasselbe abstrakte Zeichen. Der Anhang zeigt das am Ç, das sich auch als C mit kombinierender Cedille schreiben lässt. Er beschreibt zwei Normalformen, die hier wichtig sind. NFC zerlegt einen Text und setzt ihn anschließend wieder zusammen. Das ä steht danach als einzelner Codepunkt U+00E4 da. NFD zerlegt vollständig, aus dem ä werden a und U+0308.
Beim Zählen der Bytes macht das einen Unterschied. „Köln“ belegt in der zusammengesetzten Form 5 Bytes, mit zerlegtem ö sind es 6. Auf dem Bildschirm siehst du keinen Unterschied. Weicht eine Messung um einzelne Bytes von deiner Rechnung ab, kommt eine zerlegte Schreibweise als Ursache infrage.
Wo Byte-Grenzen bei Texten eine Rolle spielen
Byte-Grenzen sind überall dort wichtig, wo ein System den Speicherplatz statt der Zeichenzahl begrenzt, etwa bei Cookies, Datenbankfeldern, Formularen und Schnittstellen. Ein Text, der nach Zeichen knapp in eine Grenze passt, kann sie in Bytes überschreiten, sobald Umlaute oder ein € darin vorkommen.
Für Cookies nennt der Standard eine konkrete Zahl. Browser sollen laut RFC 6265, Abschnitt 6.1 (gelesen am 29. Oktober 2026) mindestens 4096 Bytes pro Cookie unterstützen, gezählt über Name, Wert und Attribute. Außerdem sieht der Abschnitt mindestens 50 Cookies pro Domain und mindestens 3000 Cookies insgesamt vor. Das sind Untergrenzen und keine Obergrenzen. Der RFC beschreibt, was ein Browser mindestens leisten soll, aber nicht, ab welcher Größe er ein Cookie ablehnt. Wenn deine Cookies in die Nähe von 4096 Bytes kommen, teste in den Browsern, die deine Nutzer verwenden.
Bei Datenbankfeldern, Formularfeldern und APIs gibt es keine einheitliche Regel. Manche Systeme begrenzen die Länge in Bytes, andere in Zeichen, und eine bloße Längenangabe verrät nicht, was gemeint ist. Schau deshalb in die Dokumentation des jeweiligen Systems. Steht dort nichts Eindeutiges, rechne in Bytes, denn bei UTF-8 ist die Byte-Zahl nie kleiner als die Zeichenzahl.
Häufige Fehler beim Zählen von Bytes in Texten
Passt die gemessene Textgröße nicht zu deiner Erwartung, prüf diese drei Fehlerquellen.
- Zeichenzahl mit Bytes verwechseln. Bei reinem ASCII-Text stimmen beide Zahlen überein. Jeder Umlaut, jedes ß und jedes € macht den Text in Bytes größer, als die Zeichenzahl vermuten lässt.
- KB unterschiedlich auslegen. Der Textgrößenrechner teilt durch 1024. Wenn du seinen Wert mit der Angabe eines anderen Programms vergleichst, prüfe, ob dort mit derselben Basis gerechnet wird. Bei knappen Grenzen ist der Wert in Bytes am verlässlichsten.
- Unsichtbare Zeichen übersehen. Text, den du etwa aus einem Word-Dokument oder einem PDF kopierst, kann Zeichen enthalten, die du nicht siehst, die aber trotzdem Bytes belegen. Hinzu kommen zerlegte Umlaute, wie oben beschrieben. Passt die Größe nicht zur Rechnung, tipp den Text testweise neu ein und miss noch einmal.
Textgröße mit dem Textgrößenrechner messen
Am schnellsten ermittelst du die Byte-Größe eines Textes mit dem Textgrößenrechner von Digily Link. Digily Link ist unser eigenes Produkt, und der Rechner steht allen offen.
- Öffne den Textgrößenrechner.
- Füg deinen Text in das Feld Text ein.
- Lies das Ergebnis unter Größe ab. Es erscheint sofort, schon während du tippst. Einen Knopf zum Absenden gibt es nicht.
Gerechnet wird in deinem Browser. Für die Berechnung muss der Text nicht an unseren Server gesendet werden. Technisch nutzt der Rechner new Blob([text]).size und erhält damit die Größe des Textes in UTF-8-Bytes. Er zählt also Bytes und keine Zeichen. Das Ergebnis zeigt er in Bytes (B), Kilobytes (KB) oder Megabytes (MB) an, bei sehr großen Texten auch in höheren Einheiten.
Bei der Einheit lohnt ein genauer Blick. Der Rechner teilt durch 1024. Zeigt er 1.5 KB, sind das 1536 Bytes. Er schreibt dabei KB, nicht KiB, und nutzt einen Punkt statt eines Kommas. Geteilt wird erst, wenn der Wert über 1024 liegt. Genau 1024 Bytes erscheinen deshalb als „1024 B“ und nicht als Kilobyte. Größere Werte gibt er mit bis zu zwei Nachkommastellen aus.
Zur Kontrolle eignet sich der Beispielsatz von oben. Gibst du „Grüße aus Köln“ ein, sollten rechnerisch 17 B erscheinen. Zeigt der Rechner mehr an, kommen zusätzliche Leerzeichen oder Zeilenumbrüche, ein zerlegter Umlaut oder ein unsichtbares Zeichen als Ursache infrage. Für andere Aufgaben rund um Texte und Links findest du weitere Text-Tools von Digily Link in unserer Übersicht.
Ob dein Text in ein Cookie, ein Datenbankfeld oder eine API-Grenze passt, hängt zusätzlich davon ab, wie er dort kodiert wird. Ein ä wird in einem Cookie zum Beispiel oft als %C3%A4 übertragen, also mit 6 statt 2 Bytes. Die UTF-8-Größe ist der Ausgangspunkt, und die kannst du jetzt mit dem Textgrößenrechner messen.