Bluesky Character Counter
The Bluesky character counter is a free live tool that shows exactly how many characters are left before you hit the platform’s 300-grapheme post limit. Paste or type your draft, and the counter updates in real time so you can tighten copy, rescue overlong threads, and ship polished posts without the “Post is too long” error that breaks your flow. It also covers the other length caps you will run into on Bluesky: the 64-character display name, the handle, and the profile bio. Whether you are a creator crossposting from X, a brand moving off legacy networks, or a Bluesky native tuning a thread hook, this counter gives you the precise feedback the native composer does not.
Bluesky counts graphemes, not raw bytes or JavaScript .length values. That matters because a single emoji, a flag, or an accented character can look like one symbol but take several underlying code units. Our counter mirrors the Bluesky server’s counting logic so the number you see here matches the number the network will enforce when you tap post.
Bluesky character limits by surface
Bluesky (the ATProtocol app at bsky.app) enforces different length caps for different fields. Hitting any of them will block your post or profile update, so it helps to know each one before you write.
Posts: 300 graphemes
- Hard cap: 300 graphemes per post. This is the headline limit most people mean when they say “Bluesky character limit.”
- Byte ceiling: There is also a 3,000-byte ceiling, but in practice the grapheme count is what you run into first for normal Latin-script posts.
- Links: URLs count toward the 300, unlike X where t.co shortening used to mask length. Keep links short or move them to a reply.
- Mentions and hashtags: Every character in
@handle.bsky.socialand#tagcounts, so long handles eat your budget fast.
Display name: 64 graphemes
- Your display name is the bold name that appears above your handle. Bluesky allows up to 64 graphemes.
- Emoji, verification marks (like a checkmark emoji) and separators each count as one or more graphemes.
- This is plenty for “First Last” plus a short tagline or role, but tight for long brand slogans.
Handle
- Bluesky handles follow DNS rules. The default form is
yourname.bsky.socialwith a practical handle prefix limit of around 18 characters before the domain. - If you bring a custom domain (for example
you.com), total handle length can be longer, but each label is capped at 63 characters per standard DNS rules. - Handles are case-insensitive and cannot contain spaces, emoji, or special characters beyond hyphens and dots.
Bio (profile description): 256 graphemes
- Your profile description (bio) is capped at 256 graphemes.
- Line breaks, emoji, and link text all count. Front-load the value proposition in the first line since previews truncate.
Labels, alt text and other fields
- Image alt text: up to 2,000 graphemes. Use it — Bluesky’s audience rewards accessible posts.
- Feed and list names: short grapheme caps similar to display name; keep them concise.
- Reply and quote posts: same 300-grapheme limit as standalone posts.
Why graphemes differ from plain characters
A grapheme is a single user-perceived character. A plain character count (what String.length returns in JavaScript) counts UTF-16 code units, which can over- or under-count what a human sees. Bluesky standardises on graphemes so the count is intuitive: one emoji equals one “character” even when it is made of multiple underlying code points.
- Emoji: A face emoji is one grapheme but two UTF-16 code units. Naive counters will overcount it.
- Flag emoji: Country flags combine two regional indicator symbols. One flag equals one grapheme but four code units.
- Skin-tone and ZWJ sequences: Family emoji or professional emoji with skin tones can be five or more code points but still count as one grapheme.
- Combining marks: Accented letters like “é” can be a single precomposed code point or a base letter plus a combining accent. Graphemes normalise both forms to one.
- Scripts like Devanagari, Thai and Tamil: Multiple code points combine into one visible cluster. Graphemes count the cluster, not the code points.
If you are migrating drafts from X (280 graphemes), Threads (500 characters) or Mastodon (500 characters), do not rely on those counters for Bluesky. Use this tool so your emoji-rich posts do not silently overflow.
How to use the Bluesky character counter
- Paste your draft into the post field. The live counter updates on every keystroke and shows remaining graphemes.
- Watch the colour state. Green means you are safe, amber warns you are within 20 characters of the limit, and red means you are over.
- Check your display name in the 64-grapheme field if you are rebranding or refreshing your profile.
- Test your handle to confirm it fits DNS rules before you register.
- Refine your bio so the first line works as a preview and the full 256 graphemes tell your story.
- Copy the polished text and paste it into Bluesky, or schedule it with Postiz.
Use cases for creators and brands
Writing thread hooks that fit in one post
Bluesky’s 300-grapheme limit sits between X’s 280 and Threads’ 500, so crossposted hooks often need a rewrite. Use the counter to compress your lead into a single post that stands alone, then continue the idea in a reply chain.
Crossposting from X and Threads
A 280-character X post usually fits on Bluesky, but emoji-heavy or accented drafts can tip over 300 graphemes because Bluesky counts differently. Run every crosspost through the counter to catch silent overflow.
Optimising bios and display names
A tight 64-grapheme display name and a 256-grapheme bio are prime real estate for converting profile visitors into followers. Use the counter to fit a role, a value prop, and a call to action without truncation.
Creator intros and “start here” posts
Pinned intro posts need to pack identity, niche, and a link into 300 graphemes. The counter helps you trim filler so the link and the hook both survive.
Labels, alt text and accessibility
Alt text has a generous 2,000-grapheme cap — but long alt descriptions still need editing. Use the counter to keep them descriptive but scannable.
Best practices for Bluesky copy
- Front-load the hook. The first 100 graphemes are what most people see in feed previews before tapping “Show more” on long replies.
- Budget for links. A typical URL eats 20 to 40 graphemes. If you must include two links, shorten your prose or move one to a reply.
- Watch emoji inflation. Each emoji is one grapheme but can feel heavier than a letter. Three emoji is usually the ceiling for professional tone.
- Write replies as standalone posts. Each reply in a thread has its own 300-grapheme limit; do not let a single idea sprawl across two replies when one tight post will do.
- Match handle and display name energy. A polished display name with a messy handle (or vice versa) undermines trust.
- Test on mobile. The Bluesky mobile app truncates bios and long posts differently from the web. Preview before you publish.
- Schedule for your audience’s timezone. Character economy only matters if people see the post — post when your followers are active.
Frequently asked questions
What is the Bluesky post character limit?
300 graphemes. A grapheme is one user-visible character, so one emoji equals one grapheme even though it may be made of several underlying code points.
Does Bluesky count URLs toward the limit?
Yes. The full URL text counts toward your 300 graphemes. There is no automatic shortener.
How long can my Bluesky display name be?
Up to 64 graphemes. Keep it short enough that it does not truncate on mobile feed rows.
How long can my Bluesky bio be?
256 graphemes. Use the first line as a hook because previews cut off quickly.
Why does my counter elsewhere show a different number?
Most generic character counters count UTF-16 code units, not graphemes. Emoji, flags, and accented characters produce different numbers. This counter matches Bluesky’s server-side grapheme counting.
Can I schedule Bluesky posts?
Yes. Postiz supports native Bluesky scheduling, threads, analytics, and crossposting from a single composer, so you can write once and publish to Bluesky alongside your other networks.
Ship better Bluesky posts with Postiz
Counting characters is step one. Step two is getting the post out at the right time, to the right audience, on every network you care about. Postiz is an all-in-one social media scheduler that supports Bluesky, X, Threads, Mastodon, LinkedIn, Instagram, TikTok, YouTube, Facebook, and more. Write your Bluesky post, crosspost to the rest with per-network edits, schedule it for peak engagement, and track performance from one dashboard. Start with Postiz and turn your 300-grapheme drafts into a consistent publishing habit.
Do you want to grow your social media faster?

Do You Want to Grow Your Social Media Faster?
Thousands of creators and businesses use Postiz to 10x their social media reach. Stop spending hours — automate and grow.
Ready to get started?
Grow your social media presence with Postiz.
Schedule, analyze, and engage with your audience.
Open-source social media scheduling tool