Word Counter

Word Counter

Words, characters, sentences and reading time — counted by the rules of your script, not by counting spaces. Arabic, Indic, Chinese, Japanese, Thai and Latin text all measured correctly.

0
Words
0
Characters
0
No spaces
0
Sentences
0
Paragraphs
0s
Reading time
0s
Speaking time
Waiting for text The script is detected from what you type — each one is counted its own way.
Measure against a real field limit
How to Use
1. Paste or type
Drop in text of any script. Counting runs on the first keystroke, entirely in your browser — nothing is uploaded, nothing is stored.
2. Read the script panel
The detected script is named under the counts, with the breakdown that script actually needs — Arabic letters apart from harakat, Indic matras apart from base letters, characters and segmented words for Chinese, Japanese and Thai.
3. Check it against a limit
Tap a platform chip to measure the text against that field’s real ceiling, with a marker showing where the feed truncates it — the number that decides whether anyone reads your first line.

What a Latin word counter gets wrong

Almost every word counter online splits text on spaces and counts characters with JavaScript’s .length. Both shortcuts are fine for English and quietly wrong for most of the world’s writing. Below is what actually breaks, script by script — each of these is handled correctly by the counter above.

ScriptWhat breaks in a space-splitting counterWhat this page does
ArabicHarakat (fatha, damma, kasra, shadda, sukun) are separate Unicode code points, so a vocalised word like مُحَمَّد is reported with far more characters than it has letters. Tatweel (ـ) inflates the count further while adding no letter at all.Letters and harakat are counted on separate lines, and tatweel is reported apart from both.
Devanagari, Bengali, Tamil, Telugu, Kannada, Malayalam, Gujarati, GurmukhiMatras are combining marks, not letters. कि is one syllable written with two code points, so a naive counter reports two characters where a reader sees one unit. The virama that forms conjuncts is counted as a third.Base letters, matras and viramas are each reported, and the character count uses grapheme clusters so कि counts as one.
Chinese, JapaneseThere are no spaces between words. Splitting on whitespace returns 1 word for an entire paragraph — the single most common failure in the category.Real word segmentation via the browser’s own ICU tables, plus a character count, since character count is the metric these languages actually use.
Thai, Khmer, Lao, BurmeseSame no-space problem, made worse because line-breaking rules differ from word rules. Most counters return 1.Dictionary segmentation for words; characters reported alongside, which is what publishers count.
Emoji and flags👨‍👩‍👧 is one picture built from three emoji joined by two zero-width joiners: 5 code points, 8 UTF-16 units. Counters report 8, or 5, almost never 1.Counted as one grapheme cluster, the way a reader sees it — with the code-point figure shown separately when the two disagree.
Any script above the Basic Multilingual PlaneJavaScript strings are UTF-16, so .length returns 2 for a single mathematical, historic or emoji character. Character counts silently double.Characters are grapheme clusters; code points and UTF-16 units are shown as extra rows so you can see all three when they differ.

Where the reading times come from

Most word counters state a reading time without ever saying what rate produced it, and the figure most of them use — 200, 250 or 300 words per minute — traces back to no particular study. The numbers on this page come from two published sources, and where a value has to be inferred, that is said outright rather than hidden.

RateValueSource
Silent reading, English non-fiction238 words/minBrysbaert (2019), a meta-analysis of 190 studies covering 18,573 participants — the largest review of reading rate published.
Silent reading, English fiction260 words/minSame meta-analysis. Fiction is faster because its words are shorter, not because it is easier.
Reading aloud, English183 words/minSame meta-analysis, drawn from 77 studies and 5,965 participants.
Reading aloud, 17-language mean184 words/min · 863 characters/minThe IReST standardised texts (Trauzettel-Klosinski & Dietz, 2012), measured on 436 native speakers across German, English, Arabic, Chinese, Spanish, Finnish, Flemish, French, Hebrew, Italian, Japanese, Polish, Portuguese, Russian, Slovenian, Swedish and Turkish.

The honest gap: no equivalent silent-reading study exists for most non-Latin scripts. For those, this page takes the measured oral rate and scales it by 1.30 — the silent-to-oral ratio Brysbaert reports for English (238 ÷ 183). That is an assumption, not a measurement, and it is stated here rather than presented as a fact. Character-based scripts are timed at 863 characters per minute, since counting their words is the less meaningful of the two figures.

