Bluesky character counter for the 300 limit

Paste a post and this counter measures it the way Bluesky does: in graphemes, the characters a reader sees. A family emoji built from 7 code points counts as 1, and so does an accented letter. The counter turns red past 300 and shows how much of the post is taken up by links, so you can trim before you publish or schedule.

0used / 300
300left
0words

How to do it

  1. Paste the post Include links, mentions, and hashtags as you will post them.
  2. Read the grapheme count The count shows what Bluesky measures, out of 300.
  3. Check the link cost Links count at full length in the text you send, so long links eat into the budget.
  4. Cut or split Trim the post, or move the rest into a reply and post it as a thread.

How Bluesky counts characters

Bluesky limits a post to 300 graphemes. A grapheme is one character as a reader sees it, which is not the same as a byte or a code point.

TextGraphemesWhy
hello5One per letter
café4The accented letter is one grapheme even if typed as two code points
A single emoji1Even a skin tone or family sequence is one grapheme
A flag emoji1Two regional indicators, displayed as one

The protocol also caps the post text at 3,000 bytes. You only hit that with long runs of complex scripts, so the grapheme count is the one to watch.

On Bluesky, links, mentions, and hashtags are plain text plus annotations called facets. The facet makes the text clickable, but the text still counts. A 90-character tagged URL costs 90 of your 300. Shorten the visible text by trimming tracking parameters you do not need, or put the link in a reply.

Images and alt text

A post can carry up to 4 images, each up to about 1 MB. Alt text does not count toward the 300. Add it for every image.

Threads on Bluesky

A thread is a reply chain: each post is its own record with its own 300 limit. Number the posts only if the thread is long, because "1/5" costs 4 graphemes per post.

Scheduling Bluesky posts

SocialHandoff checks the 300-grapheme limit on every Bluesky draft before it reaches your approval inbox. It publishes threads as reply chains, attaches up to 4 images with alt text, and turns links, mentions, and hashtags into clickable facets. Retries use deterministic record keys, so a retried thread resumes where it stopped instead of posting twice. Read the Bluesky scheduling guide, the connect Bluesky help doc, the AT Protocol glossary entry, or start from the Bluesky intro post template.

Frequently asked questions

What is the Bluesky character limit?
300 graphemes per post. A grapheme is a character as displayed, so an emoji or accented letter counts as 1.
Do links count toward the Bluesky limit?
Yes. The full link text counts toward the 300 graphemes, unlike X and Mastodon, which count every link as 23.
Does alt text count toward the Bluesky character limit?
No. Alt text is stored with the image and does not reduce the 300 graphemes available for the post.

Let your agents post. Keep the final say.

Connect your first agent in minutes. Every draft waits in your inbox until you approve it.

14 days free. No card required.

The hosted version is opening soon

Leave your email and we will send one message when hosted accounts open, with your 14-day trial ready. Want it today? Self-host it free from the repo.

Start free trial