Xiaohongshu Caption Character Counter
Emoji counted the way users perceive them · checks the 1000-character caption and 20-character title limits · nothing is uploaded
📖 How to use it
- Paste your caption into the caption box and put the title in its own field — counts update as you type.
- "Caption usage" at the top uses the strictest method: whichever of the three is largest. If that number is under 1000, the caption is under 1000 by every method.
- The table breaks the count down by Chinese characters, emoji, hashtags and spaces, so you can see where the length went.
- Use "Copy text" to get the text back — it never left your machine in the first place.
❓ Frequently asked questions
Q: How many characters is an emoji, really?
A: There is no single answer — it depends on the counting method. By grapheme cluster (what a reader perceives) one emoji is 1. By UTF-16 code unit, 😀 is 2, 🏃♀️ is 5, 👨👩👧 is 8 and the flag 🇨🇳 is 4. This page reports all three so you can compare them against the live counter in the editor and work out which one the platform uses.
Q: Will these numbers match the platform exactly?
A: No such promise. Platforms do not document how they count and they change the rules, so this page reports three methods and uses the most expensive one for the remaining budget. The advice stays conservative: you may be told you have less room than you do, but never that you are fine when you are not.
Q: Is my caption uploaded?
A: No. The counting is plain JavaScript running in the page; the text only lives in a memory variable, with no network request and no local storage write. Refreshing or closing the page clears it.
🧮 Why one emoji can produce several different numbers
In Unicode, "one emoji" is not "one character". Take 🏃♀️ — it is built from four code points: runner U+1F3C3, zero-width joiner U+200D, female sign U+2640 and variation selector U+FE0F. U+1F3C3 sits in a supplementary plane, so it needs two UTF-16 code units, while the other three take one each. That is why JavaScript reports a length of 5. The rule can be written as:
code units = Σ (code unit width per code point), 1 for BMP, 2 for supplementary planes; grapheme clusters treat a ZWJ / variation-selector / keycap / regional-indicator sequence as 1.
This explains a common confusion: you add ten emoji and the editor claims you used twenty or thirty characters — because combined emoji (skin tone, gender, family, flags) cost several times what a simple one does. The table below is computed from the real characters, not estimated:
| Emoji | Composition | Code points | Code units | Graphemes |
|---|---|---|---|---|
| 😀 | basic emoji | 1 | 2 | 1 |
| ❤️ | symbol + variation selector | 2 | 2 | 1 |
| 🏃♀️ | ZWJ sequence + gender sign | 4 | 5 | 1 |
| 👨👩👧 | three emoji joined by ZWJ | 5 | 8 | 1 |
| 🇨🇳 | two regional indicators | 2 | 4 | 1 |
| 1️⃣ | digit + keycap mark | 3 | 3 | 1 |
🧾 Worked example
The sample caption, item by item:
今天试了 3 款跑步鞋,最轻的一双只有 180g!🏃♀️ 附上实测数据👇 #跑步 #跑鞋测评
| Item | Value | Where it comes from |
|---|---|---|
| Grapheme clusters (perceived) | 44 | 27 Chinese characters + 4 punctuation + 4 digits + 1 letter + 2 emoji + 6 spaces |
| Unicode code points | 47 | The two emoji have 4 and 1 code points, three more than counting each as 1 |
| UTF-16 code units | 49 | The two emoji take 7 code units, every other character takes 1 |
| Chinese characters | 27 | 6 of them come from the hashtags: #跑步 (2) and #跑鞋测评 (4) |
| Emoji | 2 | 🏃♀️ (5 code units) + 👇 (2 code units) = 7 |
| Digit runs | 2 | 3 and 180; the letter g counts as one English word |
| Hashtags | 2 | #跑步 and #跑鞋测评 — the text inside also counts as Chinese characters |
Conclusion: this caption "looks like" 44 characters but costs 49 under the strictest method. If your caption is already at 990, adding two combined emoji can push it past the 1000 limit — which is exactly why emoji deserve their own line.
🎯 When this is useful
- Checking Xiaohongshu (RED) captions and titles against the limit, especially ones full of emoji and hashtags.
- Other short-caption platforms with hard limits: Douyin image posts, Weibo, WeChat article summaries, Bilibili descriptions.
- Verifying character counts before invoicing copywriting or freelance script work billed by length.
- Not suited to: reproducing a platform's internal count exactly (the rules are not published — trust the editor), or plagiarism-check character counts (use the thesis counter instead).