Skip to main content

Free Word Counter

Count words, characters, sentences, and paragraphs. Estimate reading time.

Works offline once loaded

0

Words

Your text is saved automatically in this browser only — nothing is uploaded.

Character limit target

0

Characters

0

No spaces

0

Sentences

0

Paragraphs

—

Reading time

—

Speaking time

0

Unique words

—

Longest word

Common uses

  • Word Counter for EssaysCheck your essay word count and reading stats — hit minimum word requirements and polish your writing.
  • Word Counter for Blog PostsAnalyse blog post length, reading time, and keyword density — write SEO-optimised content that ranks.
  • Word Counter for Social MediaFit your text within social media character limits — Twitter, Instagram, LinkedIn, TikTok, and more.
  • Word Counter for SEOOptimise your content for search engines — check word count, keyword density, and readability stats.
  • Word Counter for Academic WritingMeet word count requirements for research papers, theses, dissertations, and journal submissions.

How It Works

All analysis runs entirely in your browser using hand-written JavaScript functions and the browser's built-in Intl.Segmenter API — no server receives your text, and results update within 100 ms of each keystroke.

  1. 1
    Text tokenization
    When you type or paste, the tool checks whether the text contains CJK characters (Chinese, Japanese, Korean). For those scripts it uses the browser's Intl.Segmenter API with word granularity, which correctly splits languages that don't separate words with spaces. Latin-alphabet and other spaced text is split on whitespace, matching normal user expectations.
  2. 2
    Grapheme-aware character counting
    Characters are counted as grapheme clusters, not raw UTF-16 code units. Intl.Segmenter (grapheme granularity) is used when available, so an emoji like a family group or a letter with a combining accent counts as 1, not 2 or more. The tool separately reports characters with and without spaces.
  3. 3
    Readability scoring
    For texts that are at least 50% Latin-alphabet words and have at least 10 words, the tool computes the Flesch Reading Ease score and Flesch-Kincaid Grade Level using syllable counting heuristics on each word. CJK and mixed-script text is explicitly excluded from these scores to avoid meaningless results.
  4. 4
    Keyword density and export
    The top 10 most frequent words of 4+ characters (or 2+ characters for CJK) are ranked by occurrence count and shown with percentage density. The full report — all stats plus readability and keyword data — can be copied to clipboard or downloaded as a plain-text or CSV file using the browser's Blob and download APIs.

Guide

Worked example

Click "Try a sample" at the bottom left of the empty box. The big number shows 98 "Words", and the cards read "Characters" 581, "No spaces" 482, "Sentences" 7, "Paragraphs" 3, "Reading time" "< 1 min", "Speaking time" "< 1 min", "Unique words" 84 and "Longest word" typographers. In the "Readability" panel, "Reading ease" shows 65 with "Medium", "Grade level" 7.6 and "Avg words per sentence" 14.0. "Top keywords" starts with this and writing, each 2× and 3.1%. Press "X / Twitter post (280)" and the bar reads 581 / 280 with "301 characters over the limit". Press "SMS (160)" instead: the sample contains a long dash, which is outside the basic SMS alphabet, so it reads "9 messages · Unicode (70 per message, 67 when split) · 581 / 603" and "22 characters left".

