Webtools

Character Counter

Count characters, words, sentences, paragraphs, and reading time

0

Characters

0

Without spaces

0

Words

0

Sentences

0

Paragraphs

1

Lines

Reading time

Speaking time

What is a character counter?

A character counter is a small but surprisingly nuanced tool: it answers the question "how long is this text?" against several legitimate definitions of "long". This counter gives you an instant breakdown of any text — total characters, characters without whitespace, word count, sentence count, paragraph count, line count, and estimated reading and speaking time. All counts update live as you type or paste, and everything runs in the browser, so the text you measure never leaves your device.

The reason a character count needs more than one number is that "character" is itself ambiguous. The string "naïve" contains five letters to a human reader, but it can be encoded as five Unicode codepoints (with the precomposed ï) or six (with a combining diaeresis), and as five UTF-16 code units (what JavaScript reports for .length) or seven UTF-8 bytes. Emojis make the gap larger: a single 👨‍👩‍👧 takes one grapheme to a reader, four codepoints joined by zero-width joiners, eight UTF-16 code units, and eleven UTF-8 bytes. This counter reports the number a human would normally mean — graphemes — alongside word and sentence counts useful for writers and SEO.

Common uses include checking platform character limits (X / Twitter posts, SMS, meta descriptions, page titles), verifying word counts for essays, articles, and academic work, estimating how long a speech or presentation will take to deliver, and confirming that pasted-in copy fits the constraints of a particular form, exporter, or content management system. Reading time here is calculated at 238 words per minute — the average adult silent-reading rate established by Brysbaert (2019) — and speaking time at 150 words per minute, which is the typical comfortable pace for presentations and audiobook narration.

What each count actually means

Different counts answer different questions, and the right one depends on why you are measuring. The breakdown below explains each metric, the rules used to compute it, and the situations where it is the count you should care about.

Characters

Hello, 世界! 👋

The total grapheme count — the number of characters a human would read. Spaces, punctuation, and emoji each count as one. Combining marks (accents, diacritics) merge into the base character, so é is one character whether stored as a single codepoint or as e plus a combining acute. The example above is 11 characters.

Characters without spaces

Hello,世界!👋

Same count as above, minus all whitespace (spaces, tabs, newlines). Useful when a system measures content density rather than typed length — for example, exam essay limits that exclude whitespace, or pricing models that bill by non-whitespace characters.

Words

don't go-home

Whitespace-delimited tokens. Apostrophes and hyphens within a token do not split it, so don't is one word and go-home is one word. Numbers count as words. Empty input is zero words. The same definition is used by most word processors and reading-time calculators; some style guides count compound words separately, but doing so introduces edge cases without much benefit.

Sentences

See? Two!

Runs of text terminated by ., !, or ?. Trailing punctuation does not start a new sentence. Abbreviations like "Dr." and "e.g." can produce false positives in any sentence-splitting heuristic — this counter does not special-case them, so technical or abbreviation-heavy text may slightly overcount.

Paragraphs

\n\n separated

Runs of text separated by one or more blank lines (a newline followed by another newline). A single line break inside a block of text does not start a new paragraph — that matches Markdown semantics and the way most rich-text editors think about paragraphs.

Lines

one\ntwo

The total number of lines, counting each line break. Useful for counting log entries, CSV rows, or any line-oriented input. Trailing blank lines are counted; an empty string has zero lines.

Reading time

238 wpm

Word count divided by 238 words per minute, the silent-reading rate Brysbaert (2019) established as the most defensible average for adult fiction-and-prose readers. Slower for technical or academic text (around 100–150 wpm); faster for skimming. Times below 60 seconds are rounded to "less than a minute".

Speaking time

150 wpm

Word count divided by 150 words per minute — the typical comfortable pace for presentations, audiobook narration, and conversational speech. News anchors and auctioneers go faster (180–250 wpm); slow, deliberate delivery for clarity is closer to 110 wpm. Use this number to estimate the runtime of a speech or scripted video.

Common platform character limits

Most online platforms enforce a length cap on user-generated text. The exact metric varies — some count codepoints, some count UTF-16 code units, some count graphemes, some count bytes — but the visible limits are reasonably stable. The table below summarises the most commonly hit ones.

