Are you using Roam Research for public blogging, but frustrated that you can't show your Roam blog at, instead of

This guide will show you how to do exactly that, at no cost to you whatsoever, using one of the internet's most powerful tools for domain management.

Here's an example of what you'll end up with:

Requirements for this guide:

  • A public Roam Research graph
  • The URL of the page you'd like your readers to go to
  • A domain that you already own, at a domain manager (e.g. Namecheap, GoDaddy) which you have access to

Step 1: Move your domain to Cloudflare

The first thing we need to do is take your domain and move it over to being managed by Cloudflare.

Cloudflare is the biggest internet service you've probably never heard of. They sit between you (a website viewer) and around 16 million websites including huge tech companies, who use them to make sure that they can't get attacked by large amounts of malicious traffic.

We don't care about that too much – we're more interested in the fact that they have an awesome tool called Workers (we'll get to that later) which you can use on their extremely generous free tier to put your Roam blog at your domain.


Sign up for an account:

  • Enter your domain name. If you would like to use a subdomain (e.g. with Cloakist, you should still put your root domain name here.
  • Select the Free plan
  • If you don't have any A records imported, add one with your root domain ( as the Name and as the Content. Do the same for any subdomain you want to use (e.g. to use, enter Name: roam, Content, Otherwise, click Continue on the DNS Record page.
  • Copy the 2 nameservers, which end with
  • Paste the nameservers in the domain setting page at your domain manager (Namecheap in my case). Make sure you save the setting.
  • Wait for a few minutes (consider making a cup of tea), then click Done, check nameservers.
  • Select Flexible SSL/TLS encryption mode
  • Turn on Always Use HTTPS, Auto Minify, and Brotli (all 3 optional but recommended)
  • Select Done
  • You should see this screen. Sometimes it can take a little longer for Cloudflare to detect that you've changed nameservers. If that's the case, you might have to wait up to 45 minutes. Keep using the Re-check your site option, and refresh the page, until you see the 'Great news!' message.

Step 2: Set up a Cloudflare Worker

So now Cloudflare is the boss of your domain.

Cloudflare will also have moved over any DNS records you were using with your domain so that any email setup etc. is still working.

(Note: the ownership of your domain is still with your domain manager. You'll still have to pay them a monthly or yearly subscription to keep owning your domain. But everything else is now managed through Cloudflare.)

Now what we're going to do is add a little bit of code called a Worker, which will live at our site and tell Cloudflare to show the content from your Roam blog instead.

  • Click on Workers in the top menu of Cloudflare:
  • Add Route
  • Enter* (but change this to your site!). If you want to use a subdomain, enter* instead
  • Hit Save
  • Manage Workers
  • Create a Worker
  • Change the name of the Worker (marked with A on the screenshot) to something sensible like yoursite-roam
  • At B, select everything and delete
  • Now paste in the custom script I've written for this exact purpose:

(Improvements to this script are welcome! If you make one, I'm happy to update this.)

  • Once you've done that, you're going to need to change 2 things in the script, on lines 6 and 7
  • Replace with
  • Replace /#/app/nudge/page/RI01qJl4P with the path of the page you want your readers to land on
  • ⚠️ Make sure you don't put a / at the end of either of these! The format should be exactly as it is here
  • Hit Save and Deploy
  • Now, go back to this Workers page
  • Find the Route that you made earlier and click 'Edit'
  • In the Workers dropdown, select the Worker you just created and hit Save

Step 3: Test it!

This should be all you need to do. Now, go to (or if that's what you're using instead) and see if it's working.

If it's not, go back through the steps here and make sure you did all of them correctly. In particular, make sure you replaced the right parts of the Worker script, and that you didn't include anything like https:// before the link or / after.

And if that's still not working, feel free to contact me via the live chat in the corner of this site, or Twitter!

Note: unfortunately there's a concrete limitation to this method, which is that your URLs will be the same as they are on, except with that domain replaced with your own. I still haven't found a way around this.

The hosted option with Cloakist

If you'd rather not...

  • Move your domain over to Cloudflare
  • Have to do this set up yourself
  • Have to worry about changing any code in future in case this breaks can use Cloakist to do this instead, for $10/m.

And for $25/m we offer a Pro version, where you can:

  • Customise your link previews
  • Add live chat
  • Add any custom CSS/JS that you need

Thanks for reading!

Also thanks to which this guide was inspired by!