Which settings to use, and the limits

  • Know how each number is counted. "Words" are split on whitespace, so a hyphenated word such as well-known is one word, and a dash with spaces around it counts as one too. "Characters" includes spaces and line breaks; "No spaces" removes every space, tab and line break. Emoji and letters with combining accents count as one character. "Paragraphs" are blocks separated by a blank line, and "Unique words" ignores capitals and punctuation marks. Chinese, Japanese, Korean, Thai, Lao, Burmese and Khmer, which are written without spaces, are split by the browser's own word splitter.
  • Pick a character-limit target. Under "Character limit target" press one of ten buttons: "X / Twitter post (280)", "SMS (160)", "SEO title (60)", "Meta description (160)", "Instagram caption (2,200)", "LinkedIn post (3,000)", "LinkedIn headline (220)", "Google Ads headline (30)", "WhatsApp status (700)" or "TikTok caption (2,200)". A bar shows used against allowed, then "N characters left" or "N characters over the limit". It turns amber above 90 percent and red when over. Press the same button again to turn it off. Apart from X and SMS, the count is the Characters figure, spaces included.
  • Check X and SMS the way they are counted. For "X / Twitter post (280)" every link counts as 23, and emoji and Chinese, Japanese or Korean characters count as 2, so the figure can differ from Characters. For "SMS (160)" the tool checks whether every character is in the basic GSM-7 alphabet. If so, one message holds 160 characters, or 153 each when split, and ^ { } [ ] ~ | \ and the euro sign count as two. One character outside it, such as a curly quote, a long dash or an emoji, switches the whole text to Unicode: 70 per message, or 67 when split.
  • Set a word goal. Type a whole number from 1 upwards into "Word goal" (the box suggests "e.g. 500"). A bar shows your words so far against the goal, with a percentage and "N words to go", and then "Goal reached" with a tick. A decimal is rounded down, and zero or a negative number switches the bar off. The goal is saved in this browser, separately from the text, so it is still there after a refresh.
  • Use the time and readability figures as a guide. Reading time assumes 238 words a minute and speaking time 130. Anything under a minute shows "< 1 min"; longer times are rounded to whole minutes, such as "3 min". The "Readability" panel appears for text with at least 10 words that contain Latin letters, more than half of the words Latin, and at least one sentence. "Reading ease" runs from 0 to 100: "Very easy" from 90, "Easy" from 70, "Medium" from 50, "Difficult" from 30, otherwise "Very difficult". Syllables are estimated for English, so treat the scores as approximate.
  • Use the keyword table and export the results. "Top keywords" lists up to ten words of four or more characters by count, with each word's share of the words counted, not of all words. Nothing is filtered out, so a word like "this" can lead. "Copy stats" copies the figures as text lines. "Download .txt" and "Download .csv" save word-count-report.txt and word-count-report.csv with the same figures plus readability and the keywords; the CSV has the header Metric,Value. All three buttons stay greyed out until the text has at least one word.

Common problems and how to fix them

I pressed "Clear" and the text disappeared.
"Clear" empties the box and deletes the saved copy at the same moment. An "Undo" button takes its place in the same corner and puts the text back, but it stays for only 6 seconds. After that the text cannot be restored from this page, so press "Undo" quickly. Refreshing will not bring the text back either, because the saved copy is gone.
The "Readability" panel is not showing.
The panel needs at least one sentence and at least 10 words that contain Latin letters, with more than half of all the words being Latin. It is also hidden whenever the text includes Chinese, Japanese, Korean, Thai, Lao, Burmese or Khmer characters, because the note says the Flesch scores are tuned for English text. Add more text, or remove the non-Latin passages, and the panel appears.
"Sentences" shows a lower number than I expected.
A sentence ends at . ! ? or the matching marks in Chinese, Japanese, Hindi, Urdu and Arabic. Periods inside numbers such as 3.14, web addresses, abbreviations such as "Dr." or "etc." and initials such as U.S. do not count, nor does a period followed by a lowercase word or a number. Text with no end punctuation, such as a list of headings, counts as one sentence, and "..." counts once. Add full stops where you want a sentence to end.
A lone dash or bullet counted as a word.
Words are split on whitespace, so a symbol with spaces on both sides, such as a dash, an ampersand or a bullet, is counted as a word of its own. Remove the spaces around it, or subtract it by hand. For Chinese, Japanese, Korean and Thai text the count comes from your browser's word splitter, so a different browser can give a slightly different number.
My text was already there when I came back.
The note under the box says "Your text is saved automatically in this browser only". The text is written to this browser's local storage a moment after you stop typing and is put back when the page opens, even if it came from "Try a sample". It stays on this device and this browser. On a shared computer press "Clear" when you finish, which removes the saved copy.

How it compares

Use this when you need a number for a specific target: a post, a text message, a meta description or a word goal. You can only type or paste text; it cannot open Word or PDF files, and it has no page count, spell check or grammar check. The readability scores rest on an estimated syllable count and are tuned for English, and the keyword table does not remove common words, so both are a rough guide. For a long formatted document with footnotes or tracked changes, count in the program that holds the document, or paste the section you want here. The text stays in your browser and is not uploaded.

Related Tools

Frequently Asked Questions