Skip to main content

Text Statistics

Live character, word, paragraph and reading-time counts, plus text cleanup

Live counts of characters, words, paragraphs, lines and UTF-8 bytesChinese counted per character and English per word - both figures shownBuilt-in case conversion and naming-style conversion (camelCase, snake_case…)One-click line dedupe, sorting and empty-line removal

Type some text above and the statistics will update here in real time

Last updated: 2026-10-10

About this tool

Writers, translators and anyone filling in a form with a length limit eventually needs an exact count. The trouble is that "word count" means different things in different places: a Chinese article is counted per character, an English one per word, and some forms want characters excluding spaces. This tool lists every one of those numbers at once, along with paragraph, line and reading-time figures.

Features

Every count at once

Characters, characters excluding whitespace, CJK characters, words, sentences, paragraphs, total lines and non-empty lines - all shown together, so you never juggle several tools.

Chinese and English counted separately

Chinese has no word boundaries, so counting a mixed passage by spaces badly distorts the result. This tool counts Chinese per character and English per word, and shows both numbers plainly.

Reading-time estimate

Estimated at 300 CJK characters or 220 English words per minute - handy for checking whether an article matches your readers’ patience.

Naming-style conversion

Convert between camelCase, PascalCase, snake_case and kebab-case in one click - no more hand-editing variable names.

Text cleanup toolkit

Remove empty lines, trim each line, collapse repeated whitespace, dedupe lines, sort ascending or descending, and reverse line order - ideal for text copied out of a PDF or web page.

Correct emoji counting

Counts Unicode code points rather than UTF-16 code units, so an emoji or a rare CJK character counts as one character - a spot where many counters get it wrong.

How to use

  1. 1

    Paste your text

    Paste the text into the box. Statistics update as you type - there is no button to press.

  2. 2

    Read the statistics

    All counts appear on the right (below on mobile). For mixed text, read "CJK characters" and "Words" separately.

  3. 3

    Convert case and style

    Click a style button to convert; the result replaces the input so you can keep working on it.

  4. 4

    Clean up the text

    Text copied from a web page often carries stray blank lines. Clean it first and the counts become far more accurate. Every action can be undone.

Options

Characters
Counted by Unicode code point, so emoji and rare characters count as one. This is what most platforms mean by "character count".
Characters excluding whitespace
Removes ASCII spaces, tabs, newlines and the full-width space. Some form platforms ask for exactly this figure.
CJK characters
Counts Chinese characters, Japanese kana and Korean hangul, including the CJK Extension blocks. Usually the number that matters for Chinese writing.
Words
Runs of Latin letters and digits. Hyphens and apostrophes stay inside a word (well-known counts as one). Chinese does not participate in word grouping.
Paragraphs
Separated by one or more blank lines, matching the Markdown convention. A single newline inside a block does not start a new paragraph.
UTF-8 bytes
A Chinese character is 3 bytes and an emoji is 4. Database column limits and API parameter caps are usually expressed in bytes, so this is worth checking before submitting.
Reading time
Estimated at 300 CJK characters or 220 English words per minute, rounded up, with a one-minute floor. A rough guide that does not account for charts or code.

Common use cases

  • Checking an article meets a submission length requirement
  • Keeping an article within the ideal length for a given platform
  • Filling in a form or application with a character limit
  • Counting a speech to estimate how long it will take to deliver
  • Checking whether a value will be truncated by a database column (look at bytes)
  • Cleaning up text copied from a web page before reusing it
  • Switching a variable name between camelCase and snake_case
  • Deduping and sorting a repetitive list

FAQ

Questions you may have about this tool

How should I count characters in Chinese?

Usually one Chinese character counts as one, and whether punctuation counts depends on the platform. This tool lists characters (including punctuation and spaces), characters excluding whitespace, and CJK characters (only han, kana and hangul) separately, so you can pick the convention your target platform uses.

Why is the word count so low for mixed Chinese and English text?

Because Chinese does not participate in word grouping. Chinese is counted per character and English per word, so "hello 你好" gives 1 word (hello) and 2 CJK characters. This is deliberate - splitting on spaces alone would report 0 for a purely Chinese passage.

Why does an emoji sometimes count as one and sometimes as two?

It depends on the counting unit. JavaScript’s String.length measures UTF-16 code units, where most emoji (such as 😀) occupy two; this tool counts Unicode code points, so the same emoji counts as one. If you need to match a specific platform, check which unit it uses.

Where do I find the count excluding spaces?

The "Excl. spaces" figure in the statistics card. It removes ASCII spaces as well as tabs, newlines and the full-width space, matching what most writing platforms report.

How is reading time estimated?

Chinese is estimated at 300 characters per minute and English at 220 words per minute; the two are added and rounded up to whole minutes. It is a silent-reading average and excludes time spent on charts, code or rereading, so treat it as a rough guide.

Is my text uploaded anywhere?

No. All counting and text processing happens in your browser with JavaScript; nothing is sent to a server. The tool keeps working with your network disconnected, which you can verify yourself.

Which naming styles are supported?

Input can be space-separated, camelCase, PascalCase, snake_case or kebab-case; the tool splits it into words and rebuilds it in the target style. For example http_api-v2Server splits correctly into http, api, v2 and Server.

Can I undo a transformation?

Yes. Cleanup and style conversions keep the previous content, so the Undo button restores it. The Clear button resets everything.