0
Words
0
Characters
0
No spaces
0
Lines
0
Paragraphs
0
Sentences
0 min
Reading time
Your text

Word Counter: Count Words, Characters, and Lines Online

Paste any text and see live counts for words, characters, lines, paragraphs, sentences, and reading time. No upload, no signup, nothing leaves your browser.

What this word counter is

A free, in-browser word counter. Drop in an essay, a tweet draft, a meta description, or a 4,000-word blog post and you get live counts for words, characters with and without spaces, lines, paragraphs, sentences, and an estimated reading time. The text never leaves your machine.

It exists for the small, common moments: you are 12 characters over the 280-cap on X, your meta description is 187 chars and Google is going to truncate it, your college application says "500 words maximum" and Microsoft Word's word count dialogue is buried two menus deep. Paste, glance, fix, move on.

Counting is also more interesting than it looks. The Wikipedia article on word count notes that Word, Pages, and Google Docs all return slightly different numbers for the same document, mostly because of how each handles hyphenated compounds, em dashes, and inline footnotes. We are upfront about which rule we use so you can map the answer back to whatever editor you trust.

How the counts actually work

Words are counted by splitting on whitespace and filtering out empty entries, which is the same approach Microsoft Word, Google Docs, and most blogging platforms use under the hood. It is fast and good enough for English, French, Spanish, and other space-delimited languages. The trade-off: it cannot count words in Chinese, Japanese, Korean, or Thai correctly, because those scripts do not put spaces between words. For spec-correct word boundaries across every language, the right tool is Intl.Segmenter, which implements the algorithm in Unicode UAX #29 (Text Segmentation). We give you a CJK note when the input looks like it needs it.

Characters are counted two ways: with spaces (every code point in the string) and without spaces (excluding ASCII spaces, tabs, and newlines). The number you want depends on the limit you are checking against. Page titles, meta descriptions, and SMS messages count spaces. Twitter is its own thing, see the FAQ. We also report the visible-character count using grapheme clusters, so a family emoji that takes 7 code points still counts as one character to a human reader.

Lines, paragraphs, and sentences round out the panel. Lines split on newline. Paragraphs split on blank lines (one or more consecutive empty lines). Sentences split on ., !, and ? followed by whitespace, which gets the right answer for most prose but miscounts "Mr. Smith said hello" as two sentences and "i.e." as the start of a new one. There is no reliable sentence segmenter that runs in 200 lines of JavaScript; if your text is full of abbreviations, treat the sentence count as a rough estimate.

How to count words in three steps

One text pane, six live counts. Nothing to install, nothing to upload, no account required.

  1. 1

    Paste or type your text

    Paste from Word, Google Docs, your email client, an SMS draft, or a CMS editor. Or click Upload to load a .txt or .md file. The Sample button drops in a paragraph if you want to see the counters move first. Pasting strips formatting, which is what you want; only the text is counted.

  2. 2

    Watch the counts update live

    Each count updates as you type or edit. Words, characters with spaces, characters without spaces, lines, paragraphs, sentences, and reading time are all visible at once. The reading-time estimate uses 230 words per minute for general prose. There is also a CJK detector that flags when whitespace word-counting is going to undercount your input.

  3. 3

    Copy the text or the counts

    Hit Copy to grab the cleaned-up text back to your clipboard, or use the count chips to copy a specific number. Download saves the text as .txt. If you need a different counting rule (for example, treating hyphenated compounds as one word), tweak the input and the counts update; there is nothing to configure server-side.

When a word counter is the right tool

Hitting the 280-character X (Twitter) limit

You are drafting a thread, the second tweet is 312 characters, and you need to trim it without losing the joke. Paste the tweet here, watch the character count, cut until you land at 280 or under. Note that X counts URLs as 23 characters regardless of length and emoji as 2, so a naive character count slightly underestimates how much room you have. See the FAQ on Twitter weighting.

Academic essay or college-application word limits

A 500-word personal statement, a 4,000-word literature essay, a 250-word abstract for a conference submission. Most institutions count any whitespace-separated token as a word, including hyphenated compounds as one word. That matches what we report. The Common App essay limit is 650 words and they are strict; a counter that disagrees with theirs by 10 is the difference between submitted and rejected.

SEO meta descriptions and page titles

Page titles get truncated by Google around 60 characters, sometimes earlier on mobile. Meta descriptions get truncated around 160. Both are character counts including spaces. Paste your draft here, watch the counter, rewrite until the important keywords land before the truncation point. The same rule applies for Open Graph titles and Twitter card descriptions.

SMS and push-notification character budgets

A standard SMS is 160 characters in 7-bit GSM encoding, dropping to 70 characters per segment if you include any non-GSM character (for example, an emoji or a curly quote). Push notifications on iOS truncate around 178 characters in the lock-screen preview. Your text might fit in one SMS at 159 chars and split across two at 161; the counter tells you exactly where the boundary is.

Reading-time estimate for a blog post

Blog platforms like Medium and Substack show a reading-time estimate at the top of the article. The standard math is total words divided by 230 (a typical adult reading speed for general prose), rounded up. Technical content with code blocks or math runs slower, around 100 words per minute, so the estimate over-promises for engineering posts. A 1,200-word how-to is roughly 5 minutes of reading.

Comparing word counts before and after copy edits

You wrote a 1,400-word draft and the brief calls for under 1,000. Paste the original, paste the trimmed version into a second tab, and you can see exactly how much you cut. For a side-by-side diff that shows which sentences moved or got rewritten rather than just the count delta, our compare-text tool handles that case. Pair the two when you need both metrics.

Word and character counting edge cases

The counting situations that trip up most tools, with what we do and what to watch for. If a count looks off, the answer is usually in here.

TopicWhat this tool does
Whitespace split vs Unicode segmentationWe split on whitespace, which is fast and matches Word/Google Docs for English. The spec-correct alternative is Unicode UAX #29, exposed in JavaScript via Intl.Segmenter. Use that when language coverage matters more than speed.
CJK languages without word spacesChinese, Japanese, Korean, and Thai do not separate words with spaces. A whitespace count returns roughly 1 for a whole paragraph. For these languages, the meaningful metric is character count, which works correctly here. Use Intl.Segmenter for true CJK word counts.
Emoji and Unicode code pointsA family emoji ๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ฆ looks like one character but is 7 UTF-16 code points joined by zero-width joiners. We count graphemes (visible characters) for the human-friendly figure, and code points separately. A skin-tone modifier on a thumbs-up is one grapheme but two code points.
Twitter / X character weightingX weights each character: most ASCII counts as 1, emoji and CJK count as 2, and URLs are fixed at 23 regardless of length. Our character count is the raw character count. Subtract roughly 7 from the 280 budget for every emoji you use.
URLs and @mentions in tweetsX collapses every URL to 23 characters via t.co regardless of how long the actual link is. @mentions count at their literal character length. Our counter shows raw length, so a tweet with two long URLs will read longer here than X reports.
Smart quotes vs straight quotes"curly" and "straight" quotes are different Unicode characters but each counts as one character. They look similar in most fonts; pasting from Word or Pages usually substitutes smart quotes silently. If you are pasting code, convert them back first.
Trailing whitespace and blank linesTrailing spaces at the end of a line still count as characters. A trailing newline at the end of the document counts as a line. Blank lines between paragraphs count toward the line total but separate paragraphs in the paragraph count.
Encoding (UTF-8) and byte lengthMost APIs that quote a "character limit" mean Unicode characters, but a few mean UTF-8 bytes. An emoji is 4 bytes in UTF-8, a CJK character is 3, an accented Latin letter is 2. If your limit is in bytes, our character count will under-report. Twitter is the famous mid-ground: it is neither bytes nor characters, it is its own weighted scheme.

Word counter: frequently asked questions

What is the difference between word count and character count?

Word count is the number of whitespace-separated tokens in your text, so "hello world" is two words. Character count is the number of individual characters, so "hello world" is 11 characters with the space, 10 without. Different platforms care about different numbers: academic essays use word count, SMS and tweet limits use character count, and SEO title tags use character count too. The counter shows both at once so you can pick the right one for your context.

How does this tool count words exactly?

It splits the input on whitespace (spaces, tabs, newlines) and counts the non-empty pieces. So "fast-paced" is one word, "well known" is two, and "isn't" is one. This matches Microsoft Word and Google Docs for English prose. The trade-off is that it does not handle Chinese, Japanese, or Korean text correctly, because those languages do not separate words with spaces. For spec-correct word counting across every language, modern browsers ship Intl.Segmenter, which implements the Unicode word-boundary algorithm.

How is reading time calculated?

Reading time is words divided by 230 words per minute, rounded up to the nearest minute. 230 wpm is a reasonable midpoint for adult readers on general prose; published estimates range from 200 to 250 wpm for non-technical material. Technical writing with code blocks, formulas, or unfamiliar terminology slows readers to around 50 to 100 wpm, so the estimate over-promises for engineering or scientific content. If you want stricter math for a niche audience, divide your word count by their actual reading speed.

Does it count Chinese, Japanese, or Korean text correctly?

For words, no. CJK languages do not put spaces between words, so a whitespace-based word count returns close to 1 for any CJK paragraph. Character counts are still accurate (one CJK character is one character), and that is usually the metric people care about for those languages anyway: a Japanese essay limit is in characters, not words. If you need a true CJK word count, the Intl.Segmenter API in modern browsers implements the Unicode word-segmentation algorithm and handles CJK, Thai, and other space-less scripts correctly.

Is anything saved or uploaded?

No. The counter runs entirely in your browser. Nothing is sent to a server, logged, or stored. You can paste a confidential draft, an unpublished article, or your tax return and close the tab; there is no copy left behind. To verify, open DevTools, switch to the Network tab, and watch as you type. There are no outbound requests when the counts update. The whole tool is open about its dependencies; the only counting code involved is plain JavaScript running on your machine.

Does X (Twitter) actually count emoji as 2 characters?

Roughly yes. X uses a custom weighting where most basic Latin, digits, and common punctuation count as 1, and pretty much everything else (emoji, CJK, accented characters) counts as 2 of the 280-character allowance. The exact algorithm is in their counting-characters documentation; it uses code-point ranges rather than grapheme clusters, so a flag emoji (which is two regional-indicator code points) actually counts as 4. URLs are special-cased to 23 characters regardless of length. Our character count is the raw count, not the weighted one.

Privacy and how this works

Your text never leaves your browser. The counting, the splitting, and the rendering all run on your machine. We do not upload the text, log it, or pass it through any third-party service. You can paste a confidential draft, an unpublished essay, or any other private content and close the tab without leaving a trace. To verify, open your browser's DevTools, switch to the Network tab, and watch as you type; there are no outbound requests. The only dependency is the browser's own JavaScript engine, plus optional Intl.Segmenter for grapheme counting. If you need a side-by-side text diff, a case converter, a way to sort lines, or a duplicate-line remover, those tools live one click away and follow the same in-browser policy.