Last checked: October 10, 2026

Every Bluesky limit in 2026: posts, images, video, bio and DMs

A Bluesky post holds 300 characters (graphemes), up to 4 images of 2 MB each or one video up to 10 minutes and 300 MB. Bios hold 256 characters, display names 64, DMs 1,000 and image alt text 2,000.

Pages that list Bluesky limits often disagree, because several of them have been raised and older guides still quote the old numbers. Every number below comes from the AT Protocol lexicons, the official app's source code or Bluesky's rate limit documentation, with a link to the exact file. The last column shows what OpenTweet sends when it publishes to Bluesky for you.

Bluesky limits reference table

Last checked October 10, 2026. Grapheme counts are what you see as characters.

LimitValueWhat OpenTweet sendsSource
Posts
Post text300 graphemes and 3,000 bytesChecks both, 300 graphemes and 3,000 bytesapp.bsky.feed.post
Post languages3 per postNot sentapp.bsky.feed.post
Extra tags (outside the text)8 tags, 64 graphemes eachNot sentapp.bsky.feed.post
Hashtag in the text64 graphemesHashtags detected and linkedapp.bsky.richtext.facet
ThreadsNo cap in the post recordUp to 100 posts per threadapp.bsky.feed.post
Media
Images4 per post, 2 MB (2,000,000 bytes) eachSupports 4 images, resized to fit 2 MBapp.bsky.embed.images
Video1 per post, 300 MB, 10 minutesNo video on Bluesky yetapp.bsky.embed.videosocial-app constants.ts
Video captions20 VTT files, 20,000 bytes eachNo video on Bluesky yetapp.bsky.embed.video
Image alt text2,000 characters in the official appAlt text not yet exposedsocial-app constants.ts
Profile
Display name64 graphemesNot applicableapp.bsky.actor.profile
Bio (description)256 graphemesNot applicableapp.bsky.actor.profile
Pronouns20 graphemesNot applicableapp.bsky.actor.profile
Avatar and banner1 MB (1,000,000 bytes) each, PNG or JPEGNot applicableapp.bsky.actor.profile
Profile links10Not applicableapp.bsky.actor.profile
Messages
Direct message1,000 graphemes (10,000 bytes)Not sentchat.bsky.convo.defssocial-app constants.ts
Starter packs, feeds, lists and moderation
Starter pack members150 by defaultNot applicablesocial-app constants.ts
Starter pack name50 graphemesNot applicableapp.bsky.graph.starterpack
Feeds in a starter pack3Not applicableapp.bsky.graph.starterpack
Custom feed name24 graphemesNot applicableapp.bsky.feed.generator
List name64 charactersNot applicableapp.bsky.graph.list
Subscribed labelers20Not applicablesocial-app constants.ts
Reply-control rules5 per postNot applicableapp.bsky.feed.threadgate
Hidden replies300 per postNot applicableapp.bsky.feed.threadgate
Account rate limits (Bluesky-hosted accounts)
Record writes5,000 points per hour, 35,000 per dayOne record per postBluesky rate limits doc
Logins (createSession)30 per 5 minutes, 300 per dayUses OAuth, not password loginsBluesky rate limits doc
Handle changes10 per 5 minutes, 50 per dayNot applicableBluesky rate limits doc

Characters on Bluesky are graphemes

Bluesky counts text in graphemes, the units you see as one character. A flag emoji or a family emoji is one grapheme even though it is several code points underneath. Underneath the 300-grapheme post limit sits a 3,000-byte cap, which only bites when a post is mostly emoji or non-Latin script.

Links count at their full length when you post through the API. The Bluesky character counter counts both graphemes and bytes, and does a link count on Bluesky? covers the link case in detail.

Bluesky limits that changed

  • Images went from 1 MB to 2 MB. The images lexicon notes the old 1 MB cap. Details in Bluesky's image size limit.
  • Video went from 100 MB to 300 MB. The video lexicon notes the old 100 MB cap.
  • 10-minute video is open to everyone. The official app removed the 10-minute and multipart upload feature gates on August 25, 2026 (social-app #11528). Guides that say 3 minutes or 100 MB are out of date.
  • Starter pack size is set remotely. Since September 23, 2026 the app reads the member limit from remote configuration (social-app #11706). The default is still 150.

Lexicon limits vs app limits

Lexicon limits apply to every app on the AT Protocol. A few numbers on this page, such as alt text, starter pack size and the 10-minute video cap, are set by the official Bluesky app. Other clients can apply their own.

Rate limits for accounts

Accounts hosted by Bluesky can write 5,000 points per hour and 35,000 per day. Creating a record costs 3 points, updating 2 and deleting 1, so an account can create up to 1,666 records an hour and 11,666 a day. Likes and follows count as records too. Logins are limited to 30 per 5 minutes and 300 per day, and handle changes to 10 per 5 minutes and 50 per day.

Self-hosted servers can set different numbers. The Bluesky API rate limit guide works through what that means for posting bots and scheduled posts.

What OpenTweet sends to Bluesky

OpenTweet checks every Bluesky post against 300 graphemes and 3,000 bytes, attaches up to 4 images and resizes them to fit under 2 MB, and posts threads of up to 100 parts as proper reply chains. Links, mentions and hashtags are detected and made clickable.

Two things are not there yet. OpenTweet does not post video to Bluesky, so a post with video is not sent to Bluesky. Alt text is supported in the Bluesky publishing code but is not yet exposed in the composer or the API. Posting is over atproto OAuth, so you never hand over a password or app password.

7-day free trial. Cancel anytime.

Frequently asked questions

What is the Bluesky character limit for a post?

300 characters, counted as graphemes, and 3,000 bytes. A grapheme is what you see as one character, so an emoji made of several code points still counts as one. The byte cap only matters for posts that are mostly emoji or non-Latin script.

What are the Bluesky upload limits?

Up to 4 images per post at 2 MB (2,000,000 bytes) each, or one video up to 10 minutes and 300 MB. A video can carry up to 20 VTT caption files. Avatars and banners are capped at 1 MB each and must be PNG or JPEG.

What is the Bluesky bio character limit?

256 characters (graphemes). Display names hold 64 and the pronouns field holds 20. A profile can show up to 10 links.

What is the Bluesky DM character limit?

1,000 characters (graphemes) per direct message, with a 10,000-byte ceiling underneath. That is the value in both the chat lexicon and the official app.

How long can Bluesky alt text be?

2,000 characters in the official Bluesky app. That is the app constant MAX_ALT_TEXT. Each image in a post gets its own alt text.

What is the Bluesky starter pack limit?

Starter packs hold 150 people by default. Since September 23, 2026 the app reads the member limit from remote configuration, so Bluesky can change it without an app update. A starter pack name holds 50 characters and a pack can include up to 3 custom feeds.

Bluesky and X from one draft

Every post checked against Bluesky's limits. From $11.99 a month.

7-day free trial. Cancel anytime.