Write Once… Render Everywhere?

Nostr promises “write once, publish everywhere.” And at the protocol level, that’s mostly true. But in practice, how your content *renders* depends heavily on the client. Primal favors Markdown images but ignores HTML. Coracle supports HTML but doesn’t fully render Markdown image syntax. The result: the same post can look completely different depending on where it’s viewed. Continuum takes a different approach—supporting both formats and separating authorship from rendering.

Akamaister

25. April 2026April 25, 2026 · 4 Min. Lesezeit4 min read

Andrew G. Stanton - Friday, April 24, 2026


The Promise#

One of the most compelling ideas in Nostr is simple:

Write once. Publish everywhere.

No platform lock-in.
No walled gardens.
Your content, your identity, your distribution.

At the protocol level, this works.

You can publish a long-form article (kind:30023), and it shows up across multiple clients.

But then you start noticing something subtle.


The Reality#

The content shows up.

The rendering does not.

The same article can look:

And it often comes down to something as simple as an image.


A Simple Example#

Let’s say you embed an image like this:

![California Digital ID](https://is.gd/wNdvuS)

On Primal: ✅ Renders correctly ❌ HTML is ignored

On Coracle: ❌ Markdown image may not render ✅ HTML <img> works

So you try this instead:

<p align="center">
  <img src="https://is.gd/kZZOtf width="500">
</p>

Now:

On Coracle: ✅ Looks great On Primal: ❌ Raw HTML shows up as text

The Result#

You end up choosing:

Which raises an uncomfortable question:

Is this really “write once, publish everywhere”?


To Be Fair…#

Nostr itself isn’t the problem.

The protocol:

It does not define:

how that content should be rendered

That responsibility is left to clients.

--

And That’s the Gap#

Each client makes its own choices:

So while the data is portable…

The experience is not.


Why This Matters#

This isn’t just about images.

It affects:

An article that looks polished in one client can feel broken in another.

For writers, that matters.


The Workarounds (Today)#

Right now, you have a few options:

1. Target a specific client

Write for Primal or Coracle and accept tradeoffs elsewhere.

2. Use the lowest common denominator

Plain text + links.

Reliable—but limiting.

3. Duplicate formats

Include both Markdown and HTML.

Messy and not always worth it.


Continuum’s Approach#

Continuum takes a different path.

It doesn’t force a choice between Markdown or HTML.

It supports both.

You can:

But more importantly, it points toward something deeper.


Author Once, Render Intentionally#

Instead of:

write once → render everywhere (uncontrolled)

Continuum opens the door to:

write once → render intentionally per context

For example:

{{image: digital-id}}

could become:

For Primal

![California Digital ID](https://is.gd/W217cP)

For Coracle

<p align="center">
  <img src="https://is.gd/67mq3j width="500">
</p>

For fallback

Image: https://is.gd/W217cP

same content.

Different render strategies.


This Extends an Existing Idea#

Continuum already separates:

This is the next logical step:

authorship vs rendering


Why This Matters Long-Term#

If Nostr is going to support serious publishing:

Otherwise:

“write once, publish everywhere” becomes “write once, debug everywhere”


The Real Takeaway#

Nostr got the hard part right:

Now we’re discovering the next challenge:

rendering consistency


Closing Thought#

“Write once, publish everywhere” is still mostly true. But what we’re learning is:

Publishing is portable. Rendering is not.

Continuum doesn’t fight that reality—it embraces it.

“Author once. Render intentionally.”

#continuum#coracle#html#localfirst#markdown#nostr#primal#publishing#ux

Written by

Comments

No comments yet. Start the conversation.

Contents

14 sections

  1. The Promise
  2. The Reality
  3. A Simple Example
  4. The Result
  5. To Be Fair…
  6. And That’s the Gap
  7. Why This Matters
  8. The Workarounds (Today)
  9. Continuum’s Approach
  10. Author Once, Render Intentionally
  11. This Extends an Existing Idea
  12. Why This Matters Long-Term
  13. The Real Takeaway
  14. Closing Thought