Skip to content

Why isn't my v0 site showing on Google?

v0 builds Next.js apps on Vercel, so pages usually render on the server. The usual blockers are a protected deployment, the starter title, and no sitemap.

Checked on October 8, 2026

By Bruno Amorim · ·

Start with the address you published

v0 deploys to Vercel, and Publish updates your production deployment. Preview deployments, built from working branches, each get their own address. Vercel sends X-Robots-Tag: noindex on all of them, and on older production deployments once a newer one goes live. Google skips those addresses on purpose.

Check the header on the address you want Google to index.

Prints a noindex header if Google is told to skip this address
curl -sI https://www.example.com/ | grep -i x-robots-tag

No output is good. If you see noindex, you are on a preview or an old deployment. Use your production domain in links, in your sitemap, and in canonical tags.

Make sure the public can see production

During the first publish, v0 asks who can access the deployed app. To change it later, open the project menu (...) > Settings > Vercel Project. In Vercel, Deployment Protection set to All Deployments covers your production domain too, so Google gets a sign-in screen instead of your page. Standard Protection leaves production domains public.

Test it in a private browser window. If you see a Vercel sign-in page, so does Google.

Replace the starter title

v0 starts new chats from a Next.js app. Many v0 projects we found on GitHub still carry the starter metadata in app/layout.tsx.

The starter metadata, as found in public v0 projects
export const metadata: Metadata = {
  title: 'v0 App',
  description: 'Created with v0',
  generator: 'v0.app',
}

Left as is, every page tells Google its title is "v0 App". Give the layout your site name and a title template, and give each page its own title and description.

An example prompt we wrote for v0
Replace the 'v0 App' title and 'Created with v0' description in app/layout.tsx with our business name and a one-sentence description. Add a title template so each page title ends with our name. Give every page its own title and description.

Add a sitemap and robots.txt

A Next.js app has no sitemap or robots.txt until someone adds app/sitemap.ts and app/robots.ts. Ask v0 to add both. The sitemap should list full URLs on your own domain, and only pages that return 200. The Next.js guide covers the details, including 404 pages that return 200.

Pages that load their text in the browser

Next.js builds pages on the server by default. A page marked 'use client' that fetches its content in useEffect is the exception: its server HTML has the layout and a spinner, and the text arrives later. View the page source to check. If the main text is missing, ask v0 to fetch the data in a Server Component instead.

One domain, not two

Add your domain in v0 under Publish > Customize Domain. DNS setup happens in Vercel.

Your app stays live on its vercel.app address after that. Vercel's own guide warns that search engines can treat the two addresses as separate pages. Its fix has two parts: send X-Robots-Tag: noindex on the vercel.app host, and redirect that host to your domain with a firewall rule under Project > Firewall in Vercel. Then set metadataBase and a canonical URL in your metadata, so each page names your domain.

What Search Console will show

Each problem above has its own reason in Indexing > Pages.

  1. Why it happens
    Vercel sends X-Robots-Tag: noindex on preview deployments and old production deployments. A sitemap or link that points at one of those addresses hands Google a noindex page.
    The fix
    Use your production domain everywhere: in the sitemap, in links, and in canonical tags. Check the header with curl -sI.
  2. Why it happens
    The same app answers on your domain and on its vercel.app address, and the starter app sets no canonical URL.
    The fix
    Add noindex and a redirect for the vercel.app host, as Vercel's guide shows, and set a canonical URL on your own domain.
  3. Why it happens
    Pages titled "v0 App" with the starter description, or with little text of their own, give Google no reason to keep them.
    The fix
    Give each page its own title, description, and content.

What CrawlCoach checks

On paid plans, CrawlCoach checks the pages in your sitemap against Search Console every day and emails you when one drops off Google. A page that picked up noindex from a deployment header, or that Google filed under its vercel.app copy, shows up with its reason and the fix. The free report covers up to 500 pages, once.

Questions

Is v0 good for SEO?

Yes, as a base. v0 builds Next.js apps, and Next.js renders pages on the server. Fix the setup around it: public production access, a real title on each page, a sitemap, and one domain.

Why does Google show my v0 site as "v0 App"?

The starter metadata in app/layout.tsx sets that title. Change it and publish. Then use Request indexing in URL Inspection for your home page. Google updates the title after it crawls the page again.

Do I need a custom domain for my v0 site?

No. Google can index a public vercel.app address. A custom domain lets you add a Domain property in Search Console and keeps your address if you move. If you add one, add noindex and a redirect on the vercel.app host.

Related guides

Sources

Checked on October 8, 2026. Vendors change their tools and docs, so check the source if something looks different.

Which of your v0 pages does Google skip?

Sign in with Google. CrawlCoach checks up to 500 pages for free and shows the fix for each problem.

Get my free report

Free for up to 500 pages. No card needed. Sign in with the Google account you use for Search Console.

Other AI app builders