🔢 Character Counter
TextSorter Character Counter is a free online text analysis tool that allows you to count characters, letters, words & check platform limits instantly
What Actually Counts as a Character
Lead: the Characters count is text.length, JavaScript's own string length in UTF-16 code units. Most letters, digits and punctuation take one unit each, but a typical emoji takes two.
Hello 😀8Type "Hello" on its own and the counter reads 5, one per letter. Add a space and a single smiley and it jumps to 8, not 7, because that one visible smiley face is stored internally as two UTF-16 code units rather than one. JavaScript's string length was designed around code units, not around what a reader would call a single visible character, and every character counter built on the standard .length property inherits that design. It is not a rounding quirk and it is not specific to this tool.
Plain ASCII text, the letters, digits and punctuation on a US keyboard, and most accented Latin letters like é or ñ, live inside the range JavaScript stores as one code unit each. Emoji live outside that range. Faces, hands, animals, food, most of the emoji you would reach for in a caption or a text message, are stored as a pair of code units called a surrogate pair, so each one adds 2 to the Characters count rather than 1.
It gets more expensive from there. Many emoji you think of as a single picture are actually several emoji joined invisibly with a zero-width joiner: a family, a couple holding hands, a person doing a specific job with a specific skin tone. The counter still measures every joined piece, because each piece is still a real character in the string. A four-person family emoji, for instance, is really four person emoji and three invisible joining characters stitched together, and it alone adds 11 to your Characters count. Skin-tone modifiers work the same way: adding a specific skin tone to a hand or a face emoji does not replace the base character, it appends an extra invisible code point on top of it, so a modified emoji almost always counts higher than the unmodified version you might compare it against.
Budgeting an SMS or a tight caption around emoji? Do not estimate by eye. One emoji you see as "1 character" can silently cost 2, 4, or 11 of your limit depending on how it is built. Paste the exact text you plan to send into this tool and read the real number off the Characters card rather than counting emoji by hand.
Characters Without Spaces: Every Whitespace Type Gets Stripped
Lead: the "No Spaces" count removes every whitespace character it finds, not just the space bar. Tabs, line breaks and returns all disappear along with plain spaces.
Name: Jordan
City: Reno27 / 20That example carries 27 total characters once you count the three spaces after each colon and the line break between the rows, and the No Spaces figure drops it to 20. Seven characters vanish: three spaces on the first line, three on the second, and the single newline that separates the two rows. Swap those spaces for a tab character, which many spreadsheet and table pastes use instead of repeated spaces, and the result is identical: a tab is whitespace too, so it disappears from No Spaces exactly the same way a space does.
| Whitespace type | Typical source | Stripped by "No Spaces"? |
|---|---|---|
| Regular space | Space bar | Yes |
| Tab | Tab key, pasted spreadsheet cells | Yes |
| Line break / newline | Enter key, pasted paragraphs | Yes |
| Non-breaking space | Pasted from web pages or Word | Yes |
This matters most for anything you paste rather than type. Copy a paragraph out of a PDF, a spreadsheet, or a formatted email and you often carry along tabs, non-breaking spaces, or stray line breaks that do not show up as anything unusual on screen. The Characters card counts every one of them. The No Spaces card strips the whole family, which is the number to trust when a form or a limit is really asking "how much content is actually here," separate from how it happens to be formatted.
If you only need literal space bar presses removed and want tabs or line breaks left alone, this tool cannot split that hair; No Spaces treats all whitespace the same way. For that kind of surgical cleanup, the Clean Text tool gives you control over which whitespace gets touched.
Letters and Numbers Count Correctly in Every Script
Lead: the Letters and Numbers cards use Unicode's own letter and digit categories, so they work the same way on Arabic, Chinese, Cyrillic and accented Latin text as they do on plain English.
A ação não é fácil14Every one of those 14 counted letters includes the accented ones: ç, ã twice, and é, and á. The four gaps between words are spaces, not letters, so they are correctly left out of that count. The same rule applies regardless of which alphabet or script you are working in, because the counter checks each character against Unicode's own definition of "letter" rather than against a fixed list of English ones.
| Script | Example | Letters counted |
|---|---|---|
| Accented Latin (Portuguese) | ação | 4 |
| Arabic | مرحبا | 5 |
| Chinese | 你好 | 2 |
The Numbers card works the same way against digits. It is not scanning for the ten characters 0 through 9; it is matching Unicode's digit category, which also covers the Arabic-Indic digits used across the Arabic-speaking web and the digit forms used in several other scripts. Type ١٢٣ ١٢, five Arabic-Indic digits split into two groups, and the Numbers card reads 5, the same way it would read 123 12 in Western digits.
Put together, Letters plus Numbers will not always add up to Characters, and that is expected rather than a discrepancy to chase down. Spaces, punctuation, symbols and emoji all count toward Characters without counting as either a letter or a number, so a sentence full of commas and question marks will always show a smaller Letters number than its total Characters count.
Words: Hyphenated and Apostrophe Words Count as One
Lead: the Words card splits on whitespace only. A hyphen or an apostrophe inside a word does not split it into two.
can't stop-and-go traffic3That line reads as three words: can't, stop-and-go, and traffic, even though stop-and-go is built from three smaller words joined by two hyphens. The counting method is simple by design: trim the leading and trailing whitespace off the whole text, then split whatever remains everywhere one or more whitespace characters appear. A hyphen is not whitespace, and neither is an apostrophe, so neither one creates a split.
That single rule is why this Words number and a strict dictionary word count can drift apart on text that leans heavily on compound words, contractions, or hyphenated phrasing: "well-known," "mother-in-law," and "state-of-the-art" each land as one word here, matching how most word processors and style guides already treat them. The same splitting rule also means extra spacing never inflates the count: type "hello" and "world" with five spaces between them instead of one, and the Words card still reads 2, because a run of consecutive whitespace characters is treated as a single split point rather than one split per character.
Checking a title or a headline against a word-count rule? Paste it here rather than eyeballing it. Compound product names and hyphenated modifiers are the most common place a manual word count and this counter disagree, and the counter is applying the rule consistently every time.
Sentences: Why "Wait... really?" Counts as Two, Not Four
Lead: the Sentences card counts runs of terminating punctuation, not individual punctuation marks. An ellipsis or a stacked "?!" still counts as one sentence ending.
Wait... really?2It would be easy to assume that three dots plus one question mark adds up to four sentence endings, but the counter groups consecutive terminators, the period, exclamation point and question mark, into a single ending each time they appear back to back. "Wait" ends with the three-dot ellipsis, that whole run counts once, and "really" ends with the question mark, which counts once more. Two runs, two sentences, which matches how a person reading the line out loud would actually pause.
The same grouping applies to emphatic punctuation. "Save 20% today only!!!" reads as one sentence here, not three, because those three exclamation points form a single run at the very end of the line. Stack a question mark and an exclamation point together, as in "Really?!", and that pair also collapses into one counted ending rather than two.
This is a punctuation count, not a linguistic one. The counter has no idea what a sentence means; it only looks for periods, exclamation points and question marks. An abbreviation like "Dr." or a decimal like "3.5" adds a period the counter reads as a sentence ending, and a line with no terminating punctuation at all, however long, counts as zero sentences. Treat this number as a good proxy for editing tone and pacing, not as a guaranteed match to what a grammar textbook would count.
Paragraphs Count Blank Lines, Not Line Breaks
Lead: a new paragraph here means a blank line between blocks of text. Pressing Enter once, without a second blank line, keeps you inside the same paragraph.
Dear team,
The launch moved to Friday.
Bring the updated deck.2 / 4The first two lines of that message sit on separate lines but form one paragraph, because there is no blank line between them, only a single line break. The blank line before "Bring the updated deck" is what starts paragraph two. So the same short message reports 4 lines, since it spans four separate rows of text, but only 2 paragraphs, since only one of those row breaks is actually a blank one.
Lines and Paragraphs are answering genuinely different questions, and it is worth knowing that the counter's own Word Counter tool defines "paragraph" the other way: there, every line break starts a new paragraph, whether or not a blank line separates it from the line before. Neither definition is wrong; they are built for different jobs. This page's blank-line rule matches how word processors and CMS editors group paragraphs visually, while a line-per-paragraph rule suits plain lists and scripts where every line is its own unit regardless of spacing.
The Lines count carries one more quirk worth knowing before you rely on it: it counts line breaks, not lines of visible text, so a trailing blank line at the end of your text still adds one to the total. Paste three lines of text and hit Enter once more at the very end, leaving a blank final line, and Lines reports 4, not 3, because the count is really "how many line breaks split the text into pieces, plus one," and an empty final piece still counts as a piece.
Which Platform Limits This Page Tracks Live
Lead: the limits grid tracks six platforms at all times, and the "Focus on" dropdown above the editor adds two more with a dedicated progress bar for whichever one you pick.
| Platform | Limit type | Character limit | Always visible? |
|---|---|---|---|
| Twitter/X | Post | 280 | Yes |
| Caption | 2,200 | Yes | |
| Bio | 150 | Focus dropdown only | |
| Post | 3,000 | Yes | |
| SMS | Single message | 160 | Yes |
| Meta title | SEO title tag | 60 | Yes |
| Meta description | SEO description tag | 160 | Focus dropdown only |
| YouTube | Video title | 100 | Yes |
The six always-visible cards sit under the "Platform Character Limits" heading and update on every keystroke, turning from green to amber past 90 percent of the limit and to red once you cross it, so you can watch several limits at once while you write without picking one first. Instagram bio and meta description are not part of that permanent row, since a limits grid with every platform in it would be more clutter than signal, but both are one click away.
The "Focus on" dropdown is where those two live, along with a single-platform progress bar for any of the eight. Pick a platform there and a dedicated bar appears above the six cards, tracking that one limit specifically as you type, with the same green, amber and red states. Meta title and meta description are worth pairing when you are writing for search results, since Google effectively truncates both independently, a title past 60 characters and a description past 160 each risk getting cut off or rewritten on the results page.
SMS at 160 characters reflects a single standard-length text message. Longer messages still send on most phones, but they get split into multiple 160-character segments behind the scenes and can be billed or throttled as more than one message depending on the carrier, so treat 160 as the number worth writing to, not just a soft suggestion.
Common Reasons People Land Here
Writing a caption or a post against a hard limit
Draft directly in the editor and watch the Twitter/X or Instagram card as you go, rather than writing in a notes app and pasting in to check afterward. Trimming three words after the fact is easy; realizing you are 40 characters over after you already liked the phrasing is not.
Fitting a meta title and description for search results
Select "Meta title" or "Meta description" from the Focus on dropdown and write straight against the 60 or 160 character bar. Both numbers matter independently: a strong title that runs long gets truncated in search results exactly like a description that runs long does, just at a different limit.
Keeping a text message to one segment
Select SMS from the dropdown and stay under 160. Past that point your message still arrives, split into multiple segments by the carrier, which is worth knowing before you assume a slightly-too-long text sends as cleanly as a short one.
Meeting a form or application field limit
Bio fields, application short-answer boxes and profile summaries almost always enforce a character limit rather than a word limit, and pasting your draft here shows you the exact number a strict form validator would see, tabs, line breaks and all, not just what looks short on screen.
Checking an essay or abstract against a strict character count
Some journals and application forms cap an abstract or a personal statement in characters rather than words specifically because character counts are unambiguous in a way word counts are not. The Characters and No Spaces cards give you both readings at once, so you can match whichever definition the form is actually using.
Comparing letter density across languages
Because Letters and Numbers are Unicode-aware, they give an honest count on Arabic, Chinese, Russian or accented European text, not just English. That makes this a reasonable way to sanity-check translated copy against a source text's rough length before it goes to a localization team.
Working out why a form keeps rejecting text as "too long"
When a submitted field bounces back as over the limit and the visible text looks short enough to fit, the gap is almost always one of the things covered above: an emoji quietly worth 2 or more characters, a pasted non-breaking space or tab the No Spaces count would catch, or a trailing blank line nudging the total past what you expected. Paste the exact text into the editor and the Characters card shows the number the form's own validator is actually working from, which is usually enough to spot the difference in a few seconds instead of guessing.
Frequently Asked Questions
Related Tools
🔒 100% Private
All character counting happens locally in your browser-your text is never uploaded or stored. Safe for confidential documents, passwords, and sensitive content.