Teken- en woordlimieten 2026 — Twitter, SMS, SEO, Instagram
Een tekenlimiet is het maximum aantal Unicode-codepoints dat een platform in één veld accepteert — 280 voor een Twitter-bericht, 160 voor een SMS van één segment in GSM-7, ongeveer 160 voor een Google meta description voordat die wordt afgekapt. Welk getal voor jou telt, hangt af van waar je publiceert en of je tekst emoji’s, typografische aanhalingstekens of CJK-tekens bevat — die veranderen allemaal de rekensom.
Deze gids is bedoeld voor social media-schrijvers, SEO-specialisten, marketingtekstschrijvers, SMS-verzenders die per segment worden afgerekend, en ontwikkelaars die validatie schrijven die moet aansluiten op wat Twitter, Instagram of SMS-gateways daadwerkelijk tellen. Spring naar de snelle referentietabel voor de spiekbrief met 25 platforms, of toets je concept live tegen zes grote platforms in de Woordenteller — de voortgangsbalken kleuren rood zodra je een limiet overschrijdt.
Snelle referentie — teken- en woordlimiet van elk platform
De tabel hieronder dekt de 30+ velden die schrijvers en ontwikkelaars het vaakst tegenkomen. “Hard limit” is het plafond dat het platform afdwingt; “Zichtbaar / boven de vouw” is wat lezers zien voor het afkappunt; “Sweet spot” is de empirische zone waar content het beste presteert.
| Platform | Hard limit | Zichtbaar / boven de vouw | Sweet spot | Emoji telt als |
|---|---|---|---|---|
| Twitter / X-bericht | 280 tekens | 280 | 70-100 tekens | 1 codepoint |
| Twitter / X-bio | 160 tekens | 160 | — | 1 codepoint |
| Twitter / X-weergavenaam | 50 tekens | 50 | — | 1 codepoint |
| X Premium lange vorm | 25.000 tekens | — | — | 1 codepoint |
| Instagram-bijschrift | 2.200 tekens | eerste 125 (dan “meer”) | <125 voor hook | 1 codepoint |
| Instagram-bio | 150 tekens | 150 | — | 1 codepoint |
| Instagram-hashtags | max 30 | — | 5-10 | — |
| LinkedIn-bericht | 3.000 tekens | eerste 210 (dan “meer weergeven”) | <1.300 | 1 codepoint |
| LinkedIn-artikel | 110.000 tekens | — | — | 1 codepoint |
| LinkedIn-headline | 220 tekens | 220 | — | 1 codepoint |
| Facebook-bericht | 63.206 tekens | ~477 desktop / ~125 mobiel | <80 voor organisch | 1 codepoint |
| TikTok-bijschrift | 2.200 tekens | eerste ~100 | <150 | 1 codepoint |
| YouTube-titel | 100 tekens | 70 (zoekresultaat) | <60 | 1 codepoint |
| YouTube-beschrijving | 5.000 tekens | eerste 100-150 boven de vouw | eerste 150 voor hook | 1 codepoint |
| YouTube-reactie | 10.000 tekens | — | — | 1 codepoint |
| Reddit-titel | 300 tekens | — | <60 (afhankelijk van subreddit) | 1 codepoint |
| Reddit-reactie | 10.000 tekens | — | — | 1 codepoint |
| Discord-bericht | 2.000 tekens | 2.000 | — | 1 codepoint |
| Discord-embed beschrijving | 4.096 tekens | — | — | 1 codepoint |
| Slack-bericht | 40.000 tekens | — | <2.000 voor leesbaarheid | 1 codepoint |
| Pinterest-pinbeschrijving | 500 tekens | eerste 50-60 | <125 | 1 codepoint |
| Mastodon-toot | 500 tekens (configureerbaar) | 500 | — | 1 codepoint |
| Bluesky-bericht | 300 tekens | 300 | — | 1 grapheme cluster |
| Threads-bericht | 500 tekens | 500 | — | 1 codepoint |
| SEO meta description (Google) | ~160 tekens desktop / ~120 mobiel | 150-160 | 150-160 | 1 codepoint |
| SEO paginatitel (Google) | ~60 tekens desktop / ~50 mobiel | 50-60 | 50-60 | 1 codepoint |
| Open Graph-beschrijving | ~200 tekens voor LinkedIn/FB-clip | 150-200 | 150-200 | 1 codepoint |
| Twitter Card-beschrijving | 200 tekens max | 200 | 150-200 | 1 codepoint |
| SMS één segment (GSM-7) | 160 tekens | — | — | speciaal — zie hieronder |
| SMS één segment (UCS-2 / emoji) | 70 tekens | — | — | 1 codepoint |
| WhatsApp-berichttekst | 65.536 tekens | — | — | 1 codepoint |
| Onderwerpregel e-mail | geen platformlimiet | ~60 desktop / ~30 mobiel | <50 | 1 codepoint |
| Google Ads-headline | 30 tekens × 15 headlines | 30 per stuk | 30 | 1 codepoint |
| Google Ads-beschrijving | 90 tekens × 4 beschr. | 90 per stuk | 90 | 1 codepoint |
| App Store-titel | 30 tekens | 30 | 30 | 1 codepoint |
| App Store-subtitel | 30 tekens | 30 | 30 | 1 codepoint |
| App Store-beschrijving | 4.000 tekens | eerste 252 boven de vouw | 252 hook | 1 codepoint |
| Play Store korte beschrijving | 80 tekens | 80 | 80 | 1 codepoint |
| Play Store lange beschrijving | 4.000 tekens | eerste 80 boven de vouw | 80 hook | 1 codepoint |
Content boven de “sweet spot”-grens wordt vaak afgekapt, lager gerankt of weggesneden uit de zichtbare kaart. X Premium lange vorm en Mastodon (per instance configureerbaar) zijn de zeldzame uitzonderingen waar je voorbij 500 tekens kunt schrijven zonder afstraffing. Elke telling hierboven — behalve waar SMS-regels gelden — is een telling van Unicode-codepoints: één emoji kost 1 teken, niet 2. Om een concept tegelijk tegen de zes meest voorkomende limieten te toetsen, plak je het in de Woordenteller; de voortgangsbalken vangen te lange tekst op voordat je op publiceren drukt.
Hoe tekens echt geteld worden (Unicode-codepoints versus UTF-16)
Drie verschillende tools kunnen je drie verschillende tekentellingen geven voor dezelfde string. “Teken” is geen eenduidig begrip: het kan een Unicode-codepoint zijn, een UTF-16-code unit of een grapheme cluster, en elk platform kiest er een.
Wat is een “teken” — codepoint versus code unit versus grapheme
Een codepoint is een Unicode-scalairwaarde: elk geheel getal van U+0000 tot U+10FFFF dat Unicode aan een teken heeft toegewezen of als gereserveerd heeft gemarkeerd. Een code unit is het kleinste deel van een encoding; UTF-16 gebruikt 16-bit code units, UTF-8 gebruikt 8-bit code units. Een grapheme cluster is wat mensen waarnemen als één zichtbaar teken — soms één codepoint, soms een basiscodepoint plus combinatietekens, soms een zero-width-joiner-reeks zoals de familie-emoji 👨👩👧👦 (zeven codepoints samengevoegd tot één zichtbare glyph).
Voor de string "a🌍👨👩👧" lopen de drie tellingen uiteen:
| Telmethode | Resultaat | Gebruikt door |
|---|---|---|
UTF-16-code units (JS string.length) | 10 | Naïeve JavaScript-code |
| Unicode-codepoints | 6 | Twitter, Instagram, SMS-gateways |
| Grapheme clusters | 3 | Bluesky, schermlezers, teksteditors |
Waarom string.length liegt over emoji
JavaScript bewaart strings intern als UTF-16. Elk codepoint boven U+FFFF (elke emoji, alle astral-plane-tekens) wordt als surrogate pair gecodeerd — twee 16-bit code units. De .length-property rapporteert die twee units, niet één teken.
"🌍".length // 2 (UTF-16 code units)
[..."🌍"].length // 1 (codepoints — what Twitter/SMS counts)
"🌍".match(/./gu).length // 1 (codepoints via regex with /u flag)
De spread-operator en de /u-regex-vlag itereren beide per codepoint, wat overeenkomt met wat Twitter, Instagram en SMS-gateways meten tegen hun limieten. Een validatiefunctie die ruwe .length gebruikt, wijst tweets af die in werkelijkheid binnen de cap vallen, of — erger — laat berichten door die je downstream-systeem zal weigeren.
En CJK en combinatietekens?
Chinese, Japanse en Koreaanse ideogrammen zijn elk één codepoint en tellen op elk platform als één teken. Waar ze duur worden, is SMS: elk niet-GSM-7-teken zet het hele bericht om naar UCS-2-encoding en laat het segmentlimiet zakken van 160 naar 70 (zie de volgende sectie).
Combinatietekens gedragen zich anders. De accenttekens á geschreven als á is één codepoint; dezelfde á geschreven als a + ́ (combinerende acute) is twee codepoints maar één grapheme cluster. De meeste platforms tellen per codepoint, dus de tweede vorm kost één extra teken. Bluesky is de zichtbare uitzondering — het telt grapheme clusters, dus beide vormen kosten 1.
Tellen in verschillende talen — snelle referentie
// JavaScript
[...str].length // codepoints
Array.from(str).length // codepoints
// Python 3 — len() is codepoint by default
len(s)
// Go — utf8 package
utf8.RuneCountInString(s)
// Rust — chars() iterates codepoints
s.chars().count()
// Java — codePointCount
s.codePointCount(0, s.length())
Ter vergelijking herinnert de Base64-encoder je aan de andere richting: wanneer tekst voor verzending naar Base64 wordt geëncodeerd, worden elke 3 bytes UTF-8-invoer 4 ASCII-uitvoertekens, dus de lengte na encoderen hangt af van het aantal bytes, niet van het aantal codepoints. Plak één emoji en kijk hoe de Base64-uitvoer uitdijt tot 8 tekens — dezelfde emoji die 1 teken kost op Twitter neemt 4 bytes in UTF-8.
Om codepoint-tellingen te zien (het getal dat Twitter daadwerkelijk meet) op elk concept, is de Woordenteller standaard Unicode-correct.
SMS-tekenlimiet — GSM-7, UCS-2 en multi-part berichten
SMS is het enige grote kanaal waar één extra emoji je rekening letterlijk kan verdubbelen. De oorzaak is de encoding, en de rekensom is sinds 1985 dezelfde.
Het magische getal 160 — de geschiedenis van GSM-7
De GSM-03.38-standaard uit 1985 legde de SMS-payload vast op 140 bytes. Met een 7-bits karakterencoding bevatten 140 bytes 1.120 bits ÷ 7 = 160 tekens. Daar komt de beroemde sms character limit van 160 vandaan. De GSM-7-tekenset dekt 128 basistekens plus een extensie van 10 tekens (waaronder { } [ ] | \ ~ ^ € en form feed). Binnen die set heb je het volledige budget van 160 tekens per segment.
Tekens die buiten GSM-7 vallen en een omschakeling forceren:
- Alle emoji’s
- Krullende / typografische aanhalingstekens (
""'') — let op: deze verschillen van de rechte ASCII-aanhalingstekens"' - De meeste Latijnse letters met accent buiten de 35 in GSM-7 (
é á ñ ü øenz.; GSM-7 omvat alleenä ö å æ ø à è ì ò ùen een paar andere) - Volledige-breedte interpunctie, CJK-tekens, Arabisch, Hebreeuws, Grieks onderkast, Cyrillisch
- Backtick
`en tilde~(de tilde staat in de GSM-7-extensietabel, dus kost hij 2 van je 160 tekens)
UCS-2-valkuil — één emoji laat je van 160 naar 70 zakken
Zodra ergens in het bericht één niet-GSM-7-teken voorkomt, schakelt het hele bericht over naar UCS-2-encoding. UCS-2 gebruikt 16 bits per teken, dus 140 bytes ÷ 2 = 70 tekens per segment. Echte voorbeelden:
"Hello, your code is 12345" → 26 chars, GSM-7, 1 segment
"Hello, your code is 12345 ✓" → 28 chars, GSM-7 (✓ in extension), 1 segment
"Hello, your code is 12345 ✅" → 28 chars, UCS-2 (emoji), 1 segment (under 70)
"Hello, "your" code is 12345 ✅" → smart quotes + emoji → UCS-2
"Hi 你好" → CJK → UCS-2, 1 segment (5 chars)
Dat laatste voorbeeld “Hi 你好” is de valstrik: het is slechts 5 tekens, maar het wordt afgerekend op UCS-2-tarief en de volgende 65 tekens die je toevoegt passen nog in één segment, daarna begint segment 2.
Multi-part SMS-segmenten (concatenatie)
Zodra je 160 (GSM-7) of 70 (UCS-2) overschrijdt, splitst het bericht in meerdere segmenten. Elk segment bevat een 7-tekens lange User Data Header (UDH) voor reassemblage, dus de bruikbare payload per segment daalt:
- GSM-7 multi-part: 153 tekens per segment
- UCS-2 multi-part: 67 tekens per segment
De ontvangende telefoon zet de segmenten onzichtbaar weer in elkaar — maar facturering gaat per segment, niet per bericht. Een GSM-7-bericht van 161 tekens kost 2 segmenten. Een GSM-7-bericht van 1.000 tekens kost 7 segmenten (153 × 6 = 918, het zevende segment draagt de laatste 82).
Kostenrekensom — wanneer één emoji je rekening verdubbelt
Bekijk een platte marketingboodschap van 80 tekens:
- Platte tekst: 80 tekens → GSM-7 → 1 segment voor prijs X
- Voeg één emoji toe: 80 tekens → UCS-2 → 80 > 70 → 2 segmenten voor prijs 2X
Eén emoji die je rekening verdubbelt is echt en schaalt mee. Een campagne van 100.000 berichten à $0.0075 per segment kost $750 in GSM-7 versus $1.500 in UCS-2 — een emoji van $750. Elke grote SMS-provider (Twilio, Bandwidth, AWS SNS, MessageBird, Vonage) rekent zo af. De encoding-regels zijn GSM-standaard, geen vendor-beleid. De diepere geschiedenis van afwegingen op byteniveau — en waarom ASCII / UTF-8 / UCS-2 überhaupt als aparte standaarden bestaan — komt aan bod in Understanding Base64, wat dezelfde familie van “bits naar tekens”-problemen is, maar toegepast op e-mail in plaats van SMS.
Hoe houd je berichten in GSM-7
- Gebruik rechte ASCII-aanhalingstekens
"', geen typografische - Gebruik het ASCII-koppelteken
-, geen em-dash—of en-dash– - Schrijf
(c)en(R)voluit, niet©en® - Vermijd emoji’s tenzij het campagnebudget UCS-2-kosten meeneemt
- Provider-consoles (van Twilio, Bandwidth, MessageBird) tonen “encoding: GSM-7” of “UCS-2” naast de preview — controleer dit vóór verzending
De snelste sanity check tijdens het opstellen is de SMS-voortgangsbalk in de Woordenteller — die rapporteert tegen de basislijn van 160 tekens. Als je tekst UCS-2 activeert, deel je tekental dan mentaal door 2,29 om het aantal segmenten onder de 70-tekensregel te schatten.
SEO-limieten — meta description, title tag, OG, Twitter Card
SEO-tekenlimieten zijn zachter dan platformlimieten. Google weigert je pagina niet als een meta description 300 tekens haalt, maar de praktische afkapregels zijn van belang voor de doorklikratio. Hier zijn de getallen die in 2026 nog steeds gelden.
Meta description — sweet spot van 150-160 tekens
De zoekresultaten van Google op desktop kappen de meta description rond 155-165 tekens; mobiel knipt ergens tussen 100 en 120. Het exacte afkappunt verschilt omdat Google in weergavepixels meet, niet in tekens. Een beschrijving vol W- en M-glyphs raakt de afkap-pixel eerder dan een vol met i en l.
Praktische schrijfregels:
- Mik op 150-160 tekens in totaal
- Plaats de kernboodschap in de eerste 120 tekens (mobielveilig)
- Begin met het zoekwoord meta description character limit voor de pagina in de eerste 30 tekens
- Sluit af met een CTA in de laatste 30 tekens — leesbaar zelfs als desktop het midden wegknipt
In de periode 2017-2018 breidde Google de meta description-weergave kortstondig uit naar 320 tekens, en een generatie SEO-tutorials citeert dat getal nog steeds. Google draaide dat halverwege 2018 terug naar 160. Voorbij 200 tekens schrijven verbergt vandaag gewoon de tweede helft.
Een ander faalpatroon: beschrijvingen onder de 120 tekens worden vaak helemaal vervangen. Google besluit dat jouw beschrijving de zoekopdracht niet volledig bedient en haalt een ander stuk uit de paginatekst — je verliest CTR-controle zonder waarschuwing.
Title tag — 60 desktop, 50 mobiel
Title tags knippen ongeveer bij 60 tekens op desktop en 50 op mobiel. Dezelfde pixelgebaseerde afkapping als bij beschrijvingen, dezelfde nuance over brede glyphs.
Sweet spot: 50-60 tekens, met het doelzoekwoord in de eerste 30 zodat het elke knip overleeft. Long-tail merksuffixen (| Brand Name) horen aan het eind, waar afkapping het minst pijnlijk is.
Pixelbreedte versus tekenaantal — de echte regel van Google
De SERP-beschrijvingscontainer van Google is op desktop ruwweg 920 pixels breed. De gemiddelde tekenbreedte ligt rond 6,5 pixel, wat de empirische streef van 140-160 tekens oplevert. Maar de spreiding per teken is groot: i rendert op zo’n 3 pixels, M op ongeveer 11. Een beschrijving van louter hoofdletters (“BEST WIDGETS FOR WINTER WEDDINGS”) knipt substantieel eerder dan een onderkast-equivalent.
Pre-publish-previews met pixelnauwkeurige SERP-simulators zijn betrouwbaarder dan tekentellers voor SEO-teksten.
OG-beschrijving en Twitter Card-beschrijving
og:description van het Open Graph-protocol is wat Facebook, LinkedIn, Slack en Discord onder een gedeelde linkpreview tonen. Weergavecaps verschillen per platform — de meeste knippen rond 200 tekens, sommige rekken tot 300. De Twitter Card twitter:description is hard gecapt op 200 tekens in Twitters parser.
Zinnige defaults:
- 150-200 tekens voor zowel OG als Twitter Card
- Ze mogen overeenkomen met je meta description, maar OG mag iets langer omdat OG-lengte de zoekrang niet beïnvloedt
- Valideer je keuzes voor gestructureerde data (vooral wat per ongeluk in OG belandt) met de patronen uit Security Best Practices, waar onbetrouwbare OG-metadata een veelvoorkomende phishing-vector is
Wat “geen tekenlimiet” daadwerkelijk betekent
H1-tags, body-content en URL-slugs hebben geen platformafgedwongen SEO-tekenlimiet, maar zachte grenzen gelden nog steeds:
- H1 > 70 tekens breekt de visuele hiërarchie en de scanbaarheid
- URL-slugs zijn technisch onbeperkt; Google toont rond 90 tekens in de SERP, alles daarboven is cosmetisch
- Body-content heeft geen lengtecap, maar Google rankt nuttige content boven opvulling — woordental alleen is geen ranking-signaal
De Woordenteller volgt zowel meta description (160) als title tag (60) live terwijl je typt, met voortgangsbalken die oranje en rood kleuren naarmate je de afkap-pixel nadert.
Social platforms — Twitter/X, Instagram, LinkedIn, Facebook en verder
Twitter / X — 280, premium 25.000, URL-substitutieregel
De standaard twitter character limit is 280 tekens, in november 2017 verdubbeld vanaf 140. X Premium-abonnees kunnen langere content publiceren tot 25.000 tekens met rijke opmaak, maar het bericht van 280 tekens blijft de dominante vorm voor organisch bereik.
De minder voor de hand liggende regel is URL-substitutie. Twitter omhult elke URL — hoe lang dan ook — bij publicatie in een t.co-shortlink van 23 tekens. Die kosten van 23 tekens liggen vast.
published_length = raw_length − URL_length + 23
Voorbeeld: een concept als "Check this: https://example.com/very-long-path?id=12345" is 53 ruwe tekens. De URL is 38 tekens, dus wordt vervangen door een t.co-link van 23 tekens, en de gepubliceerde lengte is 53 − 38 + 23 = 38 tekens. 15 tekens gewonnen die je niet wist te hebben.
Voor het plakken van een lange URL in een concept is de URL Decoder & Encoder een snelle manier om te controleren wat als URL telt (Twitter herkent URL’s via RFC 3986-patronen — querystrings en fragmenten meegerekend). Subdomeinen, schema’s, poorten, paden, queries en fragmenten worden allemaal opgeslokt door de substitutie van 23 tekens.
Andere Twitter-velden: weergavenaam 50 tekens, bio 160 tekens, handle 15 tekens. Threads (Meta’s Twitter-equivalent) hanteert in plaats daarvan een limiet van 500 tekens.
Instagram — 2.200 bijschrift, 30 hashtags, hook van 125 tekens
Instagram-bijschriften staan 2.200 tekens toe, maar de feed laat alleen de eerste 125 tekens zien voordat de rest achter een ”… meer”-tap valt. Meer dan de helft van de lezers tikt nooit. De instagram caption limit die telt voor engagement is daarom 125, ook al is het harde limiet 2.200.
De cap van 30 hashtags is hard — een 31e hashtag proberen laat het bericht falen. Het bereik van 5-10 hashtags presteert doorgaans het best; voorbij 11 vlakt de ontdekkingsboost af en gaat het bericht er voor het algoritme uitzien als spam.
Andere velden: bio 150 tekens, weergavenaam 30 tekens, DM 1.000 tekens.
LinkedIn — 3.000 bericht, sweet spot 1.300, “meer weergeven”-vouw
De linkedin character limit voor berichten is 3.000, maar de feed toont alleen de eerste 210 tekens vóór de “meer weergeven”-vouw. Berichten in het bereik van 1.200-1.500 tekens winnen engagement op LinkedIn (meerdere Buffer- en Hootsuite-studies komen rond 1.300 uit als piek); ze zijn lang genoeg om waarde te tonen, kort genoeg om de scroll niet uit te putten.
LinkedIn-artikelen (de long-form publishing-laag) staan 110.000 tekens toe — effectief onbeperkt. Profielheadlines cappen op 220, de about-sectie op 2.600.
Facebook — 63.206 tekens, organische sweet spot van 80 tekens
Het Facebook-postlimiet van 63.206 tekens is grotendeels trivia; in de praktijk krijgen berichten onder de 80 tekens ongeveer 30% meer organische engagement dan langere (HubSpot rapporteert dit consistent door de jaren heen). Boven de vouw toont desktop ongeveer 477 tekens; mobiel snijdt bij ongeveer 125.
De maximale reactie is 8.000 tekens. Reacties, shares en doorkliks neigen allemaal naar kortere berichten — lange tekst hoort in het gelinkte artikel, niet in het Facebook-bijschrift.
Nieuwere platforms — Bluesky, Mastodon, Threads, TikTok
- Bluesky-berichten cappen op 300 tekens en zijn het uitzonderingsgeval: Bluesky telt grapheme clusters, dus de familie-emoji van zeven codepoints 👨👩👧👦 kost 1 teken, niet 7
- Mastodon standaardiseert op 500 tekens per toot, maar instance-beheerders kunnen dat verhogen tot 5.000 of zelfs onbeperkt — controleer de instance waarvandaan je post
- Threads hanteert Twitter-achtige limieten van 500 tekens met codepoint-telling
- TikTok-bijschriften staan 2.200 tekens toe, met ongeveer 100 zichtbaar boven de vouw
Reddit, Discord, Slack — long-form en community-defaults
- Reddit-titel 300 tekens (subreddit-moderators dwingen vaak <60 af via AutoModerator); reacties 10.000 tekens
- Discord standaardbericht 2.000 tekens; embed-beschrijvingen 4.096; Nitro tilt platte berichten naar 4.000
- Slack-bericht 40.000 tekens; boven 2.000 daalt de leesbaarheid scherp en negeren veel ontvangers lange berichten
Woordtelling-doelen per contenttype
Tekenlimieten domineren social en SEO; woordentellingen domineren al het andere — academisch werk, facturatie, contentmarketing, manuscripten. De tabel hieronder geeft per veelvoorkomend contenttype een streefbereik en een leestijdschatting (230 wpm, de mediaan uit de stille-leesmeta-analyse van Brysbaert 2019).
| Contenttype | Woordendoel | Leestijd @ 230 wpm | Notities |
|---|---|---|---|
| Tweet | 30-40 woorden | 10 sec | optimaliseer op teken, niet op woord |
| LinkedIn-bericht (sweet spot) | 170-250 woorden | 1 min | boven de vouw |
| Instagram-bijschrift (hook) | 20-25 woorden | <10 sec | eerste 125 tekens |
| Blogpost — kort | 500-700 woorden | 2-3 min | listicle, nieuws, hot take |
| Blogpost — standaard | 1.000-1.500 woorden | 4-7 min | tutorial, diepe gids |
| Blogpost — lang | 2.000-3.000 woorden | 9-13 min | uitgebreide gids |
| SEO-pillar-pagina | 2.500-5.000 woorden | 11-22 min | topical authority |
| Academisch essay (middelbare school) | 500-1.500 woorden | 2-7 min | wisselt per opdracht |
| Academisch essay (bachelor) | 1.500-3.000 woorden | 7-13 min | per opdracht |
| NaNoWriMo dagelijks | 1.667 woorden/dag | — | 50K woorden in 30 dagen |
| Roman — kort | 50.000-70.000 woorden | — | YA, mystery |
| Roman — standaard | 80.000-100.000 woorden | — | volwassen fictie |
| Conferentielezing (12 min @ 130 wpm) | 1.500-1.600 woorden | spreken | repeteren om te bevestigen |
| Podcastaflevering (30 min @ 130 wpm) | 3.900 woorden | spreken | gescript deel |
Leestijd is de bruikbaarste streefeenheid voor contentmarketing — lezers reageren betrouwbaarder op een label “5 minuten leestijd” dan op “1.150 woorden”. Woordental blijft de eenheid voor facturatie (vertaling per bronwoord gefactureerd), platformcompliance (de 50K van NaNoWriMo, een academisch plafond van 2.000 woorden) en contractuele afspraken. De Woordenteller toont beide in realtime terwijl je typt, plus spreektijd bij 130 wpm voor lezingen en podcasts.
6 telblunders die echte apps breken
Dit zijn de terugkerende fouten in geleverde code en verstuurde marketingcampagnes. Bij elke staat het symptoom, de grondoorzaak en de oplossing.
Blunder 1: string.length gebruiken voor tekenlimiet-validatie
Symptoom: Een gebruiker plakt een tweet met drie emoji’s die in werkelijkheid 270 codepoints telt. Je front-end-validatie zegt 276 en weigert in te dienen. Of — erger — je code accepteert een concept van 285 codepoints omdat het emoji-budget elkaar opheft, en Twitter weigert het server-side.
Grondoorzaak: String.prototype.length in JavaScript geeft UTF-16-code units terug. Elke emoji is een surrogate pair die 2 units kost. Elk astral-plane-teken (wiskundige symbolen, oude schriften) doet hetzelfde.
Oplossing: Itereer per codepoint met de spread-operator of Array.from.
// ❌ wrong
function isUnderTwitterLimit(text) {
return text.length <= 280;
}
// ✅ correct
function isUnderTwitterLimit(text) {
return [...text].length <= 280;
}
Voor diepere regex-gebaseerde codepoint-iteratiepatronen (inclusief verwerking van grapheme clusters) behandelt de Regex Cheat Sheet de vlaggen /u en /v en Unicode-property-escapes.
Blunder 2: CJK-tekst op whitespace splitsen voor woordentelling
Symptoom: Een Chinees artikel van 500 tekens rapporteert als 1 woord. De vertaalprijs daarop gebaseerd zit er 500x naast.
Grondoorzaak: CJK-talen gebruiken geen woordspaties. text.split(/\s+/) geeft één enkel token terug dat het hele essay bevat.
Oplossing: Tel elk CJK-ideogram als één woord — de conventie van Microsoft Word, Google Docs en elke native CJK-tekstverwerker.
function countWordsMixed(text) {
const cjk = (text.match(/[一-鿿-ヿ가-]/g) || []).length;
const latin = (text
.replace(/[一-鿿-ヿ가-]/g, ' ')
.match(/[A-Za-z0-9]+(?:['’-][A-Za-z0-9]+)*/g) || []).length;
return cjk + latin;
}
De Unicode-bereiken bestrijken CJK Unified Ideographs (U+4E00 tot U+9FFF), Hiragana en Katakana (U+3040 tot U+30FF) en Hangul Syllables (U+AC00 tot U+D7AF) — de vier blokken die Microsoft Words woordental als ideogram meerekent.
Blunder 3: Twitters URL-substitutie van 23 tekens vergeten
Symptoom: Een concept toont 320 tekens in je teller, inclusief een URL van 80 tekens. Je trimt 10 minuten lang, om dan te beseffen dat Twitter het origineel op 263 tekens gewoon had geaccepteerd.
Grondoorzaak: Twitter vervangt elke URL bij publicatie door een t.co-link van 23 tekens. Je ruwe teller weet dat niet.
Oplossing: Bereken de gepubliceerde lengte vooraf met raw − URL_length + 23 per URL. Bij concepten met meerdere URL’s tel je de correcties op. URL-detectie in gepubliceerde content volgt RFC 3986 — dezelfde parsing-regels die de URL Encoding & Decoding Guide doorneemt.
Blunder 4: Meta description schrijven tot 320 tekens (oude richtlijn)
Symptoom: Je hebt een meta description van 280 tekens gemaakt met de CTA aan het eind. In de Google-zoekresultaten snijdt de beschrijving halverwege een zin af bij teken 158 en verschijnt de CTA nooit.
Grondoorzaak: Tussen december 2017 en mei 2018 breidde Google de meta description-weergave kortstondig uit naar 320 tekens. Veel SEO-tutorials citeren dat getal nog steeds. Google draaide het halverwege 2018 terug naar ~160 en is daar sindsdien gebleven.
Oplossing: Schrijf op 150-160 tekens. Plaats het primaire zoekwoord in de eerste 30 tekens en de CTA in de laatste 30. Gebruik voor pagina’s met hoge inzet een pixelnauwkeurige SERP-simulator — brede glyphs (W, M, K) vreten het budget sneller op dan smalle (i, l, t).
Blunder 5: 280 tekens verwarren met 280 woorden
Symptoom: Iemand in het team schrijft “we hebben een tweet van 280 woorden nodig” en levert 1.500 tekens prima proza af. De tweet wil niet plaatsen.
Grondoorzaak: Verwarring tussen teken en woord. De twee eenheden verschillen ongeveer 5-6x voor Engelse proza.
Oplossing: Leg de regel per platform vast. Twitter, SMS en SEO-meta tellen tekens. NaNoWriMo, academische opdrachten, vertaalcontracten en de meeste content-marketingbriefings tellen woorden. Bij twijfel: controleer de eigen teller van het platform (Twitters compose-box, Words Review > Word Count) voordat je de spec vastlegt.
Blunder 6: Typografische aanhalingstekens plakken die SMS stilletjes omschakelen naar UCS-2
Symptoom: Je kopieert een klantbon-template uit een Google Doc naar je SMS-sender. Het origineel was 145 tekens en ging eruit als één GSM-7-segment. Na het plakken zijn het dezelfde 145 tekens maar wordt het afgerekend als 2 UCS-2-segmenten. De kosten verdubbelen over een campagne van een miljoen berichten.
Grondoorzaak: Google Docs en Word zetten " en ' automatisch om naar typografische aanhalingstekens " " en ' '. Die aanhalingstekens zitten niet in de GSM-7-tekenset, wat het hele bericht omschakelt naar UCS-2.
Oplossing: Normaliseer vóór verzending:
function toGsm7Quotes(s) {
return s
.replace(/[“”]/g, '"') // " " → "
.replace(/[‘’]/g, "'") // ' ' → '
.replace(/[–—]/g, '-'); // – — → -
}
Draai dit vóór factureringsgevoelige verzendingen. Twilio, MessageBird en Bandwidth tonen allemaal een encoding-veld op de respons — log het en alert wanneer UCS-2 verschijnt in templates die je als GSM-7 bedoelde.
FAQ
Wat is het verschil tussen tekentelling en woordentelling?
Tekentelling telt elk teken inclusief spaties, interpunctie en emoji’s, op de meeste moderne platforms gemeten per Unicode-codepoint. Woordentelling telt door whitespace gescheiden tokens voor Latijnse schriften en per ideogram voor CJK. Twitter, SMS en SEO-meta descriptions gebruiken tekentelling. Academische essays, NaNoWriMo-manuscripten en vertaalfacturen gebruiken woordentelling.
Waarom telt Twitter een emoji als 1 teken maar telt JavaScript ze als 2?
Twitter meet per Unicode-codepoint — elke emoji is één codepoint, één teken. string.length in JavaScript meet UTF-16-code units. De meeste emoji’s liggen boven U+FFFF en zijn in UTF-16 als surrogate pair gecodeerd, dus ze kosten twee code units en .length geeft 2 terug. Gebruik [...text].length of Array.from(text).length om de codepoint-telling te krijgen die Twitter daadwerkelijk meet.
Waarom is het SMS-tekenlimiet soms 160 en andere keren 70?
SMS gebruikt standaard 7-bits GSM-7-encoding, wat 160 tekens oplevert in een payload van 140 bytes. Bevat het bericht een niet-GSM-7-teken — emoji, typografische aanhalingstekens, CJK, accenten op Latijns schrift buiten een kleine set — dan schakelt het hele bericht naar 16-bits UCS-2-encoding en daalt het segmentlimiet naar 70 tekens. Eén emoji ergens in het bericht triggert de omschakeling.
Wat is de ideale meta description-lengte in 2026?
Mik op 150-160 tekens. Googles desktop-SERP kapt rond 155-165 afhankelijk van de weergavepixelbreedte; mobiel knipt tussen 100 en 120. Onder de 120 tekens vervangt Google je beschrijving vaak helemaal door een passage uit de paginatekst. Begin met het primaire zoekwoord in de eerste 30 tekens en eindig met de CTA in de laatste 30, zodat de boodschap een afkapping in beide richtingen overleeft.
Tellen spaties en emoji’s mee in het tekenlimiet?
Ja, op vrijwel elk platform. Spaties, regeleinden, interpunctie en emoji’s tellen elk als één Unicode-codepoint. De twee uitzonderingen om te kennen: SMS, waar emoji’s de hierboven beschreven encoding-omschakeling triggeren, en Bluesky, dat grapheme clusters telt, zodat een emoji van meerdere codepoints zoals de familie 👨👩👧👦 1 teken kost in plaats van 7.
Hoe wordt het woordental berekend voor Chinese, Japanse en Koreaanse tekst?
Elk CJK-ideogram telt als één woord — de conventie van Microsoft Words Chinese-modus-woordental, Google Docs, native CJK-editors en elk commercieel translation-memory-systeem. Een Chinees essay van 500 tekens rapporteert als 500 woorden. Gemengde tekst telt CJK-ideogrammen per teken en Latijnse tokens per whitespace, en sommeert beide.
Hoe verwerkt Twitter de URL-lengte binnen het limiet van 280 tekens?
Twitter omhult bij publicatie elke URL automatisch in een t.co-shortlink van 23 tekens, ongeacht de oorspronkelijke lengte. De gepubliceerde lengte volgt de formule published = raw − URL_length + 23 per URL. Een concept van 320 tekens met daarin één URL van 100 tekens gaat als 243 tekens de deur uit. Twitter herkent URL’s via RFC 3986-patronen, dus querystrings en fragmenten worden in het URL-token meegenomen.
Verder lezen
- Regex Cheat Sheet — patroonmatching voor tekenvalidatie, Unicode-property-escapes
- Text Diff Online-gids — twee stukken tekst vergelijken, regel voor regel en teken voor teken
- URL Encoding & Decoding Guide — regels voor het escapen van tekens wanneer tekst door URL’s reist
- Understanding Base64 — de andere helft van “bits naar tekens”-encoding, toegepast op e-mail en binaire data