Birta
← Back to blog

· Illya Flier

How to share Markdown online without broken formatting

Compare six ways to share Markdown, then turn it into a previewed, updateable web page with the same AI agent—without downloading and re-uploading files.

How to share Markdown online without broken formatting

If the recipient only needs to read the result, do not make them open raw Markdown. Send a rendered PDF or document for a fixed handoff, use a shared Markdown workspace when you need to edit together, or publish a web page when you need one public link that can be updated later.

The important choice is not “which Markdown app is best?” It is what the next person needs to do.

MethodBest when the recipient needs to…What they receiveMain check before sharing
Raw .md filereview or edit the sourcea plain-text filewhether their chosen viewer supports your Markdown dialect
PDFread or approve one fixed snapshota rendered filepage breaks, selectable text, links, and image quality
Ordinary documentreview in a familiar document workflowa converted documentwhat survived conversion and which access settings apply
Collaborative Markdown workspaceco-edit the Markdowna note link with view/edit permissionsaccounts, permissions, exports, and link policy
Temporary Markdown viewerread a quick, low-stakes renderinga service-generated linkexpiry, privacy, exports, and whether edits change the link
Published web pagerevisit one polished public resulta browser linkconversion quality, public visibility, and update ownership

That table is deliberately about jobs, not brands. A tool can be excellent at real-time editing and still be the wrong home for a public client deliverable. A PDF can be ideal evidence of what was approved and frustrating for a document that changes every week.

Why Markdown changes when it moves

CommonMark defines Markdown as a plain-text format for structured documents. The punctuation is source code for a renderer: ## means a heading only after software interprets it, pipes form a table only in a dialect that supports tables, and a fenced block becomes highlighted code only when the destination recognizes its language label.

This compact fixture already contains several different assumptions:

## Release plan

| Owner | Status |
| --- | --- |
| Ana | Ready |

```js
console.log("ship")
```

The diagram is in the appendix.[^1]

[^1]: Render the Mermaid source before publication.

The heading and fenced code have a CommonMark baseline. The table belongs to an extension formalized by the GitHub Flavored Markdown specification. GitHub also documents footnotes as a platform feature and notes that they do not work on every GitHub surface in its formatting guide.

That is why “it rendered correctly where I wrote it” is useful evidence about that editor, not proof about the next destination. If a destination treats the input as plain text, the punctuation remains visible. If it uses another parser, the basic structure may survive while a table, footnote, task list, or diagram does not.

Choose the sharing method by the next action

Send the raw file for source review

A .md file is the honest handoff when the source itself is the deliverable: documentation in a repository, a prompt another agent will continue, or a draft someone will edit in a Markdown-aware tool. Keep referenced images with it or replace relative paths with URLs the recipient can reach.

Do not choose this just because it is the format you already have. A person who only needs to approve the argument should not have to select a parser first.

Export a PDF for a fixed snapshot

PDF is useful when the question is “is this exact version approved?” It freezes layout well enough to review as a page and separates the approved snapshot from later edits. The cost is equally clear: it is no longer the convenient source, and every meaningful update produces another file.

Check page breaks, long code lines, links, and image resolution in the exported file. Do not assume a clean editor preview means a clean PDF.

Use an ordinary document for familiar review

Convert to a document when comments, suggested edits, or an established review process matter more than keeping Markdown as the source. Treat the converted document as a new artifact: inspect the table, code, lists, links, and footnotes, then set its access rules in that document service.

No universal “paste Markdown into a document” promise is safe. The result can depend on the destination, the surface inside it, and whether you pasted source, rich text, or rendered HTML.

Use a Markdown workspace to edit together

A collaborative Markdown workspace keeps the source and its rendered view near each other. For example, HackMD's official sharing documentation describes a copyable note URL plus separate read and edit permissions for owners, signed-in users, or everyone.

That makes the category a good fit for co-authoring. It also makes permissions part of the deliverable. “Anyone with the link,” “signed-in users,” and a note deliberately published to the web are different states. HackMD's publishing guide says publication makes a note world-readable and documents how its permalinks behave. Check the current rules of whichever workspace you choose rather than transferring those details to every editor.

Use a temporary viewer for a quick read

A paste-and-share viewer can be the shortest path from source to a rendered link. It is reasonable for low-stakes material when you have checked what the service stores, who can discover the link, whether it expires, and whether you can remove or export the content.

Those are product policies, not Markdown properties. If the answer must still exist next month, or the content is sensitive, “the link works now” is not enough evidence.

Publish a web page for a result that will keep changing

