acento.io
Tekst-tool

Character counter

Tel grafemen, codepoints en bytes in realtime — volledig in je browser, zonder uploads of tracking.

Door Carlos Suárez , Systeemingenieur
Laatst bijgewerkt:

Wat deze character counter doet

Deze Nederlandstalige character counter telt niet zomaar bytes — hij onderscheidt grafemen (zichtbare tekens zoals je ze ervaart), codepoints en UTF-8 bytes. Dat verschil is cruciaal: de familie-emoji 👨‍👩‍👧 is één grafeem maar zeven codepoints. JavaScript's string.length geeft daarvoor 8 terug — geen enkel van die waarden klopt als je wil weten hoeveel tekens een gebruiker ziet. Volgens het Instituut voor de Nederlandse Taal bevat hedendaags Nederlands geschreven taal gemiddeld 4,4 tekens per woord, vergelijkbaar met het Spaans maar aanzienlijk korter dan het Duits met 6,3. Die compactheid maakt het des te belangrijker om precies te weten hoeveel ruimte een stuk tekst inneemt in velden met strikte limieten. 100% client-side — jouw gegevens verlaten nooit je browser. Geen uploads, geen tracking, geen serverlogs.

Functies

  • Grafemen tellen. Telt user-perceived characters via Unicode segmentatie — emoji-combinaties en samengestelde letters tellen als één teken, niet als meerdere codepoints.
  • Codepoints en UTF-16 code units. Toont zowel het aantal Unicode codepoints als de raw UTF-16 waarde die talen zoals JavaScript intern gebruiken — essentieel voor platform-specifieke limieten.
  • UTF-8 bytegrootte. Berekent de exacte bytegrootte in UTF-8, zodat je weet of je tekst past in een database-kolom als VARCHAR(255) die bytes telt, niet tekens.
  • Tekens zonder spaties. Telt alleen niet-spatie-grafemen, handig voor platforms die whitespace apart behandelen of voor het berekenen van woorddichtheid.
  • Meest voorkomend teken. Laat direct zien welk grafeem het vaakst voorkomt — nuttig voor patroondetectie, kwaliteitscontrole of het opsporen van onverwachte tekens in geïmporteerde data.
  • Realtime, volledig offline. Alle tellingen worden direct bijgewerkt terwijl je typt, zonder netwerkaanvraag. Je tekst verlaat je browser nooit — ook niet bij gevoelige inhoud.

Zo gebruik je de character counter

Plak of typ je tekst in het invoerveld. Alle tellers worden meteen bijgewerkt — geen knop nodig.

  1. Tekst invoeren. Plak je tekst of typ direct in het veld. Kopieer-plak werkt ook vanuit Word, Notion of een terminal.
  2. Lees de tellers af. Bekijk grafemen, codepoints, bytes en tekens-zonder-spaties tegelijk. Bij emoji of niet-Latijnse scripts zie je direct het verschil tussen grafemen en codepoints.
  3. Vergelijk met platformlimieten. Twitter/X gebruikt grafemen (280), SMS gebruikt GSM-7 codepoints (160 per segment). Kies de juiste kolom voor jouw context.
  4. Valideer via code. Gebruik [...text].length in JavaScript voor grafemen via spread, of wc -m file.txt in Bash voor codepoints. De tool laat precies zien waar die waarden van afwijken.

Veelvoorkomende toepassingen

  • Social media berichten. Twitter/X (280 grafemen), Bluesky (300), LinkedIn-updates (3.000) — elke limiet telt grafemen, niet bytes. Controleer je bericht voordat je post.
  • SMS-segmenten berekenen. Een SMS in GSM-7 past 160 tekens per segment; zodra je een emoji toevoegt, schakelt het netwerk over naar UCS-2 en daalt de limiet naar 70 tekens. Eén emoji kan je bericht dus verdubbelen in kosten.
  • SEO-metatekst controleren. Zoekmachines tonen titels tot ca. 60 tekens en metabeschrijvingen tot ca. 155 tekens. Als je ook het woordenaantal wil checken, helpt onze [word counter](/nl/word-counter/) daarbij.
  • Database-kolomvalidatie. Een VARCHAR(255) in MySQL slaat 255 bytes op, niet 255 tekens. Een Nederlandse tekst met accenten of emoji kan korter lijken dan hij feitelijk in de database past — de byteteller voorkomt verrassingen.
  • Inhoud importeren en opschonen. Bij het migreren van content — zoals beschreven in het bekende GitLab 2017 db incident — kan een onverwacht groot veld een kolom laten overlopen. Controleer bytegroottes vóór de migratie.

Veelgestelde vragen

Wat is het verschil tussen een grafeem en een codepoint?

Een grafeem is wat je ziet: één zichtbaar teken. Een codepoint is een getal in de Unicode-standaard. De emoji 👨‍👩‍👧 is 1 grafeem maar 7 codepoints, omdat hij is samengesteld uit meerdere Unicode-karakters met zero-width joiners. Platforms zoals Twitter tellen grafemen; databases tellen vaak bytes.

Worden mijn teksten opgeslagen of verstuurd?

Nee. De tool werkt volledig in je browser — er wordt niets naar een server gestuurd. Er zijn geen uploads, geen logs en geen cookies. Je kunt de pagina ook offline gebruiken zodra hij geladen is.

Waarom geeft JavaScript een andere waarde dan deze tool?

string.length in JavaScript telt UTF-16 code units, niet grafemen. Voor ASCII-tekst zijn die gelijk, maar emoji en veel niet-Latijnse tekens gebruiken twee code units (een surrogate pair). De spread-operator [...text].length geeft codepoints; voor echte grafemen heb je Intl.Segmenter nodig — wat deze tool intern gebruikt.

Hoe werkt SMS-segmentberekening?

Standaard SMS gebruikt GSM-7 codering: 160 tekens per segment. Zodra je tekst een teken bevat dat niet in de GSM-7-tabel staat — zoals een emoji of sommige valutasymbolen — schakelt het netwerk over op UCS-2 en daalt de limiet naar 70 tekens per segment. Een bericht van 90 tekens met één emoji kost dus twee SMS-segmenten.

Hoe controleer ik tekenlengtes programmatisch?

In JavaScript geeft [...text].length het aantal codepoints via spread. In Python geeft len(text) ook codepoints. Voor echte grafemen gebruik je Intl.Segmenter (JS) of de grapheme bibliotheek (Python). In Bash telt wc -m file.txt codepoints op basis van de locale-instelling.

Telt dit ook correct voor Nederlandse tekst met accenten?

Ja. Tekens zoals é, ë en ij worden correct als één grafeem geteld, ongeacht of ze als precomposed (één codepoint) of als base + combining character (twee codepoints) zijn opgeslagen. Dat is relevant als je tekst uit verschillende bronnen samenvoegt, zoals beschreven in RFC 8259 voor JSON-tekstrepresentatie.