The limit that matters is not the limit

Every platform publishes a maximum, and almost nobody hits it. The number that decides whether a post gets read is the visible window — how much shows before the feed collapses the rest behind “more”. A LinkedIn post may hold 3,000 characters, but the first 210 do the work. The counter above marks both, so you can see where your text gets cut, not just whether it fits.

FieldMaximumVisible before truncation
X / Twitter post280 characters (free tier)All of it. Premium raises the ceiling to 25,000, which almost nothing in the feed rewards.
Instagram caption2,200 charactersAbout 125 — roughly one and a half lines.
LinkedIn post3,000 charactersAbout 210 on desktop before “see more”.
TikTok caption4,000 characters, raised from 2,200Roughly 100–150 in the feed.
YouTube title100 charactersAbout 60 in search and suggested listings.
YouTube description5,000 charactersAbout 150 before “Show more”.
SEO page titleNo hard limitGoogle truncates near 60 characters.
Meta descriptionNo hard limitGoogle truncates near 155–160 characters.

One caution for non-Latin writers: these ceilings are counted in characters, not bytes, on every platform above — so Arabic, Hindi and Chinese text is not penalised the way it is in SMS, where a single non-Latin character switches the whole message to UCS-2 encoding and cuts the segment length from 160 characters to 70.

Three different things called “a character”

When two tools disagree about a character count, it is almost always because they are measuring different units. There are three, and they only coincide for plain English:

Grapheme clusters are what a reader perceives as one character — é, कि, 👍🏽, مُ. This is the count shown in the Characters tile, because it is the only one that matches what someone sees on the page.

Code points are the Unicode values behind them. é may be one code point (U+00E9) or two (e + U+0301) depending on how the text was normalised — identical on screen, different in storage. Copy the same accented word from two apps and you can genuinely get two different counts from the same tool, and neither is a bug.

UTF-16 code units are what JavaScript’s .length returns and what most naive counters report. Anything outside the Basic Multilingual Plane — emoji, historic scripts, mathematical alphanumerics, some CJK extensions — takes two units each, so the count comes out roughly double for emoji-heavy text.

Database fields, form validators and API limits do not agree on which of the three they enforce, which is why a caption that passes one check fails another. The counter above shows all three whenever they diverge, so you can tell which limit you are actually near.

About this word counter

This tool runs entirely in the browser. Text is never uploaded, never logged, and never leaves the device — which matters if what you are counting is a draft contract, a thesis chapter, or client work under NDA. Closing the tab is the whole delete process.

The segmentation is done with Intl.Segmenter, the browser’s own interface to the ICU library that Unicode maintains — the same segmentation data that Chrome, Safari and Firefox use to decide where a double-click selects a word. That is why Chinese, Japanese and Thai return real word counts here rather than the number 1: the dictionary doing the work already ships inside the browser, and most counters simply never call it.

Counting words is older than the tools that do it. Word limits in journalism came from the physical width of a newspaper column; character limits in software came from the size of a database field. Both survive as habits after the constraint disappeared — which is why a modern platform can allow 4,000 characters while showing 150, and why the useful question is rarely “how many” but “how many before it stops being visible”.

FAQ

Frequently Asked Questions

