Bluesky character limits for every text field

A post takes 300 characters, counted the way you see them: one emoji is one character. Bios take 256 and display names 64. Paste a post below to count it.

Checked on against 8 sources.

Count a post the way Bluesky counts it

Type or paste. It stays in your browser.
Post242 / 300
Hashtags1 (no limit)
omnisocials

Every Bluesky post gets 300 characters. Each letter, space, line break and emoji counts as one. In the Bluesky app, a link counts as its short form. Through the API, the text counts as sent. Out of room? Split it into a thread. #blueskytips

Bluesky shows the whole post. Only posts of 25 lines or more fold behind "Show more". The counter counts links in full, as the API does.
The short answer

Posts: 300 characters. Bios: 256. Display names: 64.

A Bluesky post holds 300 characters, counted as graphemes: an emoji or an accented letter is one character, even when it is several code points underneath. The post format also caps the text at 3,000 bytes, which only emoji-heavy posts reach. Photos, videos and link cards do not count.

In the Bluesky app, a link counts as its short form, the domain plus at most 16 characters. Through the API, which every scheduler uses, the text counts as sent, so a full link counts in full. Bios take 256 characters, display names 64, alt text 2,000 and direct messages 1,000.

Post
300
Graphemes, up to 3,000 bytes
Bio
256
Display name: 64
Alt text
2,000
Per photo or video, in the app
Every limit

Every Bluesky text limit in one table. With where each number comes from.

Bluesky character and count limits for posts, links, bio, display name, handle, alt text, direct messages, hashtags, languages, lists and starter packs, October 2026
FieldLimitSource
Post300 characters (graphemes)Bluesky's post format and app
Post, in bytes3,000 bytesPost format; emoji-heavy posts can reach it first
Link in a postApp: domain plus up to 16 characters. API: counted as sentBluesky app code; post format
Display name64 charactersProfile format and app
Bio256 charactersProfile format and app
Handle3 to 18 characters before .bsky.social; up to 253 for your own domainBluesky's server code; handle spec
Alt text2,000 characters per photo or videoBluesky app; the post format sets no cap
Direct message1,000 charactersChat format and app
Hashtag64 characters per tag; no limit on how manyPost format
Post languagesUp to 3Post format
List description300 charactersList format
Starter packName 50, description 300Starter pack format
Lines before "Show more"25 linesBluesky app; there is no character fold
Checked on October 17, 2026 in Bluesky's post format (the app.bsky lexicons) and its open-source app. Characters here means graphemes, what you see as one character.
What changed

What changed for text. The 300 limit has held.

  1. Jun 2026

    Alt text on videos

    Version 1.126 added alt text to videos, with the same 2,000-character limit as photos. Source

  2. Jan 2026

    Cashtags

    Posts can tag stocks like $AAPL; tapping one shows other posts about that ticker. They count toward the 300 like any text. Source

  3. Apr 2025

    A 299-character limit, as a joke

    Bluesky's April Fools' post said posts "can now be 299 characters long". The real limit stayed at 300. Source

Tips

Write posts that fit. 300 goes fast.

  1. Say the point first

    Bluesky shows the whole post, but people skim. Put the one thing you want read in the first line.

  2. Split long ideas into a thread

    Each part of a thread gets its own 300 characters. Number the parts only if order matters.

  3. Use short links when you schedule

    Through the API a link counts in full. A long tracking link can eat a third of the post; shorten it first.

  4. Watch emoji-heavy posts

    Each emoji counts as one character, but the 3,000-byte cap can stop a post full of emoji before 300.

  5. Put detail in alt text

    Alt text takes up to 2,000 characters per photo or video. Describe what is in the image there.

  6. Use all 256 bio characters

    Say who you are and what you post about, in plain words. It is the first thing people read before they follow.

Sources

How we built this guide. Checked on October 17, 2026.

Each limit comes from Bluesky's post format (the app.bsky and chat.bsky lexicons), Bluesky's open-source app or its server code, read on October 17, 2026. Where the app and the post format differ (links, alt text), the table shows both, because schedulers post through the format, not the app. The 299-character limit circulating from April 2025 was a joke.

  1. Bluesky on GitHub: app.bsky.feed.post lexiconRead Oct 2026Text: 300 graphemes, 3,000 bytes; up to 3 languages; up to 8 extra tags.
  2. Bluesky on GitHub: app.bsky.actor.profile lexiconRead Oct 2026Display name 64, description 256.
  3. Bluesky on GitHub: chat.bsky.convo.defs lexiconRead Oct 2026Messages up to 1,000 graphemes.
  4. Bluesky social-app on GitHub: Bluesky app constants (post, bio, alt text, DM limits)Read Oct 2026
  5. Bluesky social-app on GitHub: Link shortening in the composer (toShortUrl)Read Oct 2026
  6. Bluesky atproto on GitHub: Handle rules on Bluesky's serverRead Oct 20263 to 18 characters before the service domain.
  7. AT Protocol specs: HandleRead Oct 2026Up to 253 characters overall.
  8. Bluesky: New character limit now available!Apr 1, 2025An April Fools' post.
Something out of date? Tell us.

Frequently
Asked Questions

Robert Ligthart
Robert LigthartFounder of OmniSocials
Ask me a question

Last updated:

Robert Ligthart
Still have a question?Ask Robert, the founder
Ask