fileformer
search⌘KtranslateENexpand_moreupload_fileConvert
Converters8 file families · 44 direct conversions
What changes in a conversionarrow_forward
home/text-tools/word-counter

Word counter

A free word counter for words, characters, sentences, reading time and platform limits, updating as you type. Your text never leaves this tab.

lockStays in your browserboltLive countblockNo sign-up
58words
325characters
4sentences
15 secreading time
content_pastetitletext_fieldsformat_cleardelete
content_copyCopy text
locksaved in this tab only
Details
Characters (no spaces)267
Paragraphs2
Avg. word length4.6
Avg. sentence15 words
Speaking time23 sec
Unique words48
Top wordsType a few sentences to see them.
device2
fileformer1
converts1
compresses1
edits1
Will it fit?character limits by platform
tagX post45 over
325 / 280
travel_exploreMeta description165 over
325 / 160
photo_cameraInstagram caption1875 left
325 / 2200
workLinkedIn post2675 left
325 / 3000
smsSMS165 over
325 / 160
smart_displayYouTube title225 over
325 / 100
~/how-easy-is-it-to-read

Readability, from your text.

Counting words is half the story. Short sentences and short words make text easier to read, this score updates as you edit above.

reading ease score73
Plain Englishreadable by most adults
very hard · 0plain English · 60-70very easy · 100
words / sentence14.5
syllables / word1.41
long sentences0
Suggestions for this text
check_circleNo sentences over 25 words: good rhythm.
check_circleWord choice is mostly short and plain.
check_circleAverage sentence length of 15 words is easy to follow.
Based on the Flesch reading-ease formula (sentence length and syllables per word). It suits English prose best.
~/how-long-should-it-be

Typical lengths, and where you are.

Your text is 58 words. Here's how that compares with common kinds of writing.

tagX post20-50
short and punchy8 over
mailEmail50-200
fits one screenon target
descriptionProduct description100-300
scannable42 to go
articleBlog post900-2,000
ranks well842 to go
schoolCollege essay500-650
Common App limit442 to go
record_voice_over5-min speech650-750
at 130-150 wpm592 to go
newspaperNews article500-800
standard story442 to go
scienceResearch paper4,000-8,000
journal typical3,942 to go
auto_storiesNovel70,000-100,000
adult fiction69,942 to go
~/what-is-a-word

Five ways to count words, five different answers.