Why does this give a different word count than Microsoft Word?
Word applies its own rules: it counts a hyphenated compound as one word, treats a number as a word, and counts text inside footnotes only if you ask it to. This page uses Unicode word segmentation instead, which is the standard your browser already uses to decide what a double-click selects. For plain English prose the two land within a percent of each other; for hyphenation-heavy or mixed-script text they diverge, and neither is wrong — they are answering slightly different questions.
Why do other counters say my Chinese text is one word?
Because they split on spaces, and Chinese does not use them. A whole paragraph contains no space, so a space-splitting counter returns 1. This page calls the browser’s built-in segmentation dictionary instead, which finds real word boundaries. It also shows the character count, because character count — not word count — is the figure Chinese and Japanese publishing actually uses.
Does it count Arabic harakat as letters?
No, and that is the point. Harakat (fatha, damma, kasra, shadda, sukun and the rest of U+064B–U+0652) are combining marks that sit above and below a letter. The script panel reports letters and harakat on separate lines, so a fully vocalised text does not appear to be twice as long as the same text unvocalised. Tatweel — the kashida stretch character ـ — is reported separately too, since it adds width but no letter.
How is one emoji counted?
As one character. A family emoji like 👨‍👩‍👧 is three separate emoji joined by zero-width joiners — five code points, eight UTF-16 units — but it renders as a single picture, so it counts as one grapheme cluster here. When the grapheme count and the code-point count differ, both are shown, because some platform limits enforce the second rather than the first.
Is my text uploaded anywhere?
No. Every count is computed in your browser with JavaScript; there is no server call, no analytics event carrying your text, and nothing written to storage. You can confirm it by opening the network tab and typing — nothing goes out. Working offline works too, once the page has loaded.
Where does the reading time number come from?
Silent reading of English uses 238 words per minute, from Brysbaert’s 2019 meta-analysis of 190 studies and 18,573 participants. Reading aloud uses 183 wpm from the same review. Other languages use the IReST standardised reading texts (2012), measured on 436 native speakers across 17 languages, which give a mean of 184 words per minute and 863 characters per minute read aloud. The sources are listed on this page rather than left implied.
Why is the reading time for my language marked as an estimate?
Because published silent-reading rates exist for English and very few other languages. For everything else this page takes the measured read-aloud rate and scales it by 1.30 — the ratio between English silent and English oral reading. It is a reasonable inference, not a measurement, so it is labelled as one instead of being presented as data.
What counts as a sentence?
A run of text ending in a sentence-final mark. The detector recognises the Latin full stop, question mark and exclamation mark, and also the Arabic full stop ۔, the Devanagari danda , the Burmese and the ellipsis. Abbreviations such as "Dr." will still be read as sentence ends — no counter solves that without a dictionary of abbreviations per language, and any tool claiming otherwise is guessing.
Does it work for Hindi, Bengali, Tamil and other Indic scripts?
Yes, and it separates the parts that matter. Base letters, matras and vowel signs, and the virama that forms conjuncts are each reported. The character tile uses grapheme clusters, so कि counts as one character rather than two — which is what a reader sees and what a page-layout estimate needs.
Can I use it to check an SEO title or meta description?
Yes — pick the SEO title or meta description chip and the bar shows your text against the point where Google truncates: roughly 60 characters for a title, 155–160 for a description. Neither is a hard limit imposed by Google; both are where the text stops being visible, which is the limit that actually matters.
Why does the platform bar show two markers?
The filled bar is the platform’s hard maximum. The thin vertical line is the visible window — how much shows before the feed hides the rest behind "more". LinkedIn allows 3,000 characters but shows about 210; TikTok allows 4,000 and shows about 150. Writing to the maximum and ignoring the window is the most common reason a good post reads as a wall of text.
Do character limits count bytes or characters?
The social and search limits on this page are counted in characters, so non-Latin text is not penalised. SMS is the exception worth knowing: a single non-Latin character switches the entire message from GSM-7 to UCS-2 encoding, dropping the segment from 160 characters to 70. One Arabic letter in an otherwise English message more than doubles the cost of sending it.
What is keyword density and is the 2% rule real?
Density is how often a word appears as a share of total words, shown here for the five most repeated words. The frequently quoted "aim for 1–2%" target has no basis in any current ranking system — it is a holdover from keyword-matching search engines of the early 2000s. The list is useful for catching unintentional repetition in your own writing, which is a style problem, not a ranking one.
Does it count words in a PDF or Word file?
Not directly — this page takes pasted or typed text. Select the text in the document, copy it, and paste it in. That is deliberate: accepting file uploads would mean sending your document to a server, and the privacy guarantee on this page depends on nothing ever leaving your browser.
Why do two tools disagree about my character count?
Almost always because they measure different units. Grapheme clusters are what a reader sees, code points are the Unicode values behind them, and UTF-16 code units are what JavaScript’s .length returns — and they only agree for plain unaccented English. This page shows all three whenever they diverge, so you can see which one a given form or database field is enforcing.
Is there a limit on how much text I can paste?
No fixed cap. Counting is re-run on each keystroke, so extremely long documents — hundreds of thousands of words — will feel less instant on an older phone, since word segmentation is the expensive part. For normal drafts, articles and posts there is nothing to notice.
Copied!