Markdown to Bluesky Long-Form: 2026 Publishing Guide
Bluesky shipped long-form posts on May 28, 2026 — a direct counter to X Articles and a meaningful shift in the decentralized social space. The new format accepts rich text, supports headings, lists, and code blocks, and gives creators up to roughly 8,000 characters per post. But if you write in Markdown (Obsidian, VS Code, iA Writer, Zettlr), the path from your editor to a published Bluesky long-form post is not as smooth as it should be.
This guide walks through the actual workflow: writing in Markdown, converting it to a Bluesky-compatible rich text format, and pasting into the long-form composer. We test direct paste, copy-as-HTML workarounds, and a client-side converter pipeline — and show what survives each transition.
What Changed When Bluesky Launched Long-Form
Before May 28, Bluesky was a 300-character microblogging platform. Posts were short, link-heavy, and visually flat. Long-form was a third-party hack — users would screenshot Medium posts or paste raw URLs hoping for a card preview.
The long-form launch changed three things:
- Character limit raised to ~8,000 — enough for a full essay, technical write-up, or product analysis
- Rich text composer — supports bold, italic, headings, ordered and unordered lists, blockquotes, code blocks, and inline links
- Permanent URL per long-form post — each long-form gets its own canonical permalink, indexed by external crawlers, making it viable as a primary publishing surface
This is the first real competitor to X Articles in the federated space. Mastodon has had 4,000-character posts for years but no rich text rendering. Bluesky's combination of AT Protocol federation, rich text, and a permanent URL creates a new publishing surface that Markdown writers can target directly.
The Problem: Markdown Pastes Don't Survive the Transition
Let's test what happens when you write a typical technical post in Markdown and try to publish it to Bluesky:
# Why AT Protocol Beats Mastodon's Federation Model
## The Core Difference
Both protocols federate across independent servers, but
the data model diverges at the repository level. AT Protocol
stores every post as a signed record in a user's repository
— portable across providers.
## Migration Comparison
| Feature | Mastodon | AT Protocol |
|---------|----------|-------------|
| Account portability | Migration tool, days of downtime | Sign new key, instant |
| Post storage | Server-side DB | User repository |
| Federation discovery | Manual relay list | DHT-based |
| Identity | Local username | Handle + DID |
## Verdict
AT Protocol's repository model wins on portability.
The trade-off is a more complex client implementation.
```python
# Example: fetch a Bluesky post via AT Protocol
from atproto import Client
client = Client()
client.login('user.bsky.social', 'app-password')
post = client.get_post('at://...')
print(post.value.text)
```
Now paste this into Bluesky's long-form composer. What you get depends on where you paste from:
- From a Markdown editor (Obsidian, VS Code): Bold, italic, code blocks, and inline code survive. Tables flatten to plain text. Headers disappear or render as plain bold. Blockquotes lose their visual treatment. Nested lists collapse.
- From a browser preview: Better — the rendered HTML carries the structure, but Bluesky strips most block-level elements (tables, code fences, horizontal rules) on paste.
- From a Markdown-to-HTML converter without sanitization: Tables and code blocks make it through, but Bluesky's composer rejects unsupported tags (some ``, `` with inline styles), causing partial paste or a silent drop.
The result: a Markdown document that took you 20 minutes to write lands in Bluesky looking half-finished. Tables disappear. Headers vanish. Code blocks lose their language hints. The post reads as a wall of text.
The Fix: A Client-Side Markdown to Rich Text Pipeline
The reliable workflow is to convert Markdown to a Bluesky-compatible HTML subset, sanitize it against the platform's tag whitelist, and paste. md2rich.com does exactly this — 100% in the browser, with no upload step.
Here's the full pipeline:
- Write in Markdown — Obsidian, iA Writer, VS Code, Zettlr, or any plain text editor. The source stays version-controllable, portable, and copy-pasteable to other platforms.
- Paste into md2rich.com — the converter renders your Markdown to HTML and sanitizes against the target platform's tag whitelist. For Bluesky long-form, that means keeping
h2,h3,h4,p,strong,em,a,ul,ol,li,blockquote,pre,code, and stripping everything else. - Copy the rich text output — md2rich gives you a Copy button that places the sanitized HTML on your clipboard as both formatted text and HTML.
- Paste into Bluesky's long-form composer — every heading, list, table, and code block lands in the correct block. What you wrote is what readers see.
The whole pipeline takes 10-15 seconds per post. For a writer publishing one long-form post per day, that is roughly 5 minutes per week of overhead — a fair trade for a reliable format.
Walkthrough: A Real Bluesky Long-Form Post
Let's take the AT Protocol example above and run it through the pipeline.
Step 1 — Write in Markdown (your editor of choice):
# Why I'm Switching from X Articles to Bluesky Long-Form After 18 months of X Articles, I moved my weekly newsletter to Bluesky long-form on June 1, 2026. Here's the comparison. ## Reach X Articles reaches my existing 12,000 X followers. Bluesky long-form reaches ~3,200 followers. The number favors X, but engagement favors Bluesky: average read time on Bluesky: 4:12. On X: 1:48. ## Monetization X Articles pay nothing directly. Subscribers see ads. Bluesky long-form has no ads. I link to my paid Substack from the post footer. ## Verdict Different audiences, different goals. I publish technical analysis on Bluesky, breaking news on X.Step 2 — Open md2rich.com, paste the Markdown:
The live preview shows the rendered HTML on the right. You can see exactly what Bluesky will see before you paste.
Step 3 — Click Copy, switch to Bluesky, paste into the long-form composer:
The headings land as headings. The lists land as lists. The blockquotes land as blockquotes. The bold text lands bold. No formatting is lost. What you wrote in your Markdown editor is exactly what your readers see in their Bluesky feed.
Step 4 — Add a closing line, link to your other work, publish:
That's the entire workflow. For a post under 1,500 words, the conversion + paste takes under 20 seconds.
Markdown Features: What Survives, What Doesn't
Not every Markdown feature maps cleanly to Bluesky long-form. Here is the verified compatibility matrix as of June 2026:
Markdown Feature Direct Paste md2rich Pipeline Notes Headings (h1, h2, h3) ❌ ✅ Bluesky supports h2/h3/h4 natively; h1 treated as plain bold Bold, italic ✅ ✅ Both survive direct paste reliably Inline code ✅ ✅ Backtick syntax preserved Code blocks (fenced) ⚠️ Partial ✅ Direct paste may lose language hint and indentation Unordered lists ⚠️ Partial ✅ Nested lists collapse on direct paste Ordered lists ⚠️ Partial ✅ Numbering can reset on direct paste Blockquotes ❌ ✅ Direct paste flattens to plain paragraph Tables ❌ ✅ Tables are stripped entirely on direct paste Links ✅ ✅ Inline and reference-style both work Horizontal rules ❌ ✅ Rendered as visible separator Images ⚠️ URL only ⚠️ URL only Bluesky long-form doesn't embed images directly; URL displays as link For a long-form technical post, the md2rich pipeline preserves 9 out of 11 features reliably. Direct paste preserves 3. The gap is the difference between a readable post and a wall of text.
Bluesky Long-Form vs X Articles: When to Publish Where
Bluesky long-form is not a replacement for X Articles — they serve different audiences and have different strengths. Here is the honest comparison as of June 2026:
Dimension Bluesky Long-Form X Articles Audience Tech-savvy, privacy-aware, federated social users Mainstream news, breaking-event followers Character limit ~8,000 chars ~25,000 chars (effectively unlimited for most posts) Markdown friendly Via client-side converter (md2rich) Via client-side converter (md2rich) Federation AT Protocol — portable identity, portable posts Centralized — locked to X Subscription model None native (link out to Substack/Beehiiv) X Premium subscriber-only Discovery Algorithmic feeds, no paid promotion Algorithmic feeds, paid promotion available Post permanence Permanent URL, indexed by web crawlers Permanent URL, indexed by web crawlers Cost to publish Free Requires X Premium ($8-$16/month) The pragmatic answer: publish both, write once. md2rich supports Bluesky long-form and X Articles as separate output targets — write the Markdown once, convert to each platform's accepted rich text format, and paste. The conversion logic is identical; the tag whitelist is what differs.
FAQ
Does Bluesky support pasting Markdown directly?
Partially. Bluesky's long-form composer accepts basic Markdown patterns like bold, italic, links, and inline code on paste, but tables, headers, nested lists, and blockquotes get stripped or flattened. The behavior varies depending on whether you paste into the long-form draft editor or the regular 300-character post box. The platform launched long-form on May 28, 2026 and the paste handling is still maturing, so a client-side converter gives you more reliable output than relying on direct paste.
What is the character limit for Bluesky long-form posts?
Bluesky long-form posts support up to approximately 8,000 characters of rich text content, which is enough for a full article or essay. The exact limit can vary as the feature evolves, but it is far above the regular 300-character post limit. For long technical content, you can break a single article into multiple long-form posts if you need to.
Is md2rich safe to use with unpublished Bluesky drafts?
Yes. md2rich runs 100% client-side in your browser. Your Markdown never leaves your device. This is especially important for Bluesky creators who draft announcements, opinion pieces, or unreleased product commentary — the conversion happens entirely in the browser, with no third-party server, no upload, and no analytics. Close the tab and the content is gone.
Does md2rich preserve Bluesky-specific features like facets and mentions?
md2rich preserves standard Markdown: headings, bold, italic, links, ordered and unordered lists, code blocks, blockquotes, horizontal rules, and tables. Bluesky-specific features like @mention facets, custom link cards, and embed blocks are platform extensions that standard Markdown libraries do not render. For standard long-form prose and technical writing, md2rich covers the formatting that actually matters.
Can I publish the same article to both Bluesky and X Articles?
Yes. md2rich supports both Bluesky long-form and X Articles as output targets. Write the Markdown once, convert to the appropriate rich text format for each platform, and paste into each composer. The two platforms have different rendering quirks — X Articles whitelists a strict subset of tags while Bluesky's long-form composer is more permissive — but the source Markdown stays identical.
Conclusion
Bluesky's long-form launch on May 28, 2026 is the first real opening in the federated social space for long-form writers. The platform accepts rich text, supports headings and lists, and gives you a permanent URL per post. For Markdown writers, the only gap is the conversion step — paste from your Markdown editor and you lose half your formatting.
The reliable fix is a 10-second client-side conversion:
- Write in Markdown — your editor of choice (Obsidian, VS Code, iA Writer, Zettlr)
- Convert with md2rich — paste, copy, done. No account, no upload, no tracking.
- Paste into Bluesky long-form — every heading, list, table, and code block lands intact
For writers who publish across multiple platforms, the same source Markdown converts to Bluesky long-form, X Articles, Notion pages, Medium drafts, and LinkedIn posts — one source, many destinations. The Markdown file stays as the canonical version; the platform-specific rich text is a derivative.
Try it with the AT Protocol example above. Write it in your Markdown editor, paste through md2rich.com, and publish to Bluesky. The conversion takes 10 seconds; the time savings compound across every post you write.
Try md2rich Free
Paste Markdown → copy rich text → publish to Bluesky long-form, X Articles, LinkedIn, or Medium. md2rich.com — zero tracking, zero upload, free.