Custom domains for Supabase: options, cost and setup

By the SupaHost team · Updated 11 November 2026 · 6 min read · View as Markdown

A custom domain lets your Supabase API, Auth and Storage answer at an address like api.yourapp.com instead of yourprojectref.supabase.co. On Supabase Cloud it's a paid add-on at $10 a month per project (November 2026), limited to one subdomain per project and set up with a CNAME record plus a TXT record for certificate verification. The main reason to pay for it is that OAuth sign-in screens and auth emails then show your domain, not Supabase's.

Why use a custom domain

OAuth screens show your domain

When users sign in with Google, GitHub or another provider, the provider redirects back to your project's Auth callback URL. Some providers show that domain on their consent or sign-in screen, so users can end up seeing a random-looking supabase.co address at the moment you're asking for their trust. With a custom domain the callback is on your own domain.

Magic links, password reset emails and public Storage URLs all use the project URL. A custom domain keeps them on your brand, which looks more trustworthy and is less likely to make users suspect phishing.

Cookies on your own domain

Some auth flows depend on cookies bound to the project domain. Supabase's docs note, for example, that Sign in with Twitter relies on such cookies, so your frontend needs to use the custom domain for it to work properly. Serving the API from a subdomain of your site keeps everything on one registrable domain.

Easier moves later

If your clients call api.yourapp.com, moving the backend (to another region, another project or another host) means changing a DNS record rather than shipping new app builds. You'll still need to update keys if they change, but the URL stays the same.

Options on Supabase Cloud

Option What you get Cost (November 2026)
Default URL yourprojectref.supabase.co Included
Vanity subdomain yourbrand.supabase.co (experimental, CLI only, paid plans) See Supabase docs
Custom domain api.yourapp.com with a managed certificate $10/mo per project

Rules from Supabase's custom domains docs:

  • One custom domain per project.
  • Subdomains only, such as api.example.com; the bare example.com isn't supported.
  • CNAME-based setup only.
  • It's for the Supabase API, Auth and Storage, not for hosting your frontend through Edge Functions.
  • The original supabase.co URL keeps working after activation, so you can switch clients over gradually.

Because the add-on is per project, costs scale with project count:

Projects with a custom domain Supabase add-on cost per month
1 $10
3 $30
10 $100

That's on top of the Pro plan and compute; see Supabase pricing explained for the full bill.

How custom domain setup works

The steps below apply to most hosts, Supabase included. The exact record values come from your host.

1. Pick a subdomain

Use something like api.yourapp.com or auth.yourapp.com. A subdomain works with every DNS provider, while apex domains (yourapp.com) can't hold a CNAME record.

2. Create the CNAME record

In your DNS provider, point the subdomain at the hostname your host gives you. On Supabase that's your project's supabase.co domain.

Type   Name   Target                          TTL
CNAME  api    yourprojectref.supabase.co      300

A low TTL makes changes propagate faster while you set things up.

3. Prove you own the domain

Before issuing a certificate, the host needs proof that you control the domain. Supabase asks for a TXT record at _acme-challenge.api.yourapp.com with a value it gives you. Copy the value exactly, without spaces. If your DNS provider appends your domain automatically, enter only _acme-challenge.api as the name.

Type   Name                Value
TXT    _acme-challenge.api  <value from Supabase>

If your DNS provider can proxy traffic (an orange-cloud style toggle), check your host's guidance; proxying can get in the way of verification and certificate issuance.

4. Check DNS has propagated

dig +short CNAME api.yourapp.com
dig +short TXT _acme-challenge.api.yourapp.com

Both should return the values you entered. Propagation can take minutes or, with some providers, longer.

5. Wait for the TLS certificate

Once DNS verifies, the host issues an HTTPS certificate for your subdomain. Supabase uses several certificate authorities, including Let's Encrypt, and says issuance can take up to 30 minutes. You don't have to manage or renew the certificate yourself.

6. Add the new OAuth callback URLs

Before switching traffic, add https://api.yourapp.com/auth/v1/callback to the allowed redirect or callback URLs in every OAuth provider's developer console. Keep the old supabase.co callback too until all clients have moved. If you use SAML SSO, Supabase notes that the identity provider will need updated metadata.

7. Activate and update your clients

On Supabase you set up the domain from the project's settings in the dashboard, or with the CLI:

supabase domains create --remote=yourprojectref --custom-hostname api.yourapp.com
supabase domains reverify --remote=yourprojectref   # repeat until DNS verifies
supabase domains activate --remote=yourprojectref

Then point your client at the new URL. Your API keys don't change.

import { createClient } from '@supabase/supabase-js'

const supabase = createClient('https://api.yourapp.com', process.env.SUPABASE_ANON_KEY)

Test sign-in with each OAuth provider, a magic link and a Storage download before you remove anything.

How custom domains work on SupaHost

SupaHost runs open-source Supabase on a VM dedicated to your account, and custom domains are included in every plan with automatic HTTPS from Let's Encrypt.

Plan (November 2026) Custom domains included Extra domains
Builder ($25/mo) 1 $2/mo each
Pro ($49/mo) 3 $2/mo each
Business ($99/mo) 10 $2/mo each

Setup follows the same pattern as above: add the domain in the SupaHost dashboard, create a CNAME in your DNS provider pointing at your project's SupaHost address, and the certificate is issued and renewed for you once DNS checks out. Then add the new callback URL to your OAuth providers. Details are in the custom domains docs.

For ten projects that each need their own domain, that's $100 a month in add-ons on Supabase Cloud, versus 10 domains included on SupaHost Business. Weigh it against the rest of the picture: SupaHost is in public beta, with no SLA, no SOC 2 and no read replicas. If you need those, or a single project's domain is the only extra you're paying for, Supabase Cloud's $10 add-on is a reasonable price. The full trade-offs are on SupaHost vs Supabase Cloud, and moving an existing project is covered in how to migrate a Supabase project.

FAQ

How much does a Supabase custom domain cost?

On Supabase Cloud it's a $10 per month add-on for each project, available on paid plans (November 2026). Each project can have one custom domain.

Can I use my root domain with Supabase?

No. Supabase custom domains only support subdomains such as api.example.com, set up with a CNAME record. Your root domain can keep serving your website.

Does the old supabase.co URL stop working?

No. After you activate a custom domain, the original supabase.co URL keeps working, so you can move clients over at your own pace.

Do I need to change my OAuth settings?

Yes. Add the new https://your-domain/auth/v1/callback URL to each OAuth provider before you activate the domain, and keep the old one until every client uses the new URL. Otherwise sign-ins through that provider can fail.

How long does setup take?

Mostly it's DNS propagation, which is often a few minutes. Supabase says certificate issuance after verification can take up to 30 minutes.

Is a vanity subdomain the same as a custom domain?

No. A vanity subdomain changes the supabase.co part to a name you choose, such as yourbrand.supabase.co, but it's still on Supabase's domain. It's experimental and configured through the CLI only. A custom domain puts the API on your own domain.

Running several Supabase projects? SupaHost gives you your own server with the open-source Supabase stack and 5 to 30 projects for one monthly price. See plans or compare costs.