A Bluesky post holds up to 300 characters. Bluesky counts graphemes, the characters a reader actually sees, so an emoji or an accented letter counts as one. The official app also counts a long link at its shortened length, not in full. Beyond posts, a display name takes 64 characters, a bio 256, a direct message 1,000 and image alt text 2,000.
Key Takeaways
- Posts: 300 graphemes, with a second cap of 3,000 bytes that only very emoji-heavy text ever reaches.
- Links: the Bluesky app shortens a long URL to the host name, the next 13 characters and ”…”, and only that shortened text counts.
- Profile: display name 64, bio 256. A handle on bsky.social takes 3 to 18 characters before “.bsky.social”.
- Media: up to 4 images of 2 MB each per post, and videos up to 10 minutes (since 25 August 2026) and 300 MB.
- Rate limits: an account can create about 1,666 records an hour (posts, likes, follows), and sign-ins are capped at 30 per 5 minutes.
Bluesky limits at a glance
Every figure below comes from Bluesky’s protocol schema (its lexicons), the code of the official Bluesky app, or Bluesky’s developer docs, read in October 2026. Graphemes are what a reader sees as one character.
| What you write | Limit | Where it is set |
|---|---|---|
| Post text | 300 graphemes (and 3,000 bytes) | Post schema |
| Hashtag | 64 graphemes each, counted inside the 300 | Post and rich text schemas |
| Display name | 64 graphemes | Profile schema |
| Bio | 256 graphemes | Profile schema |
| Handle on bsky.social | 3 to 18 characters, plus “.bsky.social” | Bluesky app code |
| Image alt text | 2,000 characters | Bluesky app code (the protocol sets none) |
| Direct message | 1,000 graphemes | Chat schema |
| Custom feed name | 24 graphemes, description 300 | Feed generator schema |
| Starter pack name | 50 graphemes, description 300 | Starter pack schema |
| Images per post | 4, up to 2 MB each | Image embed schema |
| Video | 10 minutes, 300 MB | Bluesky app code and announcement |
What is the Bluesky character limit?
300 characters per post, counted as graphemes. Bluesky’s post schema caps the text at 300 graphemes and also at 3,000 bytes, and the official app will not publish a post whose count passes 300.
A post can also be empty if it carries an image or a video, and the schema counts that as valid. Three hundred is a little more than X’s 280 for free accounts and less than the 500 that Threads allows. It is two or three full sentences. For anything longer, the usual answer on Bluesky is a thread: you add posts to the composer and each one publishes as a reply to the one before, with its own 300.
The 3,000-byte cap rarely matters. Ordinary letters take one byte and most emoji four, so 300 of either fit easily. Complex emoji are the exception: a family emoji is one grapheme but 25 bytes, so a post of 120 of them would already reach 3,000 bytes.
How does Bluesky count characters?
Bluesky counts each grapheme as one, whatever it is made of. A letter, an accented letter, a Chinese character and an emoji built from several code points all count as one. That is different from X, which counts every emoji and every CJK character as two, so text that fits X usually fits Bluesky with room to spare.
Two smaller rules apply when you post from the Bluesky app. It trims blank lines from the start of a post and spaces from the end before publishing, so stray whitespace there does not end up in the post. Mentions count in full: @handle.bsky.social uses every one of its characters. Hashtags count too, both the # and the word, and each tag can be up to 64 graphemes.
If you write for several networks at once, the strictest limit decides. A post that fits Bluesky’s 300 also fits LinkedIn, and Threads unless it is heavy on emoji, but may need trimming for X. Our guide to LinkedIn character limits lists the larger budgets that platform gives you. Threads, through its API, counts each emoji by its bytes, as our guide to the Threads character limit explains. YouTube’s API does the same with a video description, which holds 5,000 bytes, covered in our guide to the YouTube title character limit.
Do links count toward the Bluesky character limit?
Only their shortened form, in the official app. When everything after the host name (path, query and fragment) is longer than 15 characters, the app replaces the link with the host name, the first 13 characters of that part and ”…”. Only that shortened text counts toward the 300, while the full address stays behind it as the click target.
For example, https://postnext.io/blog/schedule-bluesky-posts/ is 48 characters as typed. The Bluesky app publishes it as postnext.io/blog/schedul…, which counts as 27. A short link such as a bare domain stays as it is, minus the https://.
Other apps and schedulers do not all do this. Some publish the full address, and then every character of it counts. A link card, the preview with an image and title under a post, adds nothing to the count, because it is attached to the post rather than written in the text.
What are the limits on a Bluesky profile?
Your display name can be 64 graphemes and your bio 256. Profile and banner images are PNG or JPEG files up to 1 MB each. Those limits are set in Bluesky’s profile schema, so every app that edits a Bluesky profile has to respect them.
Handles follow different rules because a handle is a domain name. On bsky.social the part before “.bsky.social” must be 3 to 18 characters, using letters, numbers and hyphens, and it cannot start or end with a hyphen. If you use your own domain as your handle, the protocol allows up to 253 characters, with each part between the dots up to 63. So a bsky.social name of 19 characters or more is refused, while a custom domain handle can be much longer.
What are the limits for alt text, DMs, feeds and starter packs?
Image alt text can run to 2,000 characters in the Bluesky app, direct messages to 1,000 graphemes, custom feed names to 24 graphemes and starter pack names to 50. Feed and starter pack descriptions both take 300 graphemes, the same as a post.
The alt text figure is worth a note. The protocol itself sets no limit on alt text, and the 2,000 comes from the Bluesky app. Its code cites the web accessibility guideline of about 100 characters and says the limit was raised “per user feedback”.
How long can Bluesky videos be?
Up to 10 minutes and 300 MB. Bluesky announced the change on 25 August 2026: “You can now post videos up to 10 minutes long, and they’ll upload 2–3x faster,” adding that the maximum file size had recently gone up to 300 MB. Before that, videos were capped at three minutes.
A post carries one video. The app accepts MP4, MOV, WebM and MPEG files as well as animated GIFs, Bluesky stores the result as MP4, and the video schema allows up to 20 caption files in WebVTT format, each up to 20 KB. Images remain capped at four per post, at up to 2 MB each. For how Bluesky’s video fits against other networks, see our comparison of Threads vs Bluesky.
What does “rate limit exceeded” mean on Bluesky?
It means your account or your network address made too many requests in a short time, and Bluesky’s servers are making you wait. The limits reset on their own, within minutes for most of them and at most a day for the daily caps. Waiting is the fix, and retrying straight away only uses up more of the allowance.
Bluesky’s developer docs list the limits. Writing to your account (posting, liking, following, reposting) costs points: 3 for creating something, 2 for an update and 1 for a delete, with a budget of 5,000 points an hour and 35,000 a day. That allows about 1,666 new records an hour and 11,666 a day. Bluesky says these limits “shouldn’t affect typical Bluesky users”.
The limits people usually meet are elsewhere. Signing in is capped at 30 times in 5 minutes and 300 times a day per account, so repeated failed passwords trigger it. Changing your handle is capped at 10 in 5 minutes and 50 a day. All requests from one IP address are capped at 3,000 per 5 minutes, which a busy third-party app or a shared office network can reach.
How PostNext handles the Bluesky limit
PostNext counts Bluesky posts in graphemes, the way Bluesky does, and stops a post over 300 in the composer, before it is scheduled. Links are the one difference from the Bluesky app: PostNext publishes a link as you typed it and makes it clickable, so the full address counts.
When a post is tight, use a short URL. PostNext publishes text and up to four images per Bluesky post, each post standalone; video and threads are not supported for Bluesky yet. The free plan includes 10 scheduled posts a month, and the steps are in our guide to scheduling Bluesky posts. While you draft, the free Bluesky post formatter shows a running count out of 300.
Frequently Asked Questions
What is the character limit on Bluesky?
300 characters per post, counted as graphemes, which are the characters a reader sees. Bluesky’s post schema also caps the text at 3,000 bytes, which only matters for very emoji-heavy posts. Display names take 64 characters and bios 256.
Do emojis count as one character on Bluesky?
Yes. Bluesky counts graphemes, so an emoji counts as one character even when it is built from several code points, such as a family or a flag. Accented letters and Chinese, Japanese or Korean characters also count as one each.
Do links count toward the Bluesky character limit?
In the Bluesky app, only the shortened form counts. The app shows a long link as the host name plus the next 13 characters and ”…”, and counts that text. Apps that publish the full address count every character, and a link card under the post counts nothing.
How long can a Bluesky bio be?
256 characters, counted as graphemes. The display name can be 64. Both limits are set in Bluesky’s profile schema, so any app that edits your profile has to keep to them.
How long can a video be on Bluesky?
10 minutes, with a file size of up to 300 MB, since Bluesky raised the limits in August 2026. Each post carries one video. Before the change the maximum was three minutes.
Can you write a post longer than 300 characters on Bluesky?
Not as one post. The 300-grapheme limit is part of the protocol, so every Bluesky app enforces it. Write a thread instead, where each post replies to the one before and has its own 300 characters, or link to a longer piece hosted elsewhere.
Related reading
- How to Schedule Bluesky Posts in 2026 (Step by Step)
- Threads vs Bluesky: Which One Should You Post On?
- Bluesky vs X: Which Should You Post On in 2026?
- LinkedIn Character Limits for Posts, Comments and More
Sources
- Bluesky protocol lexicons (github.com/bluesky-social/atproto,
packages/api/lexicons): post, profile, images, video, chat (October 2026) - AT Protocol, Lexicon specification and Handle specification (October 2026)
- Bluesky app source (github.com/bluesky-social/social-app): constants, link shortening, handle rules (October 2026)
- Bluesky, video update announcement (25 August 2026); Engadget, Bluesky now supports 10-minute videos (26 August 2026), for the earlier three-minute limit
- Bluesky docs, Rate limits (October 2026)