How to do it
- Paste the post Include links, mentions, and hashtags as you will post them.
- Read the grapheme count The count shows what Bluesky measures, out of 300.
- Check the link cost Links count at full length in the text you send, so long links eat into the budget.
- 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.
| Text | Graphemes | Why |
|---|---|---|
hello | 5 | One per letter |
café | 4 | The accented letter is one grapheme even if typed as two code points |
| A single emoji | 1 | Even a skin tone or family sequence is one grapheme |
| A flag emoji | 1 | Two 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.
Links, mentions, and hashtags
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.