User Rating 0.0 β˜…β˜…β˜…β˜…β˜…
Total Usage 0 times
0 Characters
0 Characters (no spaces)
0 Words
0 Sentences
0 Paragraphs
0 Lines
0 Unique Words
0 Avg. Word Length
0 Avg. Words / Sentence
0 sec Reading Time
0 sec Speaking Time
0 B Byte Size (UTF-8)
Character Frequency

Enter text to see character frequency.

Top Words

Enter text to see word frequency.

Is this tool helpful?

Your feedback helps us improve.

β˜… β˜… β˜… β˜… β˜…

About

Miscounting characters costs real money. API payloads truncate at byte limits, not character limits. SMS billing segments at 160 chars (GSM-7) or 70 chars (UCS-2 for Unicode). Meta descriptions get clipped beyond roughly 155 characters. Database VARCHAR columns silently truncate inserts. This tool computes 15+ metrics from raw text: characters (with and without whitespace), words, sentences, paragraphs, lines, unique words, average word length, reading time at 238 wpm (Brysbaert, 2019), speaking time at 150 wpm, and UTF-8 byte size. All calculations run locally in-browser with zero server round-trips.

Limitations: sentence detection uses punctuation heuristics and will miscount abbreviations like "U.S.A." as multiple sentences. Reading time assumes adult silent reading of English prose. Byte size reflects UTF-8 encoding only. For CJK text, word segmentation is approximate since Chinese and Japanese lack whitespace delimiters. The tool treats any whitespace-separated token as a word.

text length character count word count sentence count reading time text analysis byte size text statistics

Formulas

Character count returns the full Unicode-aware length of the string. Characters without spaces strips all whitespace classes before counting.

chars = len(text)
charsno-space = len(replace(text, /\s/g, ""))

Word count splits on whitespace boundaries and filters empty tokens.

words = | split(text, /\s+/) |

Reading time divides word count by average adult silent reading speed.

tread = words238 wpm

Speaking time uses conversational pace.

tspeak = words150 wpm

Byte size is computed via UTF-8 encoding using the Blob API.

bytes = Blob([text]).size

Where text = raw input string, chars = total character count, words = total word count, tread = estimated reading time in minutes, tspeak = estimated speaking time in minutes, bytes = UTF-8 encoded byte size.

Reference Data

Platform / ContextLimitUnitConsequence of Exceeding
Twitter / X Post280charsPost rejected
SMS (GSM-7)160charsSplit into multiple segments, doubled cost
SMS (UCS-2 / Unicode)70charsSplit into multiple segments
Google Meta Title60charsTruncated with ellipsis in SERP
Google Meta Description155charsTruncated, reduced CTR
Instagram Caption2200charsTruncated after ~125 visible
YouTube Title100charsTruncated at ~70 in search
LinkedIn Post3000charsPost rejected
Facebook Post63206charsPost rejected
Reddit Title300charsTitle rejected
Pinterest Pin Description500charsTruncated
Slack Message40000charsMessage rejected
Email Subject Line (optimal)50charsClipped on mobile clients
MySQL VARCHAR max65535bytesSilent truncation or error
PostgreSQL TEXT1GBPerformance degradation
JSON Web Token (URL)8192bytesHTTP 414 URI Too Long
Average Reading Speed (adult)238wpmBrysbaert 2019 meta-analysis
Average Speaking Speed150wpmConversational English pace
TikTok Caption2200charsTruncated
WhatsApp Message65536charsMessage rejected
Push Notification (iOS)178charsTruncated on lock screen

Frequently Asked Questions

Characters and bytes are different units. ASCII characters (English letters, digits) use 1 byte each in UTF-8. Accented characters (Γ©, Γ±) use 2 bytes. CJK characters (δΈ­, ζ—₯) use 3 bytes. Emoji (πŸ˜€) use 4 bytes. A string of 10 emoji is 10 characters but 40 bytes. This matters for database VARCHAR columns defined in bytes, API payload limits, and network transfer costs.
The sentence counter splits on terminal punctuation (.!?) followed by whitespace or end-of-string. Abbreviations like "U.S.A." or "Dr. Smith" may inflate the count because each period followed by a space registers as a sentence boundary. For formal prose without heavy abbreviation use, accuracy is typically above 95%. For technical or legal text with many abbreviations, treat the count as an approximation.
The 238 wpm rate is derived from Brysbaert's 2019 meta-analysis of English silent reading. Other languages differ: Finnish averages around 240 wpm, Arabic around 181 wpm, and Chinese around 260 characters per minute (not words). For non-English text, use the word count and divide by the appropriate rate for your language.
This tool splits on whitespace. Chinese and Japanese do not use spaces between words, so an entire sentence without spaces counts as one token. For accurate CJK word segmentation, specialized tokenizers (like MeCab for Japanese or jieba for Chinese) are required. The character count and byte size metrics remain accurate regardless of language.
A paragraph is defined as a block of text separated by two or more consecutive newline characters (a blank line). A single line break does not start a new paragraph. This matches the convention used in Markdown, most word processors, and HTML rendering. If your text uses single line breaks between paragraphs, the count will read as 1.
All metrics return zero for empty or whitespace-only input. The tool does not count spaces, tabs, or newlines as words. Character count will still reflect whitespace characters present, but word count, sentence count, and paragraph count will be zero.
Yes. A 160-character SMS using emoji could be 640 bytes in UTF-8. A 100-character string in Chinese is 300 bytes. Always verify byte size independently of character count when working with byte-limited systems like SMS gateways, HTTP headers (8 KB limit), URL parameters, or binary protocols.