Character Counter
Paste or type your text to see its length, most frequent words and estimated reading time. Everything is calculated in your browser, including emoji and accented characters.
How to use the counter
- Paste or type text into the field.
- Check character, word, sentence, paragraph and line totals, then review the reading and speaking estimates. The UTF-8 result shows the text’s encoded size.
- Use the category breakdown when you need to understand mixed writing systems.
Features
- Counts visible characters, words, lines and UTF-8 bytes
- Shows reading estimates and word frequency
- Breaks down characters by writing system
- Separately counts whitespace and characters without it
- Shows sentence and paragraph totals with speaking estimates
Use cases
- Check a form or editorial word limit
- Review structure in a multilingual draft
- Plan the length of a presentation script
- Spot repeated terms before publishing
How the results are counted
Characters are Unicode grapheme clusters: an accented letter or a family emoji can count as one character even when it contains several code points. The total includes whitespace. It measures text characters, not how many glyphs a particular font draws.
Whitespace includes spaces, tabs, non-breaking spaces and Unicode line separators. A CRLF pair counts as one whitespace character and one line break. LF, CR, NEL, and Unicode line and paragraph separators also start a new line. Empty text has zero lines; a final line break adds an empty line.
When available, the browser’s Intl.Segmenter finds word boundaries for the selected language, including languages such as Chinese that do not separate words with spaces. Without it, each continuous run of letters or numbers is one word, allowing combining marks and internal apostrophes. An unspaced Chinese passage is then counted as one run, so word totals can differ between browsers.
UTF-8 size measures the encoded text in bytes. One KB is 1,000 bytes and one KiB is 1,024; one MB is 1,000,000 bytes and one MiB is 1,048,576. Emoji and non-Latin characters often need several bytes even when they count as one character.
In older browsers, the character-count fallback keeps common combining marks, emoji sequences, flags, and Hangul syllables together. It is not a complete replacement for Unicode segmentation: uncommon script-specific combinations may be counted differently. If a browser cannot identify a Unicode category reliably, the character appears under “Emoji and other”.
Sentences follow the browser’s language-aware sentence boundaries when available, or a punctuation-based estimate in older browsers. Abbreviations and unusual punctuation can still affect the result. Blank lines, including lines containing only spaces or tabs, separate paragraphs; a Unicode paragraph separator does too. One ordinary line break stays within the same paragraph.
Reading time uses 200 words per minute and speaking time uses 130, rounded up to whole minutes. These are rough planning estimates, not measurements: language, pauses, content and personal pace all matter, especially for languages such as Chinese.
Word density is a word’s occurrence count divided by the total word count, multiplied by 100. The list shows up to 25 words and includes common words and numbers. Case and equivalent accent encodings are grouped; different word forms remain separate. Percentages use all words, so the displayed entries need not add up to 100%.
Lines count explicit line breaks, including blank lines, rather than the rows created by wrapping text to fit your screen. Seven paragraphs separated by six blank lines have 13 lines if there are no other line breaks.
What this counter is useful for
Use it to prepare social posts, form fields, messages, titles, meta descriptions and short descriptions with a character limit.
Check an assignment or editorial brief against its requested length, then use the sentence and paragraph totals to review the structure. Reading and speaking estimates help plan articles, presentations and voice-over scripts.
Use word density to spot repeated wording before publishing. The character-category breakdown also helps inspect multilingual drafts, while line totals describe the structure of pasted text.
Because everything runs locally, you can check sensitive drafts, application text or unpublished copy without sending it to an online service.
Frequently asked questions
Related tools
JSON to YAML
Convert JSON to YAML locally while preserving number text and quoted strings; copy or download the complete result.
Open tool — JSON to YAMLYAML to JSON
Convert one YAML document locally to JSON with exact number text and bounded aliases, then copy or download the complete result.
Open tool — YAML to JSONHTML to Markdown
Convert pasted or local HTML into Markdown, review conversion notes, and copy or download the result.
Open tool — HTML to MarkdownJavaScript Regex Tester
Test a JavaScript pattern locally and inspect matches, captures, and UTF-16 positions.
Open tool — JavaScript Regex TesterMarkdown to HTML
Convert a Markdown draft to an HTML fragment, inspect the source and inert preview, then copy or download it.
Open tool — Markdown to HTMLText Sorter
Sort lines alphabetically by a chosen language or by Unicode code point, keeping duplicates, blank rows and complete line contents.
Open tool — Text SorterRemove Duplicate Lines
Keep the first copy of each exact text line, preserving order, significant spaces and blank rows, then copy or download the result.
Open tool — Remove Duplicate LinesText Diff Checker
Compare two drafts locally, with exact whole-line changes, visible whitespace rules and clear final-newline handling.
Open tool — Text Diff CheckerCase Converter
Convert text to uppercase, lowercase, capitalized words or sentence case with explicit letter rules.
Open tool — Case ConverterHTML Entity Encoder/Decoder
Encode or decode literal HTML references with explicit context, Unicode options and LF output, without parsing or rendering markup.
Open tool — HTML Entity Encoder/DecoderMarkdown Table Generator
Edit a small literal-text table, set alignment and copy GFM Markdown or import tab-separated text.
Open tool — Markdown Table GeneratorQuery String Parser & Builder
Edit ordered URL parameters, retain repeated names and copy a normalized query or HTTP(S) URL.
Open tool — Query String Parser & BuilderURL Encoder & Decoder
Convert a UTF-8 URL component or form value with explicit space and plus rules, then copy or download the result.
Open tool — URL Encoder & DecoderBase64 Encoder & Decoder
Encode UTF-8 text as standard or URL-safe Base64, or decode either format with clear errors and complete text output.
Open tool — Base64 Encoder & DecoderXML Formatter
Check namespace-aware XML 1.0, format or compact locally, and copy or download UTF-8 output.
Open tool — XML FormatterJSON Formatter & Validator
Check JSON syntax, format or minify locally, and copy or download output while preserving original data tokens.
Open tool — JSON Formatter & ValidatorSMS Character Counter & Segment Calculator
See how your message is encoded, where its segments end and what it may cost. Your text stays in your browser.
Open tool — SMS Character Counter & Segment CalculatorSocial Media Character Counter
Check platform-specific limits and split posts without losing text.
Open tool — Social Media Character CounterText Size Calculator
Compare text encodings and payload sizes in your browser.
Open tool — Text Size CalculatorPDF Text Cleaner
Fix line breaks and spacing in text copied from a PDF. Preserve your original and review ambiguous hyphens before copying the cleaned text.
Open tool — PDF Text CleanerFancy Text Converter
Convert supported fancy Unicode letters to normal text locally. Keep case, accents, emoji and your original text.
Open tool — Fancy Text ConverterGarbled Text Fixer
Fix garbled text and repair broken accents with a browser-based mojibake fixer. Review each possible UTF-8 reversal before applying it.
Open tool — Garbled Text FixerGmail Clipping Checker
Measure email HTML bytes in UTF-8, compare them with an advisory 102,000-byte Gmail reference, and inspect size contributors locally.
Open tool — Gmail Clipping Checker