Real-world limits are rarely raw character counts. Twitter/X allows 280 weighted units: most Latin letters, digits, and punctuation weigh 1, but CJK characters, emoji, and other wide ranges weigh 2 β so a Japanese tweet maxes out at 140 characters. Every URL is billed at exactly 23 units regardless of its actual length, because t.co wrapping normalizes it.
SMS is stranger. A single message holds 160 characters if the whole text fits the GSM-7 alphabet. One character outside it β an emoji, a curly apostrophe pasted from a word processor, certain accented letters β silently switches the entire message to UCS-2 and the budget drops to 70. Long messages are split into concatenated segments that each sacrifice header bytes, leaving 153 (GSM-7) or 67 (UCS-2) characters per segment. A single smart quote can turn one billed message into three; bulk-SMS invoices reveal this constantly.
Elsewhere: Instagram captions cap at 2,200 characters and 30 hashtags. Google truncates title tags by rendered pixel width β about 600px, which fits roughly 50β60 characters depending on letter widths (WWW is far wider than iii) β and meta descriptions around 155β160 characters. The practical takeaway: know whether your target counts code units, weighted units, GSM-7 septets, or pixels, and test with representative text rather than lorem ipsum.
Word Counting Is Language-Dependent β CJK Breaks the Whitespace Rule
Splitting on whitespace is a solid word counter for English, German, or Spanish. It returns exactly 1 for any Chinese or Japanese sentence, because those scripts are written without spaces. Real word segmentation for CJK needs a dictionary or a statistical model: MeCab is the standard morphological analyzer for Japanese, jieba for Chinese, and in the browser Intl.Segmenter with granularity 'word' exposes ICU's dictionary-based segmentation with zero dependencies.
Korean sits in between. It does use spaces, but between eojeol β word-plus-particle units β so whitespace counting yields eojeol, not dictionary words. In practice Korean writing is measured in characters anyway, a convention inherited from the 200-character manuscript grid (wonogoji) still referenced in schools and publishing.
The distinction has money attached. Professional translation is billed per source word for English-like languages but per character for Japanese and Chinese, and agencies apply published conversion factors β on the order of two CJK characters per English word β when quoting across the boundary. Academic and legal limits split the same way: a Japanese journal specifies a character count, an English one specifies words.
If your product shows a word count to users in multiple languages, count isWordLike segments from Intl.Segmenter; the same code path produces linguistically sane numbers for English and CJK alike.
function countWords(text, locale = 'en') {
const seg = new Intl.Segmenter(locale, { granularity: 'word' });
return [...seg.segment(text)].filter(s => s.isWordLike).length;
}
countWords('The quick brown fox'); // 4
countWords('ζ₯ζ¬θͺγ―εγγ‘ζΈγγγγͺγ', 'ja'); // dictionary-segmented
'ζ₯ζ¬θͺγ―εγγ‘ζΈγγγγͺγ'.split(/\s+/).length; // 1 β naive split fails
NFC vs NFD: Normalization Changes the Count Without Changing the Pixels
Reading-Time Math: 238 Words per Minute and Other Defensible Numbers
Reading-time estimates look like guesswork, but there are measured anchors. Brysbaert's 2019 meta-analysis of nearly 190 studies puts silent reading of English non-fiction at about 238 words per minute, with fiction slightly faster around 260. Medium's read-time algorithm uses 265 wpm and adds 12 seconds for the first image, decreasing one second per subsequent image down to a floor of 3. For Japanese and Chinese, planning figures are quoted in characters instead β roughly 400 to 600 characters per minute for comfortable silent reading.
Average word length makes conversions possible. English runs about 4.7 letters per word, roughly 5.7 characters including the following space, so a 1,000-word article is near 5,700 characters and reads in a bit over four minutes at 238 wpm. The same arithmetic translates limits: a 155-character meta description holds about 25 English words; a 160-character GSM-7 SMS about 28.
Spoken delivery is far slower than silent reading β narration and conference talks sit around 130 to 150 wpm β which is why a five-minute read becomes a nine-minute voiceover script. Density is a useful editing signal too: if your average word length drifts well above six letters, the text is jargon-heavy and will read slower than any per-word formula predicts.
Last updated:
About this tool
A character and word counter analyses any text and reports characters (with and without spaces), words, sentences, paragraphs, and lines in real time. It is useful for content with strict length limits β Tweets, meta descriptions, app store listings β and for tracking writing progress on essays, articles, and translations where word count is the deliverable.
How to use
Paste or type your text into the input box.
All six metrics update on every keystroke β no button needed.
Use the characters-without-spaces value when comparing against APIs that count code points.
Watch the words count for blog posts, essays, and content with a target length.
Use line count when working with logs, source code, or CSV-like data.
Common use cases
Checking that an SEO meta description stays under 160 characters.
Hitting a 280-character limit for a Tweet or 300-character limit for a Bluesky post.
Tracking word count for academic essays or magazine assignments.
Estimating reading time (~200 words per minute) for a blog post.
Auditing log file size by line count when piping output into the textarea.
Validating user-generated content against backend length constraints before submitting.
Frequently asked questions
Q. How are words counted?
A. By splitting on whitespace runs after trimming. So "hello world" = 2 words, but "hello world" (multiple spaces) is also 2.
Q. Why is character count different from what Twitter shows?
A. Twitter weights certain characters (like emoji and CJK) differently. This tool reports raw JavaScript string length (UTF-16 code units), which matches most backend validations.
Q. How are sentences detected?
A. By counting end-of-sentence punctuation (. ! ?). Abbreviations like "Mr." may inflate the count slightly.
Q. Does the tool send my text anywhere?
A. No. Counting happens entirely in your browser; nothing is uploaded.