Zeichen zählen
Mit und ohne Leerzeichen, dazu die Bytezahl, die Ihre Datenbank und Ihr SMS-Gateway tatsächlich messen. Emoji zählen hier als ein Zeichen, denn genau das sind sie.
- Nie gespeichert
- Keine Warteschlange, kein Warten
- Ohne Anmeldung, ohne Wasserzeichen
0
Zeichen
was ein Mensch sieht
0
Ohne Leerzeichen
ohne Leerraum
0
Wörter
jede Sprache
0
UTF-8-Bytes
was eine Datenbank zählt
- ZeilenSo, wie ein Editor sie nummeriert
- 0
- SätzeNicht unterbrochen durch „Dr.“ oder „usw.“
- 0
- AbsätzeDurch eine Leerzeile getrennte Blöcke
- 0
- CodepunkteWas ein „.“ in einem regulären Ausdruck erfasst
- 0
- UTF-16-EinheitenWas string.length in JavaScript meldet
- 0
- UTF-8-BytesWas ein VARCHAR-Limit und HTTP-Header messen
- 0
- LesezeitStill gelesen, 238 Wörter pro Minute
- —
- SprechzeitLaut gelesen, 150 Wörter pro Minute
- —
- Längstes WortNach Zeichen, nicht nach Bytes
- —
- Durchschnittliches WortEin grober Hinweis auf die Lesbarkeit
- —
Fangen Sie an zu tippen, und alles füllt sich. Probieren Sie ein Emoji oder einen chinesischen Satz – beides wird so gezählt, wie ein Mensch zählen würde, was die meisten Zähler falsch machen.
So funktioniert’s
Einfügen oder tippen
Die Zählung wird laufend aktualisiert. Es wird nichts gespeichert.
Die passende Zählung wählen
Zeichen, Zeichen ohne Leerzeichen, Codepunkte oder UTF-8-Bytes – jede wird angezeigt, mit dem, was sie verwendet.
Das Limit im Blick behalten
SEO-Titel, Meta-Beschreibungen, SMS-Segmente und ein 255-Byte-Feld werden alle mit dem abgeglichen, was Sie geschrieben haben.
Vier Zahlen, weil „Zeichen“ vier Bedeutungen hat
Nehmen Sie das Familien-Emoji oder einen erhobenen Daumen mit Hautton. Ein Mensch sieht ein Zeichen. Es besteht aus mehreren Codepunkten, verbunden durch unsichtbare Verbinder, also sieht ein regulärer Ausdruck sieben. JavaScript speichert Text in 16-Bit-Einheiten, und alles außerhalb des Grundbereichs belegt zwei davon – also meldet es elf. Als UTF-8 in einer Datenbankspalte belegt es fünfundzwanzig Bytes. Keine dieser Zahlen ist falsch, und keine ist die Antwort – die richtige hängt ganz davon ab, was das Limit setzt.
Die praktische Frage lautet also: Wer hat das Limit festgelegt? Eine Datenbankspalte, die als VARCHAR deklariert ist, zählt in den meisten Systemen Bytes – deshalb nimmt ein Feld, das 255 englische Zeichen annimmt, weit weniger japanische an. Eine SMS hat 160 Zeichen in ihrem eigenen 7-Bit-Alphabet und fällt auf 70 pro Nachricht, sobald ein einziges Zeichen außerhalb davon liegt – ein einziges typografisches Anführungszeichen oder Emoji kann aus einer Nachricht drei machen. Eine Formularprüfung in JavaScript zählt fast immer UTF-16-Einheiten – deshalb kann ein Feld mit 280 Zeichen eine kürzer wirkende Zeichenkette voller Emoji ablehnen.
Die Zahl dessen, was ein Leser sieht, ist am schwersten zu ermitteln und wird mit der browsereigenen Textsegmentierung bestimmt – derselben Technik, die entscheidet, wohin Ihr Cursor springt, wenn Sie die Pfeiltaste nach links drücken. Das ist die richtige Definition von „einem Zeichen“ für alles, was ein Mensch wahrnimmt, und sie meistert die Fälle, an denen einfacheres Zählen scheitert: Ein Buchstabe mit Akzent, geschrieben als Grundbuchstabe plus kombinierendes Zeichen, ist eins, und Cluster in Hindi und Thai werden so gezählt, wie ein Leser dieser Schriften sie zählen würde.
Bei gewöhnlichem englischem Fließtext sind alle vier Zahlen gleich – deshalb bleibt das Problem unsichtbar, bis es das nicht mehr ist. Sie weichen bei Emoji ab, bei Akzentbuchstaben und kombinierenden Zeichen, bei nicht lateinischen Schriften und bei mathematischen Symbolen – und genau das sind die Eingaben, die drei Monate nach dem Aufbau einer Datenbank ein Feld stillschweigend abschneiden.
Wenn Sie etwas anderes brauchen
Verwenden Sie im Code eine Funktion, die zählt, was Sie brauchen, statt der Standardlänge. Intl.Segmenter in JavaScript zählt, was ein Leser sieht; Strings in Python 3 zählen Codepunkte, und len(s.encode("utf-8")) zählt Bytes; PHP hat für genau diese Unterscheidung mb_strlen und strlen. Der Standard ist in den meisten Sprachen das, was der Sprache gerade bequem war – und das ist selten das, was Ihr Limit meint.
Wenn ein Datenbankfeld die Grenze setzt, liegt die dauerhafte Lösung weiter vorne. Eine Spalte in MySQL als utf8mb4 oder in PostgreSQL als text zu deklarieren, beseitigt eine ganze Klasse von Abschneidefehlern – das ältere utf8 in MySQL hat bekanntlich nur drei Bytes pro Zeichen und kann überhaupt kein Emoji speichern. Sorgfältiges Zählen im Formular ist ein Notbehelf für eine Spalte, die anders hätte deklariert werden sollen.
Häufig gestellte Fragen
Wird mein Text irgendwo gespeichert?
Nein. Es wird nichts gespeichert und keine Anfrage gesendet, und alles funktioniert auch ohne Netzverbindung weiter. Bei Text ist das wichtiger, als es aussieht: Was Menschen in einen Online-Zähler einfügen, sind unveröffentlichte Texte, juristische Entwürfe, Studienarbeiten und interne Dokumente.
Warum gibt es vier verschiedene Zeichenzahlen?
Weil ein „Zeichen“ vier verschiedene Bedeutungen hat und die meisten Tools nur eine kennen. Was SIE als ein Zeichen sehen, ist ein Graphem-Cluster – „é“, „🎉“ und sogar „👨👩👧👦“ sind jeweils eins. Was string.length in JavaScript meldet, sind UTF-16-Codeeinheiten, und darin ist dieses Familien-Emoji 11. Was ein regulärer Ausdruck erfasst, sind Codepunkte, und darin ist es 7. Und was eine Datenbankspalte oder ein HTTP-Header misst, sind UTF-8-BYTES, und darin ist es 25. Alle vier werden hier angezeigt, weil die richtige davon abhängt, wer das Limit setzt.
Wie viele Zeichen hat ein Emoji?
Hier eins – denn das ist es für den Menschen, der es liest, und das zählt ein Zeichenlimit auf einer modernen Plattform. Anderswo können es 2, 7 oder 11 sein: „👨👩👧👦“ sind vier Personen, verbunden durch drei unsichtbare Verbinderzeichen, also 7 Codepunkte und 11 der Einheiten, die string.length in JavaScript zählt. Wenn ein Formular Ihren Text als zu lang abgelehnt hat, obwohl er kurz genug aussah, liegt es meist daran, und die Bytezahl auf dieser Seite zeigt Ihnen die tatsächliche Größe.
Warum passt mein Text mit 200 Zeichen nicht in ein Datenbankfeld mit 255 Zeichen?
Weil das Feld mit ziemlicher Sicherheit BYTES begrenzt, nicht Zeichen. In UTF-8 belegen einfache englische Buchstaben je ein Byte, Akzentbuchstaben aber zwei, und Chinesisch, Japanisch, Arabisch und Emoji drei oder vier. 200 Zeichen Japanisch sind also 600 Bytes. Genau deshalb wird hier die Bytezahl angezeigt – sie ist die Zahl, die Ihre Datenbank tatsächlich prüft.
Warum senkt ein einziges Emoji mein SMS-Limit von 160 auf 70?
Weil eine SMS ein kompaktes 7-Bit-Alphabet verwendet, das 160 Zeichen fasst – und dieses Alphabet kennt keine Emoji, keine typografischen Anführungszeichen und kaum Akzente. Ein einziges Zeichen außerhalb davon stellt die GESAMTE Nachricht auf Unicode um, und das Limit sinkt auf 70. Ein aus Word eingefügter typografischer Apostroph schafft das genauso leicht wie ein Emoji. So wird eine kurze Nachricht als drei abgerechnet – und die Seite sagt es Ihnen in dem Moment, in dem es passiert.
Werden Leerzeichen mitgezählt?
Beide Zahlen werden gleichzeitig angezeigt, Sie müssen sich also nicht entscheiden. Zeilenumbrüche und Tabs zählen ebenfalls als Leerraum.
Gut zu wissen: Vier Zahlen, weil „Zeichen“ vier Bedeutungen hat und die richtige davon abhängt, wer das Limit setzt. Ein VARCHAR in einer Datenbank zählt UTF-8-Bytes, ein regulärer Ausdruck zählt Codepunkte, JavaScript zählt UTF-16-Einheiten, und ein Mensch zählt, was er sieht. Am stärksten weichen sie bei Emoji voneinander ab.
Dieses Tool auf Ihrer Website einbinden
Kostenlos für jeden Blog, jede Kursseite und jeden Hilfeartikel. Fügen Sie ein einziges Snippet ein, und Ihre Besucher können das Tool direkt auf Ihrer Seite nutzen.
Ähnliche Tools
Wörter zählen
Wörter, Sätze und Lesezeit
Texte vergleichen
Genau sehen, was sich zwischen zwei Versionen geändert hat
Groß-/Kleinschreibung ändern
GROSS, klein, Titelschreibung, camelCase und mehr
Base64 kodieren
Text oder eine Datei in Base64 umwandeln
Doppelte Zeilen entfernen
Wiederholungen entfernen, eine Liste sortieren und aufräumen
HTML minifizieren
HTML verkleinern, ohne die Seite zu beschädigen