Skip to content
Shaflex
Back to the blog

Tutorial

Bluesky Character Limit: 300, and What Links and Emoji Cost

Bluesky allows 300 characters per post, but a link rarely costs its full length and an emoji costs 1. Here's exactly what counts, with examples.

7 min read

A Bluesky post can hold 300 characters, counted as graphemes, plus a hard cap of 3,000 bytes. In the Bluesky app, an emoji counts as 1 and a link counts as a shortened version of itself, so most posts fit more than people expect.

What counts toward the 300

A grapheme is what you'd point at and call one character. It's the unit Bluesky's post schema uses, so the count follows what you see, not how the text is stored.

Part of the postWhat it costs in the Bluesky app
A letter, digit, space or line break1
Any emoji, including skin tones, flags and families1
A Chinese, Japanese or Korean character1
A link that starts with https://Its short form: the domain plus up to 16 characters
A link typed without https://Every character as typed
A mentionThe full handle as typed: @alice.bsky.social costs 18
A hashtagEvery character, # included
Images, video, alt text, the link card, a quoted post0

Mentions catch people out. Bluesky handles are domain names, so @alice.bsky.social costs 18 and a custom-domain handle can cost more. Three mentions can use a fifth of a post.

Before the app saves your post, it rewrites every link in the text to a short form. The rule, from the app's open-source code:

  1. Drop the https://.
  2. Keep the domain, www. included.
  3. Keep the path, query and anchor if they're 15 characters or fewer together.
  4. Otherwise keep the first 13 characters of them and add "...".

The full address stays attached to the link, so it still opens the right page. The counter in the composer measures the short form too, which is why a long link barely moves it. Some real examples:

Link as you paste itLengthStored and counted asCost
https://shaflex.com19shaflex.com11
https://example.com/about25example.com/about17
https://github.com/bluesky-social/social-app44github.com/bluesky-soci...26
https://example.com/blog/notes-from-our-first-month51example.com/blog/notes-f...27
https://example.com/?utm_source=bluesky&utm_medium=social57example.com?utm_source=b...27
https://www.nytimes.com/2026/10/18/technology/bluesky-limits.html65www.nytimes.com/2026/10/18/t...31

So in the app, a link never costs more than its domain plus 16. Tracking parameters are free after the first 13 characters, and a long domain costs more than a long path.

One trap: the app only shortens links that start with http:// or https://. Type example.com/blog/notes-from-our-first-month without the prefix and it still becomes a link, but it counts all 43 characters. Paste the full address and you save 16.

The shortening happens in the Bluesky app, not on Bluesky's servers. Bluesky's servers check whatever text arrives against the 300-grapheme and 3,000-byte limits. So a tool that posts through the API, a scheduler included, gets the count that matches the text it sends:

  • If it shortens links the way the app does, a link costs the short form.
  • If it sends the full address, the full address counts, and readers see it in full.

Shaflex sends links in full, so in a Shaflex draft a link costs its full length on Bluesky. If you're tight on space, move the link into a reply under the post.

That's why answers to "does a link count on Bluesky" disagree: each one describes a different way of posting. The free Bluesky character counter shows both numbers for your draft: the app's count with short links, and the count with links in full.

The 3,000-byte cap

Bluesky's post schema also caps the text at 3,000 bytes, measured in UTF-8. Most text never gets near it:

  • English text is 1 byte per character, so 300 characters is 300 bytes.
  • Chinese, Japanese and Korean characters are 3 bytes each, so a full post is 900.
  • A simple emoji like πŸš€ is 4 bytes, and a flag like πŸ‡ΊπŸ‡¦ is 8.
  • A four-person family emoji is 25 bytes. 120 of them reach 3,000, well before 300 graphemes.

Unless your post is mostly long emoji sequences, the 300 is the limit you'll hit first.

Bluesky's 300 vs X's 280

Bluesky allows 20 more characters than X on paper. In practice the gap depends on what you write, because X weighs some characters double:

Part of the postX countsBluesky counts
A Latin letter or space11
An emoji21
A Chinese, Japanese or Korean character21
https://example.com/blog/notes-from-our-first-month2327 in the app
https://shaflex.com2311 in the app

A post in English with no links fits both at 280 or under. A post in Japanese fits 140 characters on X and 300 on Bluesky. Links can go either way: a long one costs more on Bluesky than on X, and a short one costs less. The guide to how each network counts characters covers all five networks side by side.

When you paste a link, the Bluesky app offers a card with the page's title, description and image. The card is stored apart from the text, so it doesn't count toward the 300.

Two details from Bluesky's post schema and app code:

  • One attachment per post. A post carries images, a video, a link card or a quoted post, and a quote can be combined with media. Images and a link card can't share a post, so the card is dropped when you add a photo.
  • The card stays if you delete the link text. In the app, removing the URL from your text doesn't remove the card; only its close button does. If you're out of room, delete the URL and let the card carry the link.

When 300 isn't enough

The 300 is part of the post schema that Bluesky's servers check, so no setting, app or subscription raises it. You have two options:

  1. Cut. Most drafts lose 30 characters by dropping filler words, a greeting or a second example.
  2. Write a thread. Each post in a Bluesky thread gets its own 300. Our guide to writing a thread that works on every network covers where to split and whether to number the parts, and the free thread maker splits long text at sentence breaks.

In Shaflex, Bluesky gets its own copy of your draft with its own limit, and Split automatically turns a long draft into a thread where sentences end. Here's how to schedule Bluesky posts step by step.

Sources

Checked on October 19, 2026.

Questions readers ask

What is the character limit on Bluesky?

300 characters per post, counted as graphemes, which are characters as you see them. There's also a cap of 3,000 bytes, which only matters for long runs of complex emoji. Both limits are in the AT Protocol's post schema.

Does a link count toward the character limit on Bluesky?

Yes, but in the Bluesky app it counts as a short form: the domain plus up to 13 characters of the path, then "...". A 51-character link to an article usually costs 27. Through a scheduler or the API, the link costs whatever length the tool sends. The link card under the post costs nothing.

Do emojis count as 2 characters on Bluesky?

No. Bluesky counts graphemes, so every emoji counts as 1, including skin tones, flags and joined emoji like a family. On X the same emoji count as 2.

Can you get more than 300 characters on Bluesky?

No. The 300-grapheme limit is part of the post schema that Bluesky's servers check, so no app or subscription raises it. For longer posts, write a thread: each post in it gets its own 300.

Do spaces and line breaks count on Bluesky?

Yes. Every space and line break is a grapheme and counts as 1. A blank line between two paragraphs costs 2.

Does alt text count toward Bluesky's character limit?

No. Alt text is stored with the image, not in the post text. The Bluesky app allows up to 2,000 characters of alt text per image.

More posts

All posts

Tutorial

How Each Social Network Counts Characters

A character isn't the same thing on every network. Here's how each of the five counts emoji, links, accents and mentions, with one post measured five ways.

9 min read

Tutorial

How to Schedule Bluesky Posts

Schedule Bluesky posts with Shaflex in three steps. Connect with an app password, write within 300 characters, and post to X, Threads and Mastodon too.

4 min read

Strategy

Bluesky vs Threads: Which Should Creators Post To?

Bluesky and Threads both pitch themselves as the alternative to X. Here's how they compare for creators on audience, features and reach, and which needs you.

3 min read

Write the next post once.

Shaflex fits it to Threads, X, Bluesky, Mastodon and LinkedIn, schedules it on your rhythm and brings the replies back to you.

Free plan, no card needed.