Skip to main content

Command Palette

Search for a command to run...

How to map a custom domain to your Hashnode blog

Published
4 min read
How to map a custom domain to your Hashnode blog

Every Hashnode blog starts with a free subdomain, such as yourname.hashnode.dev. It works out of the box. But if you want your blog to live at your own domain, like blog.yourname.com or yourname.com, you
can set that up in a few minutes.

This guide walks you through the entire process.

Before you start

You need two things:

  • A Hashnode blog (obviously)

  • A domain you own, with access to its DNS settings

Your domain registrar is where you'll add DNS records. If you bought your domain from Namecheap, GoDaddy, Cloudflare, Google Domains, or similar, that's where you'll go.

Step 1: Open domain settings

Go to your blog dashboard and click Domain in the sidebar.

You'll see two tabs: Hashnode Sub-Domain and Custom Domain. Click Custom Domain.

domain settings page with tabs

Step 2: Enter your domain

Type your domain without http:// or https://. Just the bare domain.

Examples:

  • blog.yourname.com (subdomain)

  • yourname.com (apex/root domain)

Note: Don't enter something like www.blog.yourname.com. If your domain is yourname.com and you want a blog subdomain, use blog.yourname.com. The www prefix is handled separately.

domain input field

Step 3: Choose your mapping option (apex domains only)

If you're mapping an apex domain like yourname.com, Hashnode will ask whether you also want www.yourname.com to redirect to it.

Pick the recommended option: add both and redirect www to the apex. This way visitors who type www.yourname.com won't hit a dead end.

If you're mapping a subdomain like blog.yourname.com, this step is skipped automatically.

redirect modal with both options

Step 4: Add DNS records

After saving, Hashnode shows you the exact DNS records to add. The records depend on what type of domain you're mapping.

For a subdomain (e.g. blog.yourname.com):

Type Host Value
CNAME blog hashnode.network

For an apex domain (e.g. yourname.com):

Type Host Value
A @ 76.76.21.21

If you also opted for www redirect, add one more:

Type Host Value
CNAME www hashnode.network

Go to your DNS provider and add these records. Delete any existing A or CNAME records for the same hostname first. Having duplicate records will cause conflicts and prevent verification.

Step 5: Wait for verification

Hashnode automatically checks your DNS configuration every few seconds. You'll see a "Pending verification" status that flips to "Domain verified" once the DNS records propagate.

This usually takes a few minutes. In rare cases, it can take up to 24 hours. You can check propagation progress at whatsmydns.net.

Step 6: SSL certificate

You don't need to do anything here. Once your domain is verified, Hashnode automatically provisions a free SSL certificate via Let's Encrypt. HTTPS just works.

If you're using Cloudflare

This is the most common gotcha. If your domain is on Cloudflare, you need to set the proxy status to DNS only (gray cloud, not orange cloud) for the records you just added.

When the orange cloud is on, Cloudflare proxies traffic through its own servers, which breaks the domain verification and SSL provisioning.

If you see a "Verification required" warning

Sometimes Hashnode will show a yellow banner asking you to add a TXT record. This happens when the domain was previously used on another Vercel account.

Just add the TXT record exactly as shown. Hashnode will verify ownership and complete the setup.

Removing a custom domain

If you ever want to go back to your hashnode.dev subdomain, click Remove domain at the bottom of the domain settings page. Your subdomain stays reserved for you regardless of whether you have a custom domain mapped.

What about the hashnode.dev subdomain?

It never goes away. When you map a custom domain, your hashnode.dev address automatically redirects to the custom domain. If you remove the custom domain later, your blog goes back to the hashnode.dev address.

Nothing is lost.

Hashnode

Part 1 of 1