Paste or type your text and see Chinese characters, English words and characters right away
Your text is counted inside this browser tab. This tool never sends or keeps what you type.
Paste or type your text and any invisible or control characters will be listed here, with their position and code point.
Here is how every number on this page is produced. These rules are this tool's own definitions, and they are not guaranteed to match Word, Google Docs or any other site.
| Item | How it counts | Example |
|---|---|---|
| Words (with punctuation) | Chinese characters, Bopomofo symbols, kana, Hangul syllables, Latin words, numbers and emoji each count as 1, plus full-width punctuation and special symbols that stand outside a word (such as ,。「」~①°©) | 我用iPhone15拍照 counts as 5; 你好,世界。 counts as 6 |
| Words (without punctuation) | Words (with punctuation) minus the full-width punctuation and special symbols above | 你好,世界。 counts as 4 |
| Characters (with spaces) | Each character you see on screen counts as 1. Combined characters and emoji are not split apart. Line breaks and invisible characters are not counted | café counts as 4; 👨👩👧👦 counts as 1 |
| Characters (without spaces) | Characters (with spaces) minus half-width spaces, full-width spaces, tabs and other whitespace. A zero-width joiner sitting right after a space is dropped along with the space | Hello world counts as 10 |
| Chinese characters | Han characters in Unicode, including rare characters from the extension blocks, compatibility ideographs, 〇, 々 and radicals | 𠮷野家 counts as 3 |
| Bopomofo | Each Bopomofo symbol and each tone mark counts as 1 | ㄋㄧˇ counts as 3 |
| Latin words | A run of letters and digits counts as 1. A single apostrophe, hyphen, underscore, full stop, comma, colon, slash or @ inside the run keeps it as one word. Greek and other alphabetic scripts count too | don't, e-mail and COVID-19 each count as 1; the URL https://www.pocketool.app counts as 2 |
| Numbers | Digits with no letters attached, full-width digits included. A comma, decimal point or colon inside them keeps it as one number | 1,234.5, 12:30 and 123 each count as 1; 2026-09-14 counts as 3; the amount written out in Chinese as 三千五百 counts as 4 Chinese characters |
| Punctuation | All punctuation, including half-width commas, full stops and question marks. Half-width punctuation is not added to the word count | 好,但是. counts as 3 words and 2 punctuation marks |
| Emoji | Families, skin tones, flags and keycap sequences each count as 1. Characters without a colour emoji presentation, such as ❤ © ™, count as symbols | ❤️ ❤ is 1 emoji plus 1 symbol |
| Lines and paragraphs | Lines are the number of line breaks plus 1, a trailing line break adds one more line, and empty text is 0 lines. A paragraph is a line that has visible text, so blank lines are not counted | Two blocks of text with one empty line between them are 3 lines and 2 paragraphs |
| Invisible characters | Zero-width spaces, zero-width joiners, the byte order mark and soft hyphens count as neither words nor characters, and their number is shown separately | Text copied from a web page or a PDF often carries them |
Text copied out of a PDF, a Word file, a messaging app or a code editor often carries characters you cannot see. The Unicode and invisible character check in the tool above lists every one of them with its type, its code point, its UTF-16 index in your text and the surrounding context. You can step through them one at a time, select each one in the box, and decide for yourself whether to clean it out.
The table below is what this first version recognises. The tool does not load the full Unicode character database; it maintains only this list.
| Type | Code point | Default | What it is |
|---|---|---|---|
| Zero-width space | U+200B | Selected by default | The most common stowaway when copying from a web page, a PDF or a messaging app. It takes no width and cannot be seen |
| Byte order mark | U+FEFF | Selected by default | An encoding marker from the start of a file. Pasted into text it becomes one invisible character |
| Soft hyphen | U+00AD | Selected by default | Shows up as a hyphen only when the line breaks there. Otherwise it cannot be seen |
| No-break space | U+00A0 | You select it yourself | Looks like a space but never breaks the line here. It often causes trouble in forms and in code |
| Word joiner | U+2060 | You select it yourself | Prevents a line break at this position. The character itself cannot be seen |
| Bidirectional control | U+061C, U+200E, U+200F, U+202A to U+202E, U+2066 to U+2069 | You select it yourself | Changes the display order of the text. Removing it affects normal Arabic and Hebrew layout, and it can also be used to disguise text |
| Zero-width joiner | U+200D | Reported only, never removed | Joins emoji or letters into one unit. Removing it breaks family emoji and some scripts |
| Zero-width non-joiner | U+200C | Reported only, never removed | Stops letters joining up in Arabic, Persian and Indic scripts. Removing it changes the spelling |
| Variation selector | U+FE00 to U+FE0F, U+E0100 to U+E01EF | Reported only, never removed | Decides which glyph a character uses, or whether it shows as a colour emoji |
Cleaning always takes two steps, so nothing is ever rewritten by a single click. Select the types you want, press Preview cleanup, and the tool shows how many of each type would go along with an extract of the positions. At that point your text has not changed at all. Press Apply cleanup and the text in the box is replaced, with a single Undo cleanup available to bring back what was there before. Once you edit the text yourself, that undo no longer points at stale content.
Cleaning removes only the code points you selected and keeps every other character exactly as it was: no NFC or NFKC normalisation, no full-width to half-width conversion, and no changes to letter case or whitespace.
Word and Google Docs both count words, and neither publishes the full method. Mixed Chinese and English text, punctuation, emoji and URLs often come out differently, and results can change between versions. This tool makes no claim to match them. The rules are written out above so you can check any number yourself.
The Google Docs help page states that its word count excludes headers, footers and footnotes (Google Docs Help).
When an assignment, a competition or a submission sets a word limit, use the method the organiser specifies. Whether punctuation counts, and whether the title is included, varies from one set of rules to the next.
The table below lists only the limits stated in official documentation, verified on 14 September 2026. Platform rules can change at any time, so check the current official page before you post. How each platform counts Chinese, emoji and URLs is not necessarily the same as this tool, so the numbers below cannot be compared directly with the statistics above.
| Platform and field | Limit and notes | Official source |
|---|---|---|
| YouTube video title | 100 characters | YouTube Help |
| YouTube video description | 5,000 characters | YouTube Help |
| Instagram post caption | 2,200 characters, plus a maximum of 30 hashtags and 20 @ mentions (stated in the developer documentation for posting through the API) | Meta developer documentation |
| Threads post | 500 characters. The announcement does not say how Chinese and emoji are counted | Meta announcement |
| X post | 280, using a weighted count: each Chinese character counts as 2 and every URL counts as 23. This tool does not apply that weighting | X developer documentation |
| Chunghwa Telecom SMS | 70 characters when full-width Chinese and English are mixed, 160 for half-width letters and digits only. Spaces and punctuation are included, and anything longer is split into several messages | Chunghwa Telecom SMS service |
This tool never sends or keeps what you type. Your text does not go into the URL, a Cookie or the browser's storage, and it is gone as soon as you reload or close the page. The undo buffer after you press Clear is held in memory only and is discarded once the notice disappears. You can confirm both of these yourself:
Like every other page on this site, this one loads Google Analytics and Google AdSense, which may send browsing records of their own. This tool does not hand your text to those services. See the Privacy Policy for details. Browser extensions can read the contents of any page, which is outside this site's control.
Emoji such as families, skin tones and flags are built from several Unicode characters. A family of four, for example, is 7 code points. What you see on screen is a single picture, so this tool follows the Unicode RGI emoji list and counts the whole sequence as 1 word and 1 character. When a browser does not support that list, the affected numbers are marked with "about".
It depends on what the count is for. Some writing competitions and submission rules include punctuation and some do not, so this tool shows both "Words (with punctuation)" and "Words (without punctuation)". Half-width commas and full stops in English sentences normally sit against a word, so this tool does not count them as words and includes them only under punctuation.
A URL is split at the colon and slashes, so https://www.pocketool.app counts as 2 Latin words. The email address user@example.com counts as 1 Latin word. The date 2026-09-14 counts as 3 numbers, and the time 12:30 counts as 1 number.
Zero-width spaces, zero-width joiners, the byte order mark and soft hyphens do not show up on screen, and they often come along when you copy text from a web page, a PDF or a messaging app. The "Invisible characters" figure in the statistics counts them as neither words nor characters and only reports how many were found. Zero-width joiners used to build emoji are not included in that number.
To see where they are, what they are and whether they can safely go, use the Unicode and invisible character check above. It lists each position and code point, and it covers more than the statistics figure does (no-break spaces, bidirectional controls and variation selectors as well), so the two numbers are not necessarily the same.
Zero-width joiners, zero-width non-joiners and variation selectors are usually a working part of normal text: family emoji are held together by zero-width joiners, Arabic and Indic scripts use zero-width non-joiners to decide whether letters join up, and variation selectors decide which glyph a character uses or whether it appears as a colour emoji. Once they are gone, nothing on screen shows what broke, so this tool reports their positions and does not offer to remove them. Bidirectional controls can be removed, but you always have to select them yourself: the tool never deletes them for you.