Bluesky 字数限制与发帖技巧
Bluesky is a social network built on the AT Protocol, a decentralized framework. Launched to the public in February 2024, it originated from a project by Twitter co-founder Jack Dorsey. The post character limit is 300 characters, but the way Bluesky counts those "300 characters" is fundamentally different from other social platforms. This article dives into the AT Protocol's technical specifications and covers effective posting strategies.
Grapheme Cluster Counting - Bluesky's Unique Character Calculation
Bluesky counts characters using "grapheme clusters," the smallest unit of text that a human perceives as a single character, as defined by Unicode Standard Annex #29 (UAX #29). This approach differs fundamentally from how X and Threads count characters. For a deeper understanding of how text encoding affects character counting, consider exploring books on Unicode and text processing.
Consider the skin-tone emoji "👋🏽." Internally, it consists of two Unicode code points: U+1F44B (waving hand) and U+1F3FD (skin tone modifier). X counts this as 2 characters, but Bluesky counts it as 1 grapheme cluster. Similarly, the flag emoji "🇯🇵" is composed of two Regional Indicator code points (U+1F1EF + U+1F1F5), yet Bluesky counts it as a single character.
This becomes even more significant with complex emoji. The family emoji "👨👩👧👦" consists of 7 code points (4 emoji + 3 ZWJ connectors), but Bluesky counts it as just 1 character. X counts the same emoji as 7–11 characters, meaning emoji-heavy posts can fit substantially more information on Bluesky.
Bluesky Character Limits
| Element | Character Limit | Counting Method | Notes |
|---|---|---|---|
| Post | 300 characters | Grapheme clusters | Link card URLs don't count |
| Display Name | 64 characters | Grapheme clusters | Shown on profile |
| Bio | 256 characters | Grapheme clusters | Profile description |
| Reply | 300 characters | Grapheme clusters | Same as posts |
| Handle | 253 characters | Byte count | Follows DNS domain name constraints |
| List Name | 64 characters | Grapheme clusters | Custom feeds and lists |
| List Description | 300 characters | Grapheme clusters | List description text |
| ALT Text | 10,000 characters | Grapheme clusters | For accessibility |
Note that the handle is the only field counted by byte length. This is because handles function as DNS domain names and must comply with the RFC 1035 domain name length limit (253 bytes). The generous 10,000-character ALT text limit reflects a strong commitment to accessibility, allowing detailed image descriptions for visually impaired users.
Why 300 Characters? - AT Protocol Design Philosophy
Bluesky's 300-character limit reflects both technical constraints and user experience considerations. The AT Protocol specification imposes a size limit on individual records (posts). In a decentralized network, every server (PDS: Personal Data Server) synchronizes data, so keeping per-post data size small directly reduces network-wide load.
From a user experience perspective, the limit is designed for seamless migration from X's 280-character limit. The extra 20 characters address the "I wish I could write just a bit more" need while maintaining the brevity that defines short-form social media.
An interesting technical detail: the AT Protocol itself delegates text length limits to the application layer. This means another application built on AT Protocol could set a 500 or 1,000-character limit. The 300-character cap is a Bluesky application design decision, not a protocol constraint. A future change to this limit remains a possibility.
Facets - Bluesky's Rich Text Processing and Its Impact on Character Count
Bluesky posts use a feature called "Facets" for rich text processing. Facets attach metadata such as links, mentions (@), and hashtags to post text, and they directly affect character counting.
For links, writing a URL in the post body counts those characters against your limit. However, attaching a link card (external site preview) means the URL doesn't count toward the character limit at all. For example, "https://example.com/very-long-path/to/article" — a 50-character URL — consumes 50 characters in the body text but 0 characters as a link card. Understanding this distinction can dramatically change how many characters you have available for actual content.
Mentions (@username) count only the displayed text portion. For instance, "@alice.bsky.social" consumes 19 characters. Mentioning users with long handles can eat into your character budget significantly.
5 Tips for Effective 300-Character Posts
- Lead with your conclusion. The first 2–3 lines are critical. Bluesky's timeline shows only the beginning of a post, with the rest behind a "Show more" expansion, so place your key message up front.
- Cut unnecessary modifiers. Removing words like "very," "really," and "basically" saves 5–10 characters each. In longer phrases, replacing "is able to" with "can" saves 7 characters.
- Use line breaks for readability. Since mobile viewing dominates, adding blank lines every 3–4 lines improves scannability. Note that line breaks count as 1 character each, so don't overdo it.
- Use link cards instead of inline URLs. Attaching a link card means the URL consumes zero characters. A 50+ character URL removed from the body text frees up space for actual content.
- Check your character count with Character Counter before posting. Grapheme cluster counting is difficult to calculate manually, so a tool check gives you confidence.
Common Posting Mistakes and How to Avoid Them
Here are pitfalls Bluesky users frequently fall into, along with their causes and solutions.
- Getting complacent about the extra 20 characters over X and skipping the editing pass. Users accustomed to X's 280 characters tend to become wordy with the extra buffer. Even if your post fits within 300 characters, review each sentence and ask "Is this really necessary?"
- Overusing hashtags. Bluesky supports hashtags, but its trending and hashtag search optimization features are still developing. Each tag costs 5–15 characters including the "#" symbol — three tags can consume 15–45 characters. Focus on content quality to get picked up by custom feeds rather than spending characters on tags.
- Copy-pasting posts from other platforms without adapting. Text optimized for X's 280 characters feels incomplete on Bluesky, while Threads' 500-character posts need heavy trimming. Additionally, differences in grapheme cluster counting mean an X post at exactly 280 characters may register as a different count on Bluesky. Tailor your message to each platform.
- Writing URLs directly in the post body. As explained above, link cards make URLs cost zero characters. Writing "More details here → https://..." wastes characters. Attach a link card instead and use the body text for a content summary.
Pro Tips
Practical techniques for getting the most out of Bluesky. For broader social media strategies, consider exploring books on social media strategy.
- Leverage custom feeds. Bluesky's standout feature is user-selectable algorithms. Custom feeds filter posts by keywords, language, interaction count, and other criteria. Learn which feeds surface your content and tailor your posts to match those themes for greater reach. For example, if you want to appear in a Japanese tech feed, intentionally include technical terms in your Japanese posts.
- Set a custom domain as your handle. Domain verification lets you use your own website domain as your handle (e.g., example.com). You can set this up by either adding an authentication token to your DNS TXT record or placing your DID in a .well-known/atproto-did file on your domain. This boosts credibility, strengthens personal branding, and helps prevent impersonation.
- Use threads for long-form content. When 300 characters isn't enough, chain replies into a thread. Place a compelling hook or conclusion in the first post and develop the details in subsequent ones. Each post in the thread has its own 300-character limit, so structure each one to stand on its own.
- Leverage ALT text for additional information. ALT text supports up to 10,000 characters. Beyond accessibility, you can use ALT text to provide supplementary details or extended explanations about images, adding information without consuming your 300-character post limit.
Comparison with Other Platforms - Mind the Counting Differences
| Platform | Character Limit | Counting Method | URL Handling |
|---|---|---|---|
| Bluesky | 300 characters | Grapheme clusters | Link cards: 0 characters |
| X (Twitter) | 280 (Premium: 25,000) | NFC-normalized code points | URLs: fixed 23 chars (t.co shortening) |
| Threads | 500 characters | Unicode code points | URLs count toward limit |
| Mastodon | 500 characters (varies by server) | Server implementation dependent | URLs: fixed 23 chars |
A simple character count comparison suggests Bluesky's 300 is only 20 more than X's 280. However, when you factor in the grapheme cluster counting advantage for emoji and combining characters, plus the fact that link card URLs don't count, the effective information capacity gap is considerably larger. See our SNS character limit comparison for more details.
Conclusion
Bluesky's 300-character limit balances the AT Protocol's decentralized architecture with short-form social media usability. By understanding its technical features — grapheme cluster counting for intuitive character calculation, link cards that don't consume characters, and Facets for rich text processing — you can maximize the value of every character. Combine these with Bluesky-specific features like custom feeds and domain handles to craft concise, engaging posts. Check your character count with Character Counter before posting to avoid exceeding the limit.