Graphem-Zähler
Zählen Sie die Zeichen, die ein Mensch in einem Text sieht, sogenannte Grapheme, dazu Codepunkte und UTF-16-Einheiten: abc ergibt 3, 3 und 3. Bei Akzentbuchstaben und Emojis aus mehreren Teilen gehen die Zahlen auseinander. Kostenlos in Ihrem Browser.
- Kostenlos
- Läuft in Ihrem Browser
- Ohne Anmeldung
- Ihre Daten bleiben auf Ihrem Gerät
Im Browser ausführen – kostenlos
Rechenbeispiel
- Text
- abc
- Grapheme
- 3
- Codepunkte
- 3
- UTF-16-Einheiten
- 3
Zählen Sie die vom Nutzer wahrgenommenen Zeichen (erweiterte Graphem-Cluster) in Unicode-Text. Suchintention: Graphem-Zählung / Unicode-Zeichenzählung. Für eine korrekte Antwort sind keine Netzwerkanrufe, Zufalls-Seeds und kein Serverzustand nötig.
Zeichen so gezählt, wie Menschen sie sehen
Fragt man, wie lang ein Text ist, hängt die Antwort davon ab, wer zählt. Ein Mensch zählt die Zeichen, die er sieht. Darunter speichert Unicode Text als Codepunkte, und viele Programme messen die Länge in UTF-16-Einheiten. Bei einfachen Buchstaben stimmen alle drei überein: abc ergibt 3 Grapheme, 3 Codepunkte und 3 UTF-16-Einheiten. Auseinander gehen sie bei zusammengesetzten Zeichen, etwa einem Buchstaben mit Akzent aus zwei Teilen oder einem Emoji aus mehreren Bausteinen, das ein Mensch als ein Zeichen sieht, der Rechner aber als mehrere speichert.
Wann die Graphemzahl die richtige ist
Die Graphemzahl, fachlich erweiterte Graphemcluster genannt, entspricht dem, was Menschen wahrnehmen. Sie ist daher die passende Zahl, wenn eine Grenze für Menschen gedacht ist, etwa bei einem angezeigten Namen oder einer kurzen Bildunterschrift. Codepunkte und UTF-16-Einheiten helfen beim Vergleich mit dem, was ein Programm meldet, oder wenn Sie im Unterricht erklären, warum zwei Werkzeuge beim selben Wort verschiedene Längen anzeigen. Alles läuft in Ihrem Browser, ohne Netzwerkzugriff und ohne Zufall.
So funktioniert es
Zählen Sie die vom Nutzer wahrgenommenen Zeichen (erweiterte Graphem-Cluster) in Unicode-Text. Grapheme nutzen Intl.Segmenter, wenn verfügbar; Codepunkte und UTF-16-Einheiten werden ebenfalls gemeldet. Die Implementierung ist reines JavaScript ohne externe Dienste.
Für eine korrekte Antwort sind keine Netzwerkanrufe, Zufalls-Seeds und kein Serverzustand nötig. Fehlgeschlagene Aufträge werden nicht berechnet. Landings zielen mit präzisen Keywords auf die genannte Suchintention.
Bevorzugen Sie explizite Einheiten und Bereiche gegenüber stiller Typ-Zwangskonvertierung. Wenn ein Feld optional ist, sind Standardwerte in params dokumentiert und werden in der
Eingaben, Grenzen und Rundung
Optionale Dezimalstellen nutzen half-up einmal. Ausgaben spiegeln Schlüssel-Eingaben wider, damit die Automatisierung den vollen Kontext jedes Aufrufs protokollieren kann. Für eine korrekte Antwort sind keine Netzwerkanrufe, Zufalls-Seeds und kein Serverzustand nötig.
Fehlgeschlagene Aufträge werden nicht berechnet. Landings zielen mit präzisen Keywords auf die genannte Suchintention. Bevorzugen Sie explizite Einheiten und Bereiche gegenüber stiller Typ-Zwangskonvertierung.
Wenn
Wann Sie es nutzen
Nutzen Sie es, wenn Ihre Suchintention dem Rechnernamen entspricht und Sie eine reproduzierbare Antwort für Lehre, Finanzoperationen, GIS, Textwerkzeuge oder Einheitenhistorie brauchen. Zählen Sie die vom Nutzer wahrgenommenen Zeichen (erweiterte Graphem-Cluster) in Unicode-Text. Für eine korrekte Antwort sind keine Netzwerkanrufe, Zufalls-Seeds und kein Serverzustand nötig.
Fehlgeschlagene Aufträge werden nicht berechnet. Landings zielen mit präzisen Keywords auf die genannte Suchintention. Bevorzugen Sie explizite Einheiten und Bereiche gegenüber stiller Typ-Zwangskonvertierung.
Wenn ein Feld optional ist, sind Standardwerte in params dokumentiert in
Häufige Fragen
Ruft es das Netzwerk auf?
Nein. Alle Mathematik- und Texttransformationen sind lokal und deterministisch.
Wer ist der Autor?
Aspire (elon@forhosting.com), nur EN-Auslieferung; Nitro hydriert die Locales.
Was ist ein Graphem?
Das, was ein Leser als ein einziges Zeichen wahrnimmt. Fachlich heißt es erweiterter Graphemcluster: Ein Buchstabe mit Akzent oder ein Emoji aus mehreren Bausteinen zählt als ein Graphem, auch wenn es in mehreren Teilen gespeichert ist.
Warum erhalte ich drei verschiedene Zahlen?
Weil jede eine andere Frage beantwortet. Grapheme sind die Zeichen, die ein Mensch sieht, Codepunkte die Unicode-Einheiten darunter und UTF-16-Einheiten die Bausteine, die viele Programme zählen, wenn sie die Länge eines Textes messen.
Liefert derselbe Text immer dieselben Zahlen?
Ja. Die Zählung läuft ohne Netzwerkzugriff und ohne Zufall, daher ergibt derselbe Text immer dieselben drei Zahlen. Das macht das Ergebnis verlässlich, etwa für den Unterricht oder zum Nachprüfen einer Längenangabe.
Verwandte Tools
Für Entwickler — API-Zugang
Alles auf dieser Seite ist auch per API verfügbar. Dieser Abschnitt richtet sich an Teams, die es in ihre eigenen Systeme einbinden möchten; alle anderen nutzen einfach das Tool oben.
Endpunkt
Authentifizierung per Bearer-Token. Ein einziger POST stellt die Aufgabe in die Warteschlange; das Ergebnis erhalten Sie per Webhook oder über einen signierten Link.
Aufruf aus Ihrem Stack
curl -X POST https://api.kit.forhosting.com/text/grapheme-count \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"👨👩👧👦"}'const res = await fetch("https://api.kit.forhosting.com/text/grapheme-count", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "👨👩👧👦"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/text/grapheme-count",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "👨👩👧👦"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/text/grapheme-count", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"👨👩👧👦"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"👨👩👧👦"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/text/grapheme-count", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Beispiel-Anfrage
{
"text": "👨👩👧👦"
}Beispiel-Antwort
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "text.grapheme_count",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}Die API arbeitet asynchron: Sie erhalten sofort eine task_id. Polling ist mit 1 Anfrage pro Sekunde erlaubt.
Preis
Der Preis steht auf der Seite – keine Tokens, keine Credits. Fehlgeschlagene Aufgaben werden nicht berechnet.
Fehler
| HTTP | Code | Bedeutung |
|---|---|---|
401 | unauthorized | Der API-Schlüssel fehlt oder ist ungültig – prüfen Sie den Authorization-Header (Bearer). |
402 | insufficient_balance | Ihr Guthaben reicht für diese Aufgabe nicht aus – Aufladungen verfallen nicht. |
404 | unknown_type | Unbekannter Aufgabentyp – prüfen Sie das Feld „type“ gegen den Katalog. |
429 | rate_limited | Zu viele Anfragen – warten Sie kurz; Polling ist mit 1 Anfrage pro Sekunde erlaubt. |
Technische Hinweise
Der Rechner ist im Browser kostenlos, deterministisch und identisch im API-Pfad. Eingaben werden vor jeder Arithmetik geprüft, sodass ungültige Nutzlasten mit invalid_input scheitern. Half-up-Rundung wird einmal aus rohen IEEE-Ergebnissen angewendet, wenn Dezimalstellen angefordert sind. Nutzen Sie denselben JSON-Vertrag aus Tabellen, CMS
So funktioniert es
Der Rechner ist im Browser kostenlos, deterministisch und identisch im API-Pfad. Eingaben werden vor jeder Arithmetik geprüft, sodass ungültige Nutzlasten mit invalid_input scheitern. Half-up-Rundung wird einmal aus rohen IEEE-Ergebnissen angewendet, wenn Dezimalstellen angefordert sind. Nutzen Sie denselben JSON-Vertrag aus Tabellen, CMS-Hooks, Automatisierung oder Lehrdemos.
Eingaben, Grenzen und Rundung
Geben Sie die erforderlichen Parameter als JSON-Zahlen oder -Zeichenketten wie dokumentiert an. Ungültige Typen, fehlende Pflichtfelder oder Werte außerhalb des Bereichs lösen invalid_input mit klarer Meldung aus. Der Rechner ist im Browser kostenlos, deterministisch und identisch im API-Pfad. Eingaben werden vor jeder Arithmetik geprüft, sodass ungültige Nutzlasten mit invalid_input scheitern. Half-up-Rundung wird einmal aus rohen IEEE-Ergebnissen angewendet, wenn Dezimalstellen angefordert sind. Nutzen Sie denselben JSON-Vertrag aus Tabellen, CMS-Hooks, Automatisierung oder Lehrdemos.
Wann Sie es nutzen
Der Rechner ist im Browser kostenlos, deterministisch und identisch im API-Pfad. Eingaben werden vor jeder Arithmetik geprüft, sodass ungültige Nutzlasten mit invalid_input scheitern. Half-up-Rundung wird einmal aus rohen IEEE-Ergebnissen angewendet, wenn Dezimalstellen angefordert sind. Nutzen Sie denselben JSON-Vertrag aus Tabellen, CMS-Hooks, Automatisierung oder Lehrdemos.
Integrationsbeispiele
Schnellprüfung
Fügen Sie Werte im kostenlosen Widget ein und vergleichen Sie sie mit einer Tabelle.
Automatisierung
Rufen Sie die API mit demselben JSON-Vertrag aus n8n, Skripten oder CMS auf.
Lehre
Zeigen Sie die Formel und fixierte Golden-Beispiele ohne proprietäre Software.
Technische Fragen
Ist es im Browser kostenlos?
Ja. Tier A läuft vollständig clientseitig mit demselben Kern wie die API.
Was passiert bei schlechter Eingabe?
Der Handler wirft invalid_input; fehlgeschlagene Aufträge werden nicht berechnet.
Kann ich es über die API nutzen?
Ja. Senden Sie dieselben in params dokumentierten JSON-Felder.