DevToolsmith

Word Counter

Count words, characters, sentences and paragraphs as you type, with reading and speaking time, the most frequent words, SMS message count, and checks against title tag, meta description and post limits.

Runs 100% in your browser — nothing is uploaded

42
Words
257
Characters
214
Characters without spaces
3
Sentences
2
Paragraphs
3
Lines
11 sec
Reading time
17 sec
Speaking time
Text
Tip: drop a file here261 chars · 267 bytes · 3 lines

Length limits

  • Title tag257 / 60
  • Meta description257 / 160
  • X (Twitter) post257 / 280
  • Git commit subject257 / 50
  • SMS: 4 messages (UCS-2, 261 / 67 per message) — “👩” isn’t in the GSM alphabet, so the limit drops to 70.

Length as programs count it

JavaScript .length, Java, C# (UTF-16)
261
Python len(), PostgreSQL char_length (code points)
259
UTF-8 bytes (Go len(), MySQL LENGTH)
267

Most frequent words

text24.8%
type24.8%
words24.8%
browser12.4%
character12.4%
characters12.4%
chinese12.4%
count12.4%
counted12.4%
counts12.4%
emoji12.4%
everything12.4%
handle12.4%
here12.4%
japanese12.4%

What counts as one character?

The answer depends on who is counting. People count what they see; programming languages and databases count code units, code points or bytes. The same strings counted four ways:

TextCharacters you seeCode points (Python len)UTF-16 (JavaScript .length)UTF-8 bytes
café (é as one code point) 4 4 4 5
café (e + combining accent) 4 5 5 6
😀 1 1 2 4
👩‍💻 (woman technologist) 1 3 5 11
🇯🇵 (flag) 1 2 4 8

This matters when a database column is VARCHAR(50): MySQL with utf8mb4 and PostgreSQL limit code points, SQL Server’s NVARCHAR limits UTF-16 code units, and a byte limit (like an index key size) counts UTF-8 bytes.

Counting in code

JavaScript
const text = 'Hi 👩‍💻, how are you?';

text.length;                       // 22 (UTF-16 code units)
[...text].length;                  // 20 (code points)
[...new Intl.Segmenter().segment(text)].length; // 18 (what you see)

// Words, using the same rules as this tool
const words = [...new Intl.Segmenter('en', { granularity: 'word' }).segment(text)]
  .filter((s) => s.isWordLike);
words.length;                      // 4
Python
import re

text = "Hi 👩‍💻, how are you?"
len(text)                          # 20 (code points)
len(text.encode("utf-8"))          # 28 bytes
len(re.findall(r"\w+(?:'\w+)?", text))  # 4 words

# Grapheme clusters need the third-party "regex" module:
# import regex; len(regex.findall(r"\X", text))  # 18
Shell (wc)
wc -w essay.txt   # words
wc -m essay.txt   # characters (code points, locale-dependent)
wc -c essay.txt   # bytes
wc -l essay.txt   # newline characters

Need placeholder text to fill a layout? The lorem ipsum generator makes it by word, sentence or paragraph count. Cleaning up pasted text first? Try remove whitespace.

For vocabulary-dependent text tokens rather than words or characters, use Token Counter. Select the encoding explicitly; token totals do not include any request framing or other content added by an external service.

Frequently asked questions

How are words counted?

With the browser’s Unicode word segmentation (Intl.Segmenter), the same rules editors use for double-click selection. Hyphenated words like well-known count as two words in most languages, contractions like don’t count as one, and numbers count as words. Chinese, Japanese and Thai, which don’t put spaces between words, are split into dictionary words instead of being counted as one long word.

Why does my character count differ from Microsoft Word or Google Docs?

Mostly because of what counts as a character. This counter counts what you see as one character, so an emoji or an accented letter is 1. Programs often count UTF-16 code units instead, where most emoji are 2 and a family emoji can be 11. Both numbers are shown under “Length as programs count it”. Word also counts some symbols and footnotes differently.

How is reading time calculated?

Words divided by 238 words per minute, the average silent reading speed for non-fiction in English found by a 2019 meta-analysis of 190 studies (Brysbaert). Speaking time uses 150 words per minute, a typical pace for presentations and podcasts.

How many characters fit in one SMS?

160 if every character is in the GSM-7 alphabet (basic Latin letters, digits and common punctuation). A single character outside it, like an emoji, a curly quote or most accented letters, switches the whole message to UCS-2, where the limit is 70. Longer texts are split into parts of 153 or 67 characters, because each part needs a header.

Is my text sent anywhere?

No. All counting happens in your browser as you type, so it works for drafts, private documents and offline. The share button puts the text in the link’s #fragment, which browsers never send to a server.