Skip to content
Deftkit

Word Counter — Words, Characters, Reading Time

Count words, characters, sentences, paragraphs and estimated reading time instantly. Free, runs in your browser, no signup.

Words
97
Characters
552
454 without spaces
Sentences
7
Paragraphs
3
Reading time
23 seconds
at 250 wpm (silent)
Speaking time
39 seconds
at 150 wpm (spoken)
Avg word
4.7 chars
Lines
5
longest: retrospectiv… (13)
Common length limits
Twitter/X
552 / 280
LinkedIn post
552 / 3000
SMS (1 segment)
552 / 160
Meta description
552 / 160

All counts computed in your browser. Nothing is sent to a server, so you can paste unpublished drafts, internal docs, or private writing without concern.

Why count words

Writers count words for reasons editors do not. An editor needs to fit a column. A contracted freelancer gets paid by the word. A marketer has to keep a tweet under 280 characters or a meta description under 160. A student has a 2,500-word essay limit. A novelist has a daily habit. A product manager has a Slack post that needs to land in one scroll. Every one of these is just "does this string of text fit a constraint?" — and the answer requires counting accurately.

This tool gives you the counts instantly, in the browser, without uploading your text anywhere. Paste your draft, read the numbers, close the tab.

What counts as a "word"?

Surprisingly hard question. Different tools give different answers. This tool uses the pragmatic definition that Microsoft Word, Google Docs, LibreOffice, and most word processors use:

A word is a run of characters separated by whitespace.

Consequences:

  • Hyphenated compounds like self-driving count as one word, because the hyphen is not whitespace
  • Contractions like don't and we're count as one word
  • URLs and email addresses count as one word each (usually what you want)
  • A number like 1,234 is one word; a decimal like 3.14 is one word
  • A standalone punctuation mark is not counted as a word ( Hello , world has 2 words, not 3)
  • CJK text is counted by whitespace-separated runs, which undercounts Chinese, Japanese, and Korean dramatically because those languages don't use inter-word spacing. For CJK content, use the character countinstead — it's a better proxy for length in those scripts

Reading time, explained

The tool estimates two kinds of time:

  • Silent reading — 250 words per minute. This is the average for adults reading a familiar topic in their native language without distraction. Easier texts (novels, blog posts) go faster; denser texts (academic papers, legal contracts) go slower. Medium.com famously uses 265 wpm; most other sites use 220–250
  • Speaking time — 150 words per minute. This is the comfortable pace for a presentation, podcast, or voiceover. Auctioneers hit 400+; conversational pace is ~160; presentation pace is ~150; slow-and-deliberate is ~120. Use 150 as your default for rehearsal timing

Both estimates are rough — a 2-minute result could be anywhere from 1.5 to 2.5 minutes depending on content, audience, and delivery. Use them as a sanity check, not a commitment.

Sentences and paragraphs

Sentences are detected by a simple pattern: any run of characters ending in ., !, or ?. This works for 95% of English prose but has two known miscounts:

  • Abbreviations inflate the sentence count. "Dr. Smith met Mr. Jones in Washington, D.C." is counted as 4 sentences, not 1, because there are 4 period-ends. A more sophisticated parser would need a list of known abbreviations
  • Missing terminators: a draft without trailing punctuation (like "Fix this bug") is still counted as a sentence. This is deliberate — most drafts have at least one unterminated sentence at the end, and counting zero sentences for a clearly non-empty text would be confusing

Paragraphsare separated by one or more blank lines. Hitting Enter once (a hard line break) doesn't create a new paragraph — you need a blank line. This matches how Markdown and most word processors define a paragraph break.

Common length limits built in

When your text has content, the tool shows progress bars against the most common character-limit constraints:

  • Twitter/X post — 280 characters (up from 140 in 2017)
  • LinkedIn post— 3,000 characters (LinkedIn truncates with "see more" after ~210 characters on mobile and ~250 on desktop, but the hard cap is 3,000)
  • SMS single segment — 160 characters for GSM-7 encoding (plain text only). A character outside GSM-7 (emoji, accented letters, CJK) forces UCS-2 encoding and drops the per-segment limit to 70 characters
  • Meta description— 160 characters is what Google typically shows in search results. Longer descriptions get truncated with "…". 120–155 is the optimal range

When your text crosses any of these limits, the bar turns red.

Other stats, and why they matter

  • Average word length— a rough readability signal. Academic text averages 5.2–5.5 chars/word; mainstream journalism averages 4.5–4.8; children's writing averages 4.0–4.3
  • Longest word — useful for finding typos (a 18-character "word" is almost always a URL, a typo, or a compound noun that could be broken up)
  • Lines — different from paragraphs. Line count is literal newline count. Useful for code, CSV, and content that depends on line structure
  • Characters without spaces — what most freelance payment systems use to prevent padding. Also what some academic word count rules enforce ("2,500 characters including spaces" vs "2,500 characters excluding spaces" — always ask)

Privacy

All counting happens in your browser. Your text is never sent to a server, never logged, never analyzed. Safe for private writing, unpublished drafts, internal communications, and sensitive documents. The counts update as you type — the text never leaves your device.

Frequently asked questions

Why does Word give a different word count?

Microsoft Word, Google Docs, and this tool all use the "whitespace separates words" definition, so the counts should match within 1–2 on normal prose. If you see a bigger gap, the most likely causes are: (a) Word counts footnotes and Google Docs doesn't, (b) Word has a setting to include/exclude headers and footers, or (c) one tool is counting hyphenated compounds as one word and the other as two. This tool counts hyphenated compounds as one word (matching Word's default).

Does this handle Chinese or Japanese text?

The character count works correctly for CJK. The word count does not — because CJK text has no inter-word spaces, the word count will be dramatically lower than what a native speaker would call "words". For Chinese specifically, a rough heuristic is characters × 0.7 as an English-word-equivalent (each Chinese character is denser than an English word). Use the character count as your primary metric for CJK content.

How accurate is the reading time?

It's an estimate. Real silent reading speeds range from ~180 wpm (careful reading of complex material) to ~400 wpm (skimming). The default of 250 wpm is the middle of the range for comfortable reading of general-audience prose. If you want a more conservative estimate for technical content, multiply by 1.3.

What about SEO keyword density?

Keyword density as a ranking factor has been deprecated by Google since at least 2010. Modern SEO cares about topical relevance, semantic coverage, and user intent — not a literal count of how many times a keyword appears. This tool deliberately does not show keyword density because chasing it leads to keyword-stuffed content that hurts ranking. If you want to verify a target keyword appears at all, use browser Find (⌘F / Ctrl+F) in your editor.

Does emoji count as a character?

Yes, but the number of characters an emoji takes depends on its encoding. A simple emoji like 😀 is 1 character in JavaScript's string length but 2 UTF-16 code units (surrogate pair). A flag emoji like 🇯🇵 is 1 perceived character but 2 code points (4 UTF-16 code units). Some counting tools use grapheme clusters (perceived characters); this tool uses JavaScript's native .length which counts UTF-16 code units. For plain English text, the difference is invisible.

Can I use this for a writing goal / habit?

Sort of — it gives you the count instantly, but it doesn't track history. For habit tracking, paste your daily output at the end of the day and log the numbers manually in a spreadsheet or journal. The lack of persistence is intentional: this tool stays private (your text is never stored) and stateless (nothing to sync or lose).

Is my data sent anywhere?

No. Everything runs in your browser via native JavaScript string methods. No network call, no analytics on the text you paste, no logging. Close the tab and every character you typed is gone.