Platform / context Limit Counted as
X / Twitter post (premium) 4,000 codepoints
X / Twitter post (free) 280 codepoints
SMS (single, GSM-7 charset) 160 7-bit chars
SMS (single, UCS-2 / Unicode) 70 code units
Bluesky post 300 codepoints
Mastodon post (default) 500 codepoints
LinkedIn post 3,000 codepoints
Facebook post 63,206 codepoints
Instagram caption 2,200 codepoints
Instagram bio 150 codepoints
YouTube title 100 codepoints
YouTube description 5,000 codepoints
HTML <title> (Google SERP truncation) 50–60 characters
Meta description (Google SERP truncation) 155–160 characters
Open Graph og:title 60–90 characters
Open Graph og:description 110–200 characters
Email subject line (mobile-friendly) 40–50 characters
Email subject (full visibility) 60–70 characters
App Store app title 30 characters
App Store subtitle 30 characters
Apple App Store description 4,000 characters
Google Ads headline 30 characters
Google Ads description 90 characters

How counting handles Unicode and edge cases

Modern text contains characters that span multiple JavaScript code units (emoji, mathematical symbols, scripts beyond the Basic Multilingual Plane), characters built from combining sequences (accented letters, Indic scripts), and zero-width joiners that fuse sub-emojis into family or skin-tone emojis. Naively calling text.length in JavaScript counts UTF-16 code units, which gives the wrong answer in all of those cases. This counter uses Intl.Segmenter in grapheme mode to split text into user-perceived characters — the same algorithm browsers use for cursor movement and selection. The result matches what a reader would count: 👨‍👩‍👧 is one character, 🇳🇱 is one character, और (Hindi for "and") is one character. For browsers that do not yet support Intl.Segmenter, the counter falls back to a Unicode-aware regex; the difference is only visible on the most exotic compound emoji.

Frequently asked questions

What counts as a 'word'?
Any whitespace-delimited token. Apostrophes and hyphens within a token do not split it, so don't is one word and hello-world is one word. Numbers count as words. Empty input is zero across the board.
How is reading time calculated?
Word count divided by 238 words per minute, the silent-reading rate established by Brysbaert (2019) as the most defensible average for adult readers of prose. Technical or academic text is slower (100–150 wpm); skimming is faster. Times below a minute are reported as "less than a minute" rather than rounded down to zero.
Why does my emoji count as one character but my friend's app shows it as two?
This counter uses Intl.Segmenter in grapheme mode — it counts user-perceived characters. Many older tools and most low-level string functions count UTF-16 code units instead, which splits emoji outside the Basic Multilingual Plane (most modern emoji) into two units, and splits compound emoji like 👨‍👩‍👧 (man-woman-girl) into many. JavaScript's "😀".length is 2; this counter reports 1.
How does X / Twitter actually count characters?
X uses a per-codepoint count for most characters, but applies a 2x weight to most CJK characters (Chinese, Japanese, Korean) and most Cyrillic. So a single 漢 character costs two of your 280-character budget. Emoji count as one. The visible limit is therefore a soft target — this counter's codepoint count is a fair approximation for Latin-script posts and an under-count for CJK posts.
Why does the SMS limit drop from 160 to 70 when I include an emoji?
SMS messages use 7-bit GSM-7 encoding by default, which fits 160 characters in one segment. As soon as a single character outside the GSM-7 set appears (most emoji, accented characters in some scripts, smart quotes, em-dashes), the entire message is re-encoded in UCS-2 (16-bit Unicode), which only fits 70 characters per segment. Carriers typically split longer messages into multi-part SMS automatically, but each part still bills as a separate message.
Is the counting done locally or on a server?
Entirely locally. The text you paste is segmented and counted by JavaScript in your browser; no characters are sent to a server, logged, or stored. The tool also works offline once the page has loaded.
What's the right meta description length for SEO?
Aim for 150–160 characters. Google typically truncates meta descriptions at around 155 characters in desktop search results and around 120 on mobile, replacing the rest with an ellipsis. There is no algorithmic SEO penalty for going longer — the text simply gets cut. Front-loading the meaningful content in the first 120 characters guards against truncation.
How accurate is the speaking-time estimate?
It assumes 150 words per minute, which is a reasonable average for prepared speech. Real ranges: news anchors and auctioneers 180–250 wpm; conversational speech 130–160 wpm; slow, deliberate delivery for accessibility 100–120 wpm. For a TED talk-style 18-minute slot, plan for around 2,400 words at the usual pace — closer to 2,000 if you want pauses, jokes, and audience reaction to fit.

Related tools

Lorem Ipsum Generator
Generate placeholder text in paragraphs, sentences, or words
Text Diff Checker
Compare two texts side by side with difference highlighting
Find and Replace
Bulk find and replace text with regex support
Sort & Dedupe Lines
Sort, deduplicate, shuffle, and clean a list of lines
Browse other categories: Word Tools· Number Tools· Converters· Color Tools· Code Tools· Time Tools· Random Generators