There is no single definition of a word. Splitting on spaces fails for Chinese, Japanese and Thai, which use none. Simple regexes break on contractions, e-mail addresses and accents. The Unicode word-boundary rules (UAX #29), run here by your browser’s Intl.Segmenter, handle all of these, using dictionaries for scripts without spaces.

Your textEnglish edge casesGermanChineseJapaneseThai
It’s a well-known e-mail: hi@fileformer.com, costs $1,299.99 (U.S.) at 9:30 a.m. #no_filter
Intl.Segmenter('en', word) · segments46 segments · 19 word-like
It’sawell-knowne-mail:hi@fileformer.com-costs$1,299.99(U.S.)at9:30a.m.#no_filter
word-likepunctuation or symbol (spaces hidden)
Split on whitespacetext.trim().split(/\s+/)13What most quick scripts do. Counts “: ” and “$1,299.99” as words and sees a whole Chinese sentence as one.
ASCII word characters/\w+/g22JavaScript’s \w is [A-Za-z0-9_] only, so “fährt” splits in two and non-Latin scripts count as zero.
This counter/[\p{L}\p{N}'’-]+/gu20Unicode letters and digits plus apostrophes and hyphens. Good for spaced scripts; still one “word” per unspaced run.
East Asian ruleeach CJK/Thai character = 112Word processors count each ideograph or kana as a word, since a character is closer to a word than a run is. Thai is included here for comparison only.
Unicode UAX #29Intl.Segmenter('en')19Rule-based boundaries plus dictionaries for Chinese, Japanese and Thai. Keeps “it’s” and “1,299.99” whole.
~/what-is-a-character

One emoji can be 1, 7, 11 or 25 characters.

What you see as one character (a grapheme) can be several Unicode code points, twice as many UTF-16 units, and up to four bytes per code point in UTF-8. Every platform picks one of these to enforce its limit, and X and SMS add rules of their own. All six counts below are computed live.

Your textFamily emojiFlags & skin tonesCombining marksCJKSMS with €
1graphemeswhat a reader sees · Swift .count
7code pointsPython len() · MySQL utf8mb4
11UTF-16 unitsJS .length · Excel LEN · maxlength
25UTF-8 bytesstorage, URLs, HTTP bodies
2 / 280X weightedtwitter-text v3 rules
1 SMSUCS-211 UTF-16 units
Grapheme by grapheme1 graphemes
👨‍👩‍👧‍👦7 cp · 11 u16 · 25 BU+1F468 U+200D ZWJ U+1F469 U+200D ZWJ U+1F467 U+200D ZWJ U+1F466surrogate pairs
SMS encodingUCS-2 (UTF-16)
units11
per message70
messages1
“👨” “‍” “👩” “👧” “👦” are outside GSM-7, so the whole message switches to UCS-2: 70 units, or 67 per part when split. Emoji take 2 units each.
X weighted length278 left
weighted2
weight-2 chars0
emoji · urls1 · 0
After NFC normalisation, every URL counts as 23. Code points in Latin, Greek, Cyrillic, Hebrew, Arabic, Devanagari and other ranges below U+1100, plus some general punctuation, weigh 1. Everything else, including CJK and each emoji sequence, weighs 2 against a limit of 280.
~/reference

Who counts what.

The unit behind each limit, and the result for the text currently in the counter above.

whereunitruleyour text
Microsoft WordwordsWhitespace-delimited runs; each East Asian character counts as one word.58
X (Twitter)weighted chars280 weighted; URLs 23; CJK and emoji 2; NFC first.325
SMSseptets / UTF-16GSM-7 160 (153 split) or UCS-2 70 (67 split).3 msg
HTML maxlengthUTF-16 unitsThe value’s length in code units, so an emoji uses 2.325
JavaScriptUTF-16 unitsString.length; [...s].length gives code points.325
Python 3code pointslen(s) on str; len(s.encode()) gives UTF-8 bytes.325
SwiftgraphemesString.count uses extended grapheme clusters.325
MySQL VARCHAR(n)code pointsn characters in utf8mb4; row limit 65,535 bytes.325
Instagram, LinkedInUTF-16 units (observed)Not documented; emoji appear to count as 2.325
Common App essaywords650-word limit, counted by the form’s own counter.58
UTF-8 storagebytes1-4 bytes per code point (RFC 3629).325

Reading speed: where 238 wpm comes from

Brysbaert (2019), meta-analysis of 190 studies, 18,573 adult readers of English
silent · non-fiction238 wpmThe rate this counter uses for reading time.
silent · fiction260 wpmNarrative text reads faster.
reading aloud183 wpmPresentations run slower still, about 130-150.
your text15 sSilent non-fiction pace. The old 300 wpm figure comes from speed-reading claims.

Timeline

1948Rudolf Flesch publishes the reading-ease formula used above.
1963ASCII is published: 7 bits, 128 characters.
1975Flesch: Kincaid grade level is derived for the US Navy.
1991Unicode 1.0 is released.
Dec 1992The first SMS is sent; GSM limits it to 160 seven-bit characters.
1993UTF-8 is presented at USENIX by Ken Thompson and Rob Pike.
1996Unicode 2.0 adds surrogate pairs, so UTF-16 needs two units for some characters.
2003RFC 3629 caps UTF-8 at 4 bytes (up to U+10FFFF).
2006Twitter launches with a 140-character limit sized to fit an SMS.
2015Unicode 8 adds emoji skin-tone modifiers; ZWJ family sequences spread.
Nov 2017Twitter moves to 280 with weighted counting; CJK stays effectively at 140.
2019Brysbaert’s meta-analysis puts adult silent reading at 238 wpm.