A public page is a good fit when the recipient should open a normal browser link, the presentation matters, and later edits should appear at the same address. It takes one extra decision up front: the Markdown must be converted into an actual web page.

Birta makes the publish loop available to a connected agent, but it does not serve a raw .md file as the page. The agent creates valid static HTML with a root index.html, shows its draft preview, and publishes that version after you approve it. The generic file and folder rules live in the HTML hosting guide, and if the Markdown is only one item in a folder of drafts, images, and documents, the guide to publishing a whole folder covers what survives the trip and what does not.

One situation changes the decision rather than the mechanics. If the document's real home is a workspace you keep editing, publishing a converted copy means the copy stops matching the source the first time you touch it. Where that leaves a Notion page is a different question with a different answer.

Publish the Markdown through the same agent

The connected-agent flow removes the download, conversion-site, and upload handoffs. It does not remove review.

  1. Step 1InspectIdentify the dialect, assets, tables, code, footnotes, raw HTML, and diagrams.
  2. Step 2ConvertCreate accessible static HTML and write the public result as index.html.
  3. Step 3PreviewOpen the draft link and check the actual rendered page before it is live.
  4. Step 4PublishApprove the draft explicitly, then keep the project address for later edits.

This prompt gives the agent the important boundaries without prescribing a particular visual design:

Use Birta to turn the Markdown below into a public web page.

Treat the Markdown as source. Do not publish a raw .md file. Create a valid,
responsive static page with index.html and any necessary local assets.

Preserve the document hierarchy, tables, fenced code, links, images, and
footnotes. For every unsupported or ambiguous feature, tell me what fallback
you used. For Mermaid, either render an accessible SVG or include a deliberate
Mermaid runtime and a readable fallback; never silently drop the diagram.

Create or select the Birta project, write the draft files, and return its preview
link. Stop there so I can review it. Publish that draft only after I approve it.

[Paste the Markdown here]

If you have not connected an agent yet, the MCP explainer covers what the connection does. The operational rule here is simpler: draft first, inspect the link, then publish.

Check the parts most likely to break

Use a small fixture containing the features your real document depends on. Run that fixture through the actual method and open the result the way the recipient will. This is a practical compatibility check, not a claim that one result describes every application or future version.

  • Headings and lists: confirm that the hierarchy remains visible and that nested items did not flatten.
  • Tables: check every column at narrow widths. Tables are a GFM extension, and long cells may need a responsive wrapper or a different layout.
  • Fenced code: confirm that indentation and characters survived. Syntax coloring is optional; readable, copyable code is not.
  • Links: open them. Relative links and local image paths that worked beside the source file may have no public target.
  • Images: verify the recipient can fetch them without your local disk, session, or private workspace access. Keep useful alternative text.
  • Footnotes: follow the reference and return link in the rendered result. Do not infer support merely because one editor displayed it.
  • Raw HTML: decide whether to preserve, sanitize, or replace it. Destinations commonly make their own security decision.
  • Mermaid: look for a diagram, not only a code fence. GitHub renders a mermaid fence on supported surfaces according to its diagram documentation, but that behavior does not travel with the text.

For a standalone page, Mermaid's own usage documentation shows that the page must load and initialize the renderer. Pre-rendering a diagram to accessible SVG avoids that runtime dependency; keeping visible source or a text summary provides a fallback. If the page does run Mermaid in the browser, keep its security model deliberate, because Mermaid documents strict as the default security level.

Choose for the next edit, not only today's send

The fastest handoff today can create the most work tomorrow. Before choosing, ask three questions:

  1. Will the recipient edit the source, comment on a snapshot, or only read it?
  2. Should the same address show the next approved version?
  3. Is the result public, permissioned inside a workspace, or private enough that it should not be uploaded to a sharing service at all?

Choose a file or PDF when each version should remain a separate artifact. Choose a collaborative workspace when permissions and joint editing are the main job. Choose a published project when the deliverable is a public page and the same link should keep working after corrections.

If the next question is whether that public page received a visit, use the guide to interpreting a shared link's signals before treating a click or visitor count as proof that someone read it.

On Birta, later publications update the project behind its existing address. The current rollback list contains the ten newest published versions, with an older active version retained in the list if necessary. That is a recovery window, not unlimited document history. For the practical edit-and-restore loop, see how to change a live page without regenerating it.

If the address itself is part of the deliverable, the same project can also use a verified custom domain while its standard address remains available. The custom-domain guide owns the DNS and verification steps. Neither a stable address nor a custom domain fixes a bad conversion, which is why the preview check comes first.

Turn the approved Markdown into a page

Ask your current agent to convert the source to index.html, show the Birta draft preview, and publish only the version you approved.

Connect your agent