ToolActToolAct

Word Counter

Real-time text statistics: characters, words, lines, paragraphs, and more

Input Text

Basic Statistics

Total Characters0
Characters (no spaces)0
Chinese Characters0
English Words0
Numbers0

Structure Statistics

Lines0
Paragraphs0
Sentences0

Reading Estimate

Estimated Reading Time
1 second|1 seconds
Estimated Speaking Time
1 second|1 seconds

Options

What is Word Counter?

Word Counter is a tool for real-time text statistics including character count, word count, line count, and more. Whether you're writing articles, papers, code comments, or social media content, this tool helps you quickly understand your text. It supports mixed Chinese and English text, intelligently recognizing Chinese characters and English words for separate counting. It also provides reading time estimates to help you understand how long it takes readers to finish your content. A word counter helps with articles, essays, SEO copy, social posts, translations, abstracts, and input limits. Counting rules can differ by language and platform: hyphenated words, numbers, CJK text, emoji, punctuation, and contractions are not always treated the same way. When a requirement is formal, the counting method should be clarified. This tool gives a fast working estimate, but the final count may still need to be checked in the target submission system.

How to Use

Basic Operations

  1. Type or paste your text in the left text box
  2. Statistics will update in real-time on the right panel
  3. Adjust options as needed (punctuation, newlines, etc.)
  4. Clear, paste, or copy text anytime

Counting Rules

  • Total characters: All characters including spaces, punctuation, and newlines
  • Chinese characters: Counts all Chinese (CJK) characters
  • English words: Counts words composed of letters
  • Paragraphs: Non-empty text blocks separated by blank lines
  • Reading speed: 350 chars/min for Chinese, 225 words/min for English

Use Cases

Measure mixed Chinese and English copy without leaving the editorPaste bilingual text and see total characters, characters without spaces, Chinese characters, English words, numbers, lines, paragraphs, sentences, and reading or speaking estimates update live. This is useful for product copy, subtitles, social posts, and support macros where different languages are counted differently. The text is processed in the local browser, so draft copy never leaves the device while the counter is running.
Trim content against publishing and interface limitsUse the counts while tightening meta descriptions, button labels, form hints, release notes, or app-store text. The clear, paste, and copy controls support quick edits, and the newline option helps when the target system treats line breaks as part of the character budget.
Estimate narration length before recording or presentingFor scripts, course notes, demo walkthroughs, and short speeches, the reading and speaking estimates give a fast timing check before a recording session. The line and paragraph counts also reveal pasted text that lost its intended structure.
Compare counting rules before submitting to a strict formToggle between character counts that include or exclude spaces, and between counting hyphenated phrases as one word or several, to match the target portal's policy. Some exam and visa systems still apply their own tokenizer, so treat the page numbers as a working estimate rather than a guarantee. The reading time defaults assume roughly 225 words per minute for English prose and 350 characters per minute for Chinese, which fits a typical adult reader; a CJK character is not a word, so the two scales are not directly comparable without conversion.
Audit SEO metadata fields during a page launchDrop in the page title, meta description, slug, and Open Graph copy and watch every limit at once: titles near 60 characters, descriptions near 155, and OG fields near 90. Exporting or screenshotting the final counts keeps a record for the post-launch SEO checklist. Paragraph count is the easy giveaway for empty lines: the tool increments the paragraph total only when a block contains non-whitespace text, so two consecutive blank lines still register as one paragraph break rather than two.

Technical Principle

