Xiaohongshu Caption Character Counter

Emoji counted the way users perceive them · checks the 1000-character caption and 20-character title limits · nothing is uploaded

Counting happens inside your browser: no network request is made and nothing is written to local storage. Open the Network panel in your dev tools to check for yourself.

Used 0 / 20 — the title uses the same methods as the caption, so one emoji still counts as 1.

Usage is measured with the strictest method, so emoji and hashtags are all included.

📊 Overview

Caption usage (strictest method)0
Remaining of 10001000
Emoji0
Chinese characters0

0% used (0 / 1000, strictest method)

Paste a caption and the counts and breakdown appear here in real time.

📖 How to use it

  1. Paste your caption into the caption box and put the title in its own field — counts update as you type.
  2. "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.
  3. The table breaks the count down by Chinese characters, emoji, hashtags and spaces, so you can see where the length went.
  4. 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:

Character cost of common emoji (computed from Unicode properties on this page)
EmojiCompositionCode pointsCode unitsGraphemes
😀basic emoji121
❤️symbol + variation selector221
🏃‍♀️ZWJ sequence + gender sign451
👨‍👩‍👧three emoji joined by ZWJ581
🇨🇳two regional indicators241
1️⃣digit + keycap mark331

🧾 Worked example

The sample caption, item by item:

今天试了 3 款跑步鞋,最轻的一双只有 180g!🏃‍♀️ 附上实测数据👇 #跑步 #跑鞋测评

ItemValueWhere it comes from
Grapheme clusters (perceived)4427 Chinese characters + 4 punctuation + 4 digits + 1 letter + 2 emoji + 6 spaces
Unicode code points47The two emoji have 4 and 1 code points, three more than counting each as 1
UTF-16 code units49The two emoji take 7 code units, every other character takes 1
Chinese characters276 of them come from the hashtags: #跑步 (2) and #跑鞋测评 (4)
Emoji2🏃‍♀️ (5 code units) + 👇 (2 code units) = 7
Digit runs23 and 180; the letter g counts as one English word
Hashtags2#跑步 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).