Bluesky Character Counter

This Bluesky character counter measures your post the way Bluesky does, counting graphemes against the 300-character limit so emoji, accents and flags are counted correctly. Paste a draft to see how much room is left, how many UTF-8 bytes it uses and how many posts a thread will need, before the app greys out the Post button.

Post length checker
Graphemes / 300
–
Remaining
–
UTF-8 bytes / 3000
–
Words
–
Lines
–
Posts needed
–

Runs entirely in your browser — nothing is uploaded. Graphemes are counted with Intl.Segmenter where your browser supports it; older browsers fall back to code points.

How the Bluesky Character Counter Works

Most character counters count JavaScript string length, which treats one emoji as two or more characters. Bluesky does not. Its post record allows up to 300 graphemes, meaning user-perceived characters, and also caps the text at 3,000 bytes of UTF-8. The Bluesky character counter checks both limits as you type, so a post full of emoji or non-Latin script is measured the same way the app measures it.

Rule: Graphemes are counted with the Unicode extended grapheme cluster rules through the browser’s Intl.Segmenter. A base letter plus combining accents, a flag made of two regional indicators, or an emoji family joined with zero-width joiners each count as one. Remaining = 300 − graphemes. Bytes = length of the text encoded as UTF-8. Posts needed = round up (graphemes ÷ 300). Words are runs of non-space characters; lines are separated by line breaks.

  • Your post — type or paste the draft text, including line breaks, mentions, hashtags and links.
  • Graphemes / 300 and Remaining — the count Bluesky checks, and how many are left (negative when over).
  • UTF-8 bytes / 3000 — the secondary byte limit; only very long non-Latin or emoji-heavy posts get close.
  • Copy, Clear — copy the text to paste into Bluesky, or empty the box.

Example Scenarios

InputGraphemesUTF-8 bytesRemaining
Testing my first Bluesky post. How many characters does this use before I hit the limit? (88 plain characters)8888212
café (precomposed é)45296
こんにちは (Japanese, 5 kana)515295
Family emoji: man, woman, girl, boy joined by 3 zero-width joiners125299
A country flag emoji (two regional indicator letters)18299
301 letters a301301−1 (2 posts needed)

Bluesky Character Limit: Tips for Fitting Your Post

The Bluesky character limit sits at 300, comfortably above the 280 many people are used to, but the grapheme rule surprises people in both directions. A family emoji that other tools call 11 characters counts as just one here, while a long URL eats room fast.

  • Write the post here first, then copy it in. The Bluesky 300 character limit is enforced in the app, and a post that is over simply will not send.
  • Links count as text you paste. The official app may display a shortened link, so the in-app count can be lower than this Bluesky post length checker shows for long URLs; treat this as the safe upper bound.
  • Mentions and hashtags count in full, including the @ and # signs and the full handle, such as @name.bsky.social.
  • Planning a thread? Use the posts-needed figure, then split at sentence ends so each post reads on its own.
  • Alt text for images has its own separate limit and is not part of the post text.

Because it relies on the same Unicode rules as the app, the Bluesky character counter doubles as a general Bluesky grapheme counter for bios and display names too, although those fields have their own, different limits. For how grapheme segmentation works in browsers, see MDN’s Intl.Segmenter reference.

Bluesky Character Counter FAQ

What is the Bluesky character limit?A Bluesky post can hold up to 300 graphemes, which are characters as a reader sees them. There is also a limit of 3,000 bytes of UTF-8 text, which only matters for very long posts in emoji or non-Latin scripts. Images, alt text and link cards are stored separately from the post text.
Why does my emoji count as one character?Bluesky counts graphemes, not code units. An emoji built from several code points, such as a family or a flag, is shown as a single symbol, so it counts once. Many generic counters use JavaScript string length and report 2 to 11 characters for the same emoji, which overstates what Bluesky sees.
Is there a Bluesky character counter bot or app?You do not need a bot or app. This page works in any desktop or mobile browser, needs no login and never connects to your Bluesky account. Bookmark it, paste a draft, check the remaining count and copy the text back into the app when it fits within the limit.
Why is the Bluesky character counter not working the same as the app?Small gaps usually come from links: the official app can shorten how long URLs display, which lowers its count. Older browsers without Intl.Segmenter also fall back to counting code points, which can overcount some emoji. Update your browser for the most accurate grapheme count.
Do spaces and line breaks count on Bluesky?Yes. Every space and line break counts as one grapheme toward the 300 limit, the same as a letter. Blank lines between paragraphs therefore cost two graphemes each, a line break plus the empty line. Trimming double spaces and extra blank lines is an easy way to win back a few characters.
How many words fit in a Bluesky post?It depends on word length, but typical English averages about five letters plus a space per word, so 300 graphemes usually holds around 45 to 55 words. Paste your draft above to see the exact word and grapheme count instead of estimating.

Related Tools

Writing something longer than a post? The reading time calculator for articles and threads estimates how long readers need. The password strength calculator is another tool that counts characters carefully, and the data storage converter for bytes and kilobytes helps make sense of the byte figure from the Bluesky character counter.

Related Calculators