Word counting splits on Unicode whitespace using a regular expression close to `text.trim().split(/\s+/).filter(Boolean)` for Latin scripts, which matches ASCII spaces, tabs, newlines, and Unicode separators like U+00A0 (non-breaking space) and U+2028 (line separator). This rule works for English, French, German, and other space-separated languages, but breaks down for Chinese, Japanese, and Thai where there is no whitespace between words. CJK text is therefore counted by character: `[...text].length` rather than `text.length`, because the spread operator iterates Unicode code points and correctly handles surrogate pairs for characters above U+FFFF (e.g. CJK Unified Ideographs Extension B starting at U+20000 and most emoji at U+1F300+). The CJK character class itself is detected with the Unicode property escape `/\p{Script=Han}/u` for Chinese ideographs. The `length` property of a JavaScript string counts UTF-16 code units, not characters, so `'👨‍👩‍👧'.length === 8` while the visible glyph is one grapheme cluster made up of three emoji joined by U+200D Zero-Width Joiner. The accurate count uses `Intl.Segmenter('en', { granularity: 'grapheme' })`, available in all modern browsers since 2023; for word-level segmentation in any language including CJK, `Intl.Segmenter(locale, { granularity: 'word' })` follows Unicode Standard Annex #29 and is the most correct option when it is available. Sentence boundaries are detected by `[.!?…。!?]+` followed by whitespace or end-of-string, and paragraphs by two or more consecutive line breaks (`/\n\s*\n/`). Reading and speaking estimates apply published reading-rate constants. Brysbaert (2019) meta-analysis puts adult silent reading at 238 words per minute for non-fiction English, which is why 225-250 wpm is the common UI default. Chinese silent reading averages 350-500 characters per minute. Speaking pace is slower: TED talks average 163 wpm, and audiobook narration targets 150-160 wpm. Twitter's 280-character limit counts CJK and most emoji as 2 weighted characters via its `twitter-text` library, while a regional indicator pair (a country-flag emoji) counts as 4 UTF-16 code units in raw `.length`.

  • Whitespace word split: `text.trim().split(/\s+/).filter(Boolean)` works for Latin scripts; fails on CJK and Thai which have no inter-word spaces.
  • CJK character count uses `[...text].length` to iterate Unicode code points correctly (handles surrogate pairs above U+FFFF, e.g. extended ideographs and emoji).
  • `string.length` returns UTF-16 code units, not graphemes: a 👨‍👩‍👧 family emoji has `.length === 8` but is one visible character.
  • Most accurate segmentation: `Intl.Segmenter(locale, { granularity: 'word' | 'grapheme' })` implements Unicode Standard Annex #29.
  • Reading speed defaults: English 225-250 wpm silent (Brysbaert 2019), Chinese 350-500 chars/min; speaking 150-160 wpm for narration, 163 wpm for TED average.
  • Sentence split: `[.!?…。!?]+\s+`; paragraph split: `\n\s*\n`; line count: `text.split('\n').length`.
  • Twitter weighs CJK and most emoji as 2 chars against the 280 limit via `twitter-text`; a flag emoji (regional indicator pair) is `.length === 4` in raw UTF-16.

Examples

Short English sentence

Input:  Hello world, this is a test.

Total characters:        28
Characters (no spaces):  23
Words:                   6
Sentences:               1
Reading time:            ~2 seconds (225 wpm)

Mixed Chinese and English copy

Input:  Hello 你好世界, this is ToolAct.

Total characters:    28
Chinese characters:   4   (你好世界)
English words:        4   (Hello, this, is, ToolAct)
Numbers:              0

Twitter post under the 280-character limit

Draft:  Launching a new browser-only toolbox today — 112 dev tools,
        zero uploads, zero tracking. Check it out at toolact.com.

Total characters: 124  (within 280-char Twitter limit)
Words:            22
Lines:            2

Estimate a 5-minute speech

Script:  ~750 English words

Reading time:   3 min 20 sec (225 wpm silent reading)
Speaking time:  5 min 0 sec  (150 wpm speaking pace)
Paragraphs:     5  |  Sentences: 42

Check SEO meta description length

Title:        "ToolAct - 112 Online Developer Tools, Free and Private"
              -> 56 characters (Google shows ~60)

Description:  "Format JSON, convert timestamps, generate cron expressions,
               and run 100+ more dev tools right in your browser. No uploads."
              -> 148 characters (Google shows ~155)

FAQ

What does the counter measure?

Total characters, characters without spaces, Chinese characters, English words, numbers, lines, paragraphs, sentences, and estimated reading/speaking time. All update in real time as you type or paste.

How are 'words' defined?

English words are whitespace-separated runs of letters. Chinese characters are detected via CJK Unicode ranges and counted individually. Numbers and symbols are included in the total character counts.

How is reading time calculated?

Default 200-250 words per minute, the average for adult silent reading. Speaking rate is slower (~150 wpm); skimming is faster (300-400 wpm). The number is a rough estimate - actual time depends on content density and reader experience.

Are emoji and special characters counted?

Yes, but note that an emoji like 😀 counts as multiple UTF-16 code units in JavaScript's string length. The counter counts visible characters as they appear in the text.

Why is the line count different from the paragraph count?

Lines are separated by single newlines (typed Enter once). Paragraphs are separated by blank lines (Enter twice). Word processors usually count paragraphs; code editors count lines. The page shows both so you can pick what you need.

Does it count characters in URLs and code?

Yes - everything that isn't whitespace counts. If you only want to count prose (excluding URLs, code blocks, citations), strip those manually before pasting. Some pages have a 'Markdown-aware' mode that ignores syntax characters.

Is my text uploaded?

No. Counting happens in your browser. Pasted text is not transmitted.