How to use this tool
- Paste or type your post into the box above.
- Read the grapheme count and how many you have left. The Bluesky limit is 300.
- If you go over, the text past the limit shows up under the bars, so you can see exactly what to cut.
- Check the Threads and Mastodon bars if you plan to cross-post the same text. Both allow 500 by default, and Mastodon counts every link as 23 characters.
What a grapheme is, and why it matters on Bluesky
A grapheme is one thing a reader sees as a single character. A letter is one. An accented letter is one, even when the computer stores it as a plain letter plus a separate accent. A flag is one. A family emoji is one, even though it is built from several people joined together. Bluesky's limit is 300 of these, not 300 characters in the programmer's sense.
That difference shows up fast with emoji. Here is how one family emoji, π¨βπ©βπ§, counts depending on the method:
| Counting method | Count for π¨βπ©βπ§ |
|---|---|
| Graphemes (what Bluesky's limit uses) | 1 |
| Unicode code points | 5 |
UTF-16 units (JavaScript's plain .length) | 8 |
| UTF-8 bytes | 18 |
This counter uses the browser's own grapheme segmentation, so it matches what you see on screen. Bluesky's post format is also reported to cap text at 3,000 bytes. That only matters for posts packed with complex emoji, and the counter flags it if you pass it.
Post limits compared: Bluesky, Threads and Mastodon
| Platform | Post limit | Counted as | Notes |
|---|---|---|---|
| Bluesky | 300 | Graphemes | An emoji counts once. The app shortens long links in the post text. |
| Threads | 500 | Characters | Meta's developer docs say text posts are limited to 500 characters. News reports say a separate text attachment can add up to 10,000 more. |
| Mastodon | 500 by default | Characters | Every link counts as 23. For a mention, only the username part counts. |
| X, free account | 280 | Weighted characters | Links count as 23, emoji as 2. See the Twitter/X thread splitter. |
If you cross-post one text to all three, Bluesky is the tight one. A post that fits in 300 graphemes will fit on Threads and Mastodon too.
How links count
Mastodon is simple: every link counts as 23 characters, however long it is. Bluesky is less obvious. In the app, a long pasted link appears in a shortened form inside the post, with the full address kept behind it, so a long link usually costs fewer graphemes than its full length. Tools that post through the API count the full link unless they shorten it first, and developers have reported a command-line client rejecting a post that the Bluesky app accepted.
This counter counts every character you type, links included. That makes it the cautious number. If your post has a long link and the bar shows you slightly over, the app may still take it, but a scheduling tool or API client might not.
Frequently asked questions
Sources
- Meta for Developers: Threads overview (text posts are limited to 500 characters)
- T2 Online: Threads adds text attachments of up to 10,000 characters (September 2025 news report)
- Mastodon documentation: posting (default limit of 500, links count as 23, mentions count the username only)
- PublishQ: Bluesky API limits (summary that cites Bluesky's post lexicon for 300 graphemes and 3,000 bytes)
- GitHub issue on the bsky command-line client: the API error "Record/text must not be longer than 300 graphemes", and a long link the app accepted