Custom domain on Lovable, Bolt, Replit and v0: what it costs and how to set it up

Every AI builder gives you a free subdomain. Your own domain is where plans, DNS records and Cloudflare settings start to matter. Here's the answer per builder, from each vendor's docs.

Short answer

Lovable and Bolt only connect a custom domain on a paid plan (Pro). Replit doesn't charge for the connection itself, but the free Starter app goes offline after 30 days, so a lasting site needs Core. v0 publishes to Vercel, where adding a domain is free on Hobby, but Hobby is non-commercial. Cursor, Claude Code and Devin Desktop have no hosting of their own: you add the domain at whichever host you deploy to. The domain name itself is always billed separately by the registrar, whether that's the builder or someone else.

Do you need a paid plan? Builder by builder

From each builder's own pricing and docs. Prices are in USD, exclude tax and were checked on the date above.

Custom domain cost and requirements by AI builder
Builder Built-in hosting Custom domain
Lovable Publish button gives you a lovable.app URL. Publishing is free; hosting usage draws on Cloud credits. Custom domains require a paid plan (Pro from $25/month, or $21/month billed annually).
Bolt.new Bolt hosting publishes to a .bolt.host address on every plan. Custom domains need Pro ($25/month; 10M tokens/month, up to 1M web requests, no branding).
Cursor No built-in hosting. You pick the host. Set up at your host.
Claude Code No built-in hosting. Set up at your host.
Replit Publishing is built in. Autoscale (the default) bills per request, Reserved VM is a fixed monthly price, and Static is free apart from data transfer, but Static doesn't work for apps built with Replit Agent. Connect in Tools → Domains; Replit charges nothing for the connection (you pay your domain provider), but Starter's one free app goes down after 30 days, so a lasting site needs Core ($20/month, $18/month billed annually).
v0 Publish deploys to your Vercel account; Vercel's plan limits apply. Add it in Vercel project settings (free on Hobby).
Devin Desktop (formerly Windsurf) App Deploys publishes to Netlify under the vendor's account at <name>.windsurf.build (the domain kept its old name); you can claim the site into your own Netlify account. Claim the site into your Netlify account, then add a domain there.

The domain name is a separate cost

  • Lovable, Bolt and Replit all sell domains inside the app. Lovable says domains bought through it are billed separately from your subscription, and the renewal price can differ from the purchase price (both are shown at checkout).
  • Replit includes WHOIS privacy on domains bought through it, renews them automatically and lets you add your own DNS records (for example MX for email).
  • You can also buy the domain at any registrar and connect it. Every builder below supports that.

Lovable: connect a domain

  • Publish first, then go to Project → Settings → Domains → Connect existing domain (or ask Lovable in the project chat).
  • Use the automatic setup (Entri logs in to your DNS provider for you) or the manual setup: an A record pointing to 185.158.133.1 and a TXT record on _lovable with a value starting lovable_verify=.
  • Connecting the root domain also connects www by default and redirects it to your primary domain. Lovable uses 302 (temporary) redirects between connected domains; 301s aren't supported.
  • Remove any AAAA records for the domain, and if you use CAA records, allow pki.goog, letsencrypt.org or ssl.com so the certificate can be issued.
  • DNS on Cloudflare: set the records to DNS only (grey cloud), or turn on the advanced “Uses Cloudflare or similar proxy” option, which gives you a CNAME instead of the A record.
  • Lovable says DNS can take up to 72 hours, though most domains are live within a few hours. If you downgrade later, already-connected domains keep working; connecting a new one needs a paid plan again.
DNS records at your registrar (manual setup)
Type  Name       Value
A     @          185.158.133.1
TXT   _lovable   lovable_verify=…   (copy the exact value from Lovable)

Bolt: connect a domain

  • The project has to be published. Open the gear icon → All project settings → Domains & Hosting → Connect a domain you own.
  • Point www with a CNAME to site-dns.bolt.host, and the root domain with an ALIAS, ANAME or flattened CNAME to site-dns.bolt.host. Bolt warns that AAAA is a different record type and won't work.
  • Connecting a subdomain such as app.example.com first needs a TXT verification record that Bolt shows you.
  • Most domains connect within a few hours; Bolt says it can take up to 24 hours. Domains bought through Bolt usually connect in 5–10 minutes.
  • With a domain bought elsewhere you can make the main domain primary, but not one of its subdomains (that needs a Bolt-bought domain). Sites on a custom domain can only be published publicly.
  • Published to Netlify instead of Bolt hosting? Add the domain in Netlify's Domain management; domains don't carry over between the two.
