JSONToonPro
Text tool

Word Counter

Count words, characters, sentences, paragraphs, and reading time the moment you type or paste. See character totals both with and without spaces, so you always know which figure a platform is measuring. Everything runs 100% in your browser, so your text never leaves your device.

100% client sideLive countsNo data sent

0

Words

0

Characters

0

Characters (no spaces)

0

Sentences

0

Paragraphs

0

Lines

0 sec

Reading time

0 sec

Speaking time

Your text

How Word and Character Counting Works

Counting words sounds trivial until you try to write the rule down. Most counters, including the one above, split your text on whitespace and count the chunks that are left. That means a run of spaces, tabs, and newlines collapses into a single boundary, so "two   words" with three spaces still counts as two. Punctuation usually rides along with the word it touches, so "well-being" is one word and "didn't" is one word, not two.

This is exactly why the same paragraph can produce different numbers in different tools. Some counters treat a hyphen as a separator and report "well-being" as two. Some count a standalone emoji or a lone dash as a word because it survives the whitespace split. Character counts diverge for a simpler reason: whether trailing spaces and line breaks are included. This tool gives you both a with-spaces and a without-spaces figure so you always know which one you are looking at.

Where Character Count Actually Matters

Plenty of places on the internet count your characters for you and then cut you off. Knowing the ceiling before you paste saves you from writing a headline that Google quietly chops in half. Here are the limits people bump into most often.

WhereLimitWhat to know
Twitter / X post280 charsThe whole post, links included, though links count as a fixed length.
SMS text message160 charsGo one over and it splits into two billed segments.
Google meta title~60 charsGoogle truncates the tag around 600 pixels, roughly 60 characters.
Google meta description~155 charsMeasured in pixels near 920px, so wide letters eat the budget faster.
Instagram caption2,200 charsOnly the first 125 or so show before the More link.

Notice that Google measures titles and descriptions in pixels, not characters. A title full of narrow letters like i and l fits more text than one packed with wide W and M shapes, which is why the character counts are always given as approximate. Aim for roughly 60 characters on a title and 155 on a description and you will stay inside the pixel budget most of the time.

Reading Time and Keyword Density

Reading time is a quick estimate, not a promise. The usual math divides your word count by an average adult reading speed of 200 to 250 words per minute. A 1,000 word article lands around four to five minutes. It is a handy signal for readers deciding whether to commit, and many blogs show it at the top of a post for exactly that reason.

Keyword density is the share of your text made up of a single term. There was a time when repeating a phrase pushed a page up the rankings, but that era is long gone. Modern search engines read for meaning, and text that hammers the same keyword reads as spam to both the algorithm and the human. Write naturally, let the term appear where it fits, and use a counter to sanity-check that no phrase is wildly overrepresented rather than to hit a magic percentage.

One last thing worth repeating: every count here happens in your browser. Your text is never uploaded, so you can safely paste an unpublished draft, a client contract, or anything else private and the numbers still work with the tab offline.

Need something else? Explore every text tool in one place, all free and client-side.

Frequently asked questions

4 answers
It splits your text on whitespace and counts the chunks that remain, so runs of spaces, tabs, and line breaks collapse into a single boundary. Punctuation stays attached to the word it touches, which means didn't and well-being each count as one word. Counts update live as you type or paste.

More JSON Tools