howtodistribute
← Back to the index

How Excalidraw got its users

COPYABLEViral productindieb2cno ads
Visit excalidraw.com

An instantly recognizable visual style. Every diagram dropped into documentation is a visual signature.

Confirmed. The team said it publicly, or the signals leave no room for doubt.

Can you run this?
COPYABLE

You could start this on Monday. No budget, no audience, no permission needed.

Your time
12 months
Your money
Nothing
First signal
3 months
Upside
  • An acquisition cost that trends toward zero
  • Growth that survives you cutting the budget
Price of entry
  • A moment where the user has a selfish reason to share
  • Zero friction for the recipient
  • A product that is multiplayer by nature

Viral product in 2026

The best channel when it exists. But it is decided in product design, not in marketing.

Everything on this channel →

The play

5 steps, in the order they ran them.

  1. 1

    Make the exported file recognisable without a logo, then put no logo on it. Excalidraw's export dialog offers PNG, SVG, copy to clipboard, dark mode and 1x/2x/3x scale, and there is no watermark toggle anywhere: the wobbly hand-drawn stroke and the handwriting font do that job for free. Pick one rendering decision that is yours (a stroke, a palette, a typeface, a chrome around a screenshot), apply it to every free export, and never ship a clean-looking generic mode as the default.

    done whenDrop your exported file into a chat next to three competitors' outputs with the filenames stripped. If someone who has never used your product cannot point at yours, you have no signature and the export is doing no work for you.

  2. 2

    Ship a share link that lands the recipient inside your editor, not in a viewer. Excalidraw's share dialog has one button, Export to Link, which returns https://excalidraw.com/#json=<id>,<key>. Opening it loads the drawing on excalidraw.com with the whole toolbar live, no signup, no read-only banner. The live version, #room=<id>, adds a QR code and hands the joiner an auto-generated display name (mine was Swift Herring) so nobody has to type an email to participate.

    done whenOpen your own share link in a private window with no session. Count the clicks before the recipient can change something. Anything above zero means you built a viewer, and viewers do not convert readers into users.

  3. 3

    Write your source data inside the exported file so the image itself is a way back in. Excalidraw's export dialog has an Embed scene toggle: 'Scene data will be saved into the exported PNG/SVG file so that the scene can be restored from it.' The colleague who received a flat picture in a doc can drag that same picture onto excalidraw.com and start editing. Your recipient never needs to ask the sender for the original.

    done whenHand your exported file to someone outside your team and ask them to change one thing in it. If they have to come back and ask you for a link or an account, the file is a dead end instead of an entry point.

  4. 4

    Publish the file format and the editor itself so other people's products carry you. .excalidraw is plain JSON, and @excalidraw/excalidraw is an npm React component you drop into any app, which is how the editor ended up inside Obsidian, a VS Code extension and third-party tools. Document your format, put the renderer on npm under a permissive licence, and every integration becomes a surface you did not have to build or pay for.

    done whenSearch GitHub and npm for your file extension and your package name. If nobody outside your own repos has written code that reads, renders or writes your format, this loop does not exist yet, whatever your docs claim.

  5. 5

    Give people a one-paste ramp from the format they already have, and a public directory for what they make. The toolbar has Mermaid to Excalidraw, which turns a mermaid block that developers already keep in their READMEs into an editable scene. The library panel links to libraries.excalidraw.com, a public directory of user-submitted shape packs, each with an 'Add to Excalidraw' button and a Download button, submitted through GitHub and MIT licensed.

    done whenName out loud the file your target user already has open before they meet you. If your first screen is an empty canvas with no paste box and no import for that file, you are asking them to redo work, and most will not.

The product itself

read from excalidraw.com, live

Excalidraw

1 public pages

Run this against your own product

In your chat

Carries the play above, and is written to tell you no when this channel is out of reach for you.

In your editor

The same twelve channels as an agent skill. It reads your repository and eliminates what you cannot run. Open source, MIT.

curl -o ~/.claude/skills/howtodistribute/SKILL.md https://howtodistribute.com/skill.md

Massive developer adoption

They ran the same play

Want this verdict on your product?

Describe it. You get back the channel I would run in your place, the 30-day plan, and the number at which you stop.