Skip to content
Median
Esc
↑↓navigate↵open⌘Jpreview
On this page

Custom domain

Serve your public site from your own address, like help.example.com.

median site domain set help.example.com

A custom domain becomes the site’s address. Once it is live, <slug>.median.website redirects to it.

Any domain you own works: a subdomain like docs.example.com or support.example.com, a deeper one, or the apex example.com itself.

Connect a domain

Add the domain

Go to Site → Overview → Custom domain. Enter the hostname and press Connect.

Add the DNS records

Copy each record into your DNS provider. Names are relative to your domain: help for help.example.com, @ for example.com itself.

Wait for Live

The status moves from Waiting for DNS to Live once the records are found. Check now checks straight away.

DNS records

Domain Type Name Value
A subdomain, like help.example.com CNAME help The target shown, like cname.vercel-dns.com
The apex, like example.com A @ The address shown, like 76.76.21.21
Any, when listed TXT _vercel The value shown. Proves you own a domain that is already used elsewhere on Vercel

Use the values the dashboard shows. They can differ from these examples.

Status

Status Meaning
Waiting for DNS Records are missing, or have not spread yet. The records still to add are listed
Live The site answers on the domain over HTTPS. <slug>.median.website redirects to it with a 308
Fact Detail
Checks On connect, then on their own: after 2 minutes, then further apart, for about 4 days. Daily once live
Certificate Issued and renewed for you
Paths The redirect keeps the path and query. /support goes to /support
Broken records A live domain whose records stop resolving goes back to Waiting for DNS, and the redirect stops
One per site Connecting another domain replaces the first
Remove The site answers on <slug>.median.website again
Sign-in Works on both addresses

Plan and access

Requirement Detail
Plan The Site add-on, or Pro. See Plans
Role Admins and owners

API and CLI

Action CLI REST
Show median site domain get GET /v1/site/domain
Connect median site domain set <hostname> POST /v1/site/domain
Check now median site domain check POST /v1/site/domain/check
Remove median site domain remove DELETE /v1/site/domain

MCP: median.site.domain(), setDomain({ domain }), checkDomain(). See the management API.

Troubleshooting

Message Fix
Enter the whole domain, like docs.yourcompany.com. Include the domain, not only the subdomain
No domain ends in .<ending>. Check the spelling. The ending does not exist in DNS. Check it against your registrar
Domains can only use letters, numbers and hyphens, and a part can't start or end with a hyphen. Underscores and other symbols can’t be in a hostname
Use a domain name, not an IP address. Enter the hostname, not the address it points at
Your median.website address comes from your slug. Change it in Settings under General. A different median.website address is a slug change, not a custom domain
vercel.app addresses belong to Vercel. Use a domain you own. Connect your own domain, not the Vercel address
localhost only works on your own computer. Use a public domain. Use a domain that resolves on the internet
median.sh addresses are only for Median's own site. Median keeps its own domain for its own site
That domain is already connected to another site. Remove it from the other organization’s site first
That domain is already in use somewhere else. Remove it there first. It is attached to another Vercel project. Remove it there
That domain can't be used. Check the spelling and try again. Check the spelling
This feature requires an eligible paid plan. Add Site, or move to Pro
Custom domains are not available right now. Please try again later. Try again later
We couldn't check this domain just now. We'll try again soon. Nothing. The next check runs on its own
Stuck on Waiting for DNS Run dig help.example.com. It has to return the value shown, with no proxy in front

Was this page helpful?