Text Utility
Text Counter
Check the length of essays, blog posts, product copy, social bios and SEO snippets before you publish. Count characters, words, lines, sentences and bytes directly in your browser.
Text analysis
Paste your text to review length, reading time and repeated keyword hints in one clean workspace.
Characters use UTF-16 code units: 😀 counts as 2. Bytes use UTF-8. Each textarea line break counts as one LF. Also check the destination's own limits.
Understand character, word and UTF-8 byte counts
A form's character limit and a file's byte limit are different checks. This tool uses JavaScript UTF-16 length for characters and UTF-8 for bytes. Emoji and combining marks can therefore produce results that differ from a platform's own counter.
Who this helps
- People checking an application, article or social post before submission.
- People comparing a byte limit with a character limit.
When to use this tool
- Compare counts with and without whitespace.
- Inspect line breaks and repeated words before copying text into another app.
From input to a checked result
- 1
Paste text into the input area; counts update as you type.
- 2
Use the character count that matches the destination's whitespace rule.
- 3
Check UTF-8 bytes separately if the limit is specified in bytes.
- 4
Review lines, paragraphs and keyword frequency as editing aids, then confirm the final count in the destination.
Words and spaces
- Input
- Hello world
- Result
- 11 characters; 10 without whitespace; 2 words; 11 UTF-8 bytes.
The space counts as one character and one byte.
An emoji uses different units
- Input
- A 😀
- Result
- 4 UTF-16 units; 3 without whitespace; 1 word; 6 UTF-8 bytes.
The emoji uses two UTF-16 units and four UTF-8 bytes. It is not counted as a word.
Combining accents
- Input
- école école don’t
- Result
- 18 UTF-16 units; 16 without whitespace; 3 words; 22 UTF-8 bytes.
The first accent is a separate combining mark. Keyword normalization groups both forms of école together: 2 of 3 words, or 66.7%.
How it works
Characters use String.length; the no-whitespace count removes JavaScript \s characters. Word matches contain Unicode letters or digits, combining marks and internal apostrophes/hyphens. A continuous Japanese or Chinese string can count as one word; this is not linguistic segmentation. UTF-8 bytes are counted with TextEncoder, without a byte-order mark. Lines are LF breaks plus one for nonempty input; paragraphs are separated by blank lines.
Limitations
- A visible character may contain several UTF-16 units. Destination counters can apply different rules.
- Zero-width space U+200B is not removed by the whitespace filter.
- Sentence counts and reading time are estimates. Reading time uses 220 words/minute in English, 450 in Korean and 500 in Japanese/Chinese.
- Keyword frequency lowercases and normalizes to NFC, omits short tokens and some English function words, and divides by all counted words. It is not a search-ranking score.
Text is counted in the current browser. This tool does not send the input text to the win-j server.
References
Related tools
- Duplicate Line Remover
Remove repeated lines before checking the final character count.
- English Case Converter
Adjust Latin-letter capitalization before pasting the final text.
Frequently asked questions
Why does the submission form show a different count?
It may count visible characters, handle emoji differently or normalize line endings and spaces. This tool counts UTF-16 units. Treat the destination's final counter as authoritative.
Are bytes and characters interchangeable?
No. UTF-8 uses different numbers of bytes for different characters. Another encoding, such as UTF-16, will have a different byte count.
Are Chinese and Japanese word counts exact?
No. Adjacent letters form a single match without dictionary-based segmentation. Use character or byte counts for limits that specify those units.
What if copying does not work?
Clipboard access depends on browser permissions. Select the text and copy it manually if automatic copying is unavailable.