DNS records at your registrar
Type                          Name  Value
CNAME                         www   site-dns.bolt.host
ALIAS / ANAME / flat. CNAME   @     site-dns.bolt.host

Replit: connect a domain

  • In the project, open Tools → Domains (under Replit Cloud) → Use a domain you already own. The guided setup (Entri) writes the records for you; the manual fallback is an A record plus a replit-verify=… TXT record.
  • Keep the TXT record forever. Replit renews the SSL certificate through it, and deleting it makes the certificate expire later, breaking the site.
  • www is a separate domain on Replit: add www.example.com as its own entry with its own A and TXT records.
  • Remove AAAA records and set Cloudflare records to DNS only; Replit can't renew certificates for proxied records. DNS can take up to 48 hours.
  • Replit's comparison lists the price of a custom domain as “pay your domain provider”. The catch is the plan: Starter's one free published app goes down after 30 days and carries a “Made with Replit” badge.

v0: add the domain in Vercel

v0's Publish deploys to your Vercel account, so the domain lives in Vercel: Project → Settings → Domains → Add, then create the records Vercel shows. Vercel's Hobby plan allows 50 domains per project. Hobby is for personal, non-commercial use only, so a site that sells something needs Pro; see the Vercel Hobby guide linked below.

Cursor, Claude Code and Devin Desktop: set it up at your host

These tools write code but don't host it. Add the domain wherever you deploy. Devin Desktop (formerly Windsurf) App Deploys publish to Netlify; claim the site into your own Netlify account first, then add the domain there. Each host's steps:

How to add a custom domain on each host
Host How to add your domain
Vercel Project → Settings → Domains → Add. Vercel shows the exact DNS records (A record for the apex, CNAME for www) to create at your registrar; HTTPS is issued automatically.
Netlify Project → Domain management → Add a domain, then follow the DNS instructions (or delegate your domain to Netlify DNS). HTTPS is automatic.
Cloudflare Pages Your project → Custom domains → Set up a custom domain. Easiest if the domain's DNS is on Cloudflare (Cloudflare Registrar sells domains at cost).
Railway Service → Settings → Networking → + Custom Domain. Railway gives you a CNAME to add at your DNS provider and issues SSL automatically.
Render Service → Settings → Custom Domains → Add. Hobby includes 2 custom domains (then $0.25/domain/month).
Fly.io fly certs add yourdomain.com, then create the A/AAAA (or CNAME) records flyctl prints.
DigitalOcean App Platform App → Settings → Domains → Add domain, then point DNS as instructed (or let DigitalOcean manage DNS).
Hostinger Domains bought at Hostinger connect from hPanel; external domains are pointed via nameservers or DNS records shown in hPanel.

Domain won't go live? The usual causes

  • Old records left over: remove previous A, AAAA or CNAME records for the same name, so only the builder's records remain (Lovable: “my domain shows my old website”).
  • Cloudflare's orange cloud: proxying breaks verification or certificate renewal on Lovable (unless you use its proxy option) and on Replit. Switch the record to DNS only.
  • AAAA records: Lovable, Bolt and Replit all call them out as a cause of failed setup.
  • CAA records blocking the certificate authority (Lovable lists the ones it needs).
  • Sign-in breaks on the new domain: add the domain to your auth provider's redirect URLs. Lovable Cloud adds it automatically; your own Supabase project doesn't.

Common questions

Is a custom domain free on Lovable?

No. Lovable connects custom domains only on paid plans; publishing to a lovable.app address is free on every plan. A domain bought through Lovable is billed separately from the subscription.

Can I use a custom domain on Bolt's free plan?

No. Bolt's Free plan publishes to a .bolt.host address; custom domain support is part of Pro ($25/month on Bolt's pricing page).

Does Replit charge for a custom domain?

Replit's docs list the price as “pay your domain provider”: there's no separate connection fee. But the free Starter plan's single published app goes down after 30 days, so a permanent site on your domain needs Core.

Why does my domain still show my old website?

Your DNS still has A, AAAA or CNAME records from the previous host. Delete them so only the records your builder gave you remain, then wait for DNS to update.

Should I turn on the Cloudflare proxy (orange cloud)?

Not by default. Lovable and Replit both tell you to set records to DNS only (grey cloud). Lovable offers a separate proxy mode with a CNAME record if you really want Cloudflare in front.

Do I need to add www separately?

On Lovable, connecting the root domain also connects www (on by default). On Bolt, you add a CNAME for www. On Replit, www is a separate domain entry with its own A and TXT records.

Related on VibeLiftoff