howtodistribute
← Back to the index

How ray.so got its users

COPYABLEViral productstartupb2bno ads
Visit ray.so

The generated image gets posted publicly in a recognizable style. The free tool is the entry point to the paid product.

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
3 months
Your money
Nothing
First signal
4 weeks
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 container the signature instead of a badge. ray.so stamps nothing on the exported image: no wordmark, no logo, no 'made with' footer. What people recognize in a feed is the frame itself, the padded gradient background around a rounded window with a title bar. Fix two or three constants of your output frame (padding ratio, corner radius, background treatment) and keep them identical across every theme, so the shape survives cropping and recompression.

    done whenCrop your logo out of one of your own outputs and show it to five people in your niche. If they can still name the tool that made it, the frame is carrying the attribution. If they cannot, you are relying on a badge users will switch off.

  2. 2

    Encode the whole document in the URL hash and put Copy URL inside the export menu. ray.so base64 encodes the code into the hash next to theme, padding, background, dark mode, title, subtitle, line numbers and highlighted lines, so a pasted link rebuilds the exact editor state with no database and no account. The recipient does not get a read-only preview, they get the tool with someone else's content in it, one keystroke from exporting their own version.

    done whenOpen your own share link in a private window. If you hit a signup wall, a static preview, or an expired record, the link is a dead end. It should open the working tool with the content already in it and editable.

  3. 3

    Give export several exits, each shaped for where the output is going. ray.so's button opens a menu: Save PNG (Cmd S), Save SVG (Cmd Shift S), Copy Image (Cmd C), Copy URL (Cmd Shift C), plus a pixel ratio submenu, and the copied link goes through a shortener before it reaches the clipboard. Copy Image is the one that feeds the loop, because the user never touches a file or a Downloads folder, they paste straight into the compose box.

    done whenCount the actions between 'output finished' and 'pasted into a post'. If the path goes through the filesystem, add a clipboard export and count again. Two actions or fewer means the post actually happens.

  4. 4

    Ship named skins for the companies your users already work for. Nineteen of ray.so's thirty three themes are partner themes (Vercel, Supabase, Stripe, Cloudflare, OpenAI, Tailwind, Clerk, Resend, Prisma, AWS, Auth0 and more), and each is a separate frame component rather than a palette swap: the Vercel frame draws its own grid lines and corner brackets. An engineer at one of those companies exports in that company's skin, and the company's own account then has a reason to repost it.

    done whenList the ten companies that show up most in your users' bios, repos or job titles. Build one skin for the top one and send an output to their DevRel. If they can post it as is, without asking you to remove anything, the skin will travel.

  5. 5

    Put the free tool on its own short domain and end every page on one import button. ray.so is not raycast.com/code, it is a name people type from memory, and each catalogue page (prompts, presets, snippets, quicklinks, themes) ends on a single Add to Raycast button that imports into the paid desktop app. Those catalogues are filled by pull request and each entry is named after its author, like chris/almost-cyan, so contributors carry their own name inside your product and share it themselves.

    done whenOpen your free tool as a first time visitor and count the screens before your paid product is named and reachable in one click. Then check whether an outsider can add an entry under their own name. If neither is true, the traffic arrives and leaves.

The product itself

read from ray.so, live

Create beautiful images of your code

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

Free tool widely shared on X

What else they ran

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.