Guide · 11 min read

Lovable SEO: get your Lovable site on Google

For makers who built a site with Lovable and want it found. What Google and AI crawlers actually receive, how to check yours in five minutes, and the fixes that matter, in order.

Updated · By the Serpkin team

In short

  • Lovable projects created from May 13, 2026 use TanStack Start and render on the server. Older React + Vite projects render in the browser, and Lovable serves prerendered copies to verified crawlers only.
  • On an older project, curl and many SEO tools see an empty shell even when Google doesn't. Use Search Console's live URL test to see what Googlebot gets.
  • Fix in this order: custom domain as primary with absolute canonicals, unique metadata per page, a sitemap listed in robots.txt, then Search Console.
  • Lovable redirects other domains to your primary domain with 302s, not 301s, so absolute canonicals on your custom domain matter.
  • Use the built-in Migrate to TanStack Start action if every client needs real HTML; move off Lovable only if you need things like 301 path redirects.

Yes, a Lovable site can show up on Google, and since May 2026 the platform does much of the hard part for you. Projects created from May 13, 2026 use TanStack Start and render on the server. Older projects are React + Vite apps that render in the browser, and Lovable serves a prerendered copy to verified search engine and AI crawlers. What it doesn't do for you is the per-page work: unique titles and descriptions, a sitemap, your custom domain as the one canonical host, and links between pages. Fix those first, in that order, then decide whether to migrate an older project to TanStack Start. This guide goes deeper than our general SEO for AI-built websites guide, for Lovable specifically.

How your Lovable site renders

Which stack you have decides what crawlers get. Lovable's docs describe two cases:

Lovable stacks and what crawlers receive (per Lovable's docs, October 2026)
Older projectsNewer projects
CreatedBefore May 13, 2026 (June 22 on Enterprise)From May 13, 2026 (June 22 on Enterprise)
StackReact + Vite, renders in the browserTanStack Start, server-side rendering
Verified crawlers (Google, Bing, major AI crawlers, link-preview bots)A prerendered copy, generated on requestServer-rendered HTML
Everyone else (curl, many SEO tools, unverified bots)The single-page app shell, unless they ask for MarkdownServer-rendered HTML
Self-hosted elsewherePlain SPA: prerendering is part of Lovable hostingNeeds a host that runs a Node server

Two consequences. On an older project, a plain curl showing an empty page does not prove Google sees an empty page: Lovable's hosting docs warn that third-party scanners "may report your pages as empty". And prerendering only captures what has loaded when the copy is made, so content that arrives late (a slow API call, a carousel that fetches on scroll) can be missing for crawlers too.

The five-minute diagnosis

  1. Find out which stack you have

    Check the project's creation date, or open the code: TanStack Start projects have a src/routes/ folder and @tanstack/react-start in package.json; older ones have vite.config.ts with react() and an index.html with <div id="root">.

  2. Curl the live page
    Terminal
    URL=https://your-domain.com/pricing
    curl -s $URL | grep -o "<title>[^<]*"
    curl -s $URL | grep -o "<h1[^>]*>[^<]*"
    curl -s $URL | grep -o '<link rel="canonical"[^>]*>'
    Terminal
    $ curl -s https://old-app.example.com/pricing | grep -o "<h1[^>]*>[^<]*"
    (no output: the H1 is added by JavaScript)
    $ curl -s https://new-app.example.com/pricing | grep -o "<title>[^<]*"
    <title>Pricing | Acme
    $ curl -s https://new-app.example.com/pricing | grep -o "<h1[^>]*>[^<]*"
    <h1>Simple pricing for small teams
    
    Illustrative output. Top: an older React + Vite Lovable project seen by a normal client (Google gets a prerendered copy instead). Bottom: a TanStack Start project with per-page metadata.

    On a TanStack Start project, missing H1 or text in this output is a real problem. On an older project, go to the next step before you worry.

  3. See what Google gets

    In Google Search Console, paste the URL into URL Inspection, run Test live URL, then View tested page. That HTML is what Googlebot received. If your copy is there, rendering is fine for Google; work on metadata and discovery.

  4. Compare titles and check the files
    Terminal
    for p in / /pricing /about /blog; do curl -s "https://your-domain.com$p" | grep -o "<title>[^<]*"; done
    curl -s https://your-domain.com/robots.txt
    curl -sI https://your-domain.com/sitemap.xml | head -1
    curl -s -o /dev/null -w "%{http_code}\n" https://your-domain.com/no-such-page

    Four identical titles means metadata is generic, which Lovable's docs say is the starting point. A sitemap that isn't a 200 XML file needs to be added. Lovable doesn't document what status unknown routes return, so look at the last line: a 200 is a soft 404 risk. The free SEO checker, robots.txt tester and sitemap validator do the same checks without a terminal.

Fixes, in order of impact

  1. 1One hostCustom domain set as primary; everything else redirects to it
  2. 2Per-page metadataUnique title, description, canonical and Open Graph on every route
  3. 3SitemapA sitemap.xml with every public URL, listed in robots.txt
  4. 4Search ConsoleVerify, submit the sitemap, read the indexing report
  5. 5Links and contentEvery page linked from another, real text on each
The order to fix a Lovable site: each step is worth little until the one before it is done.

1. Make your custom domain the only host

Custom domains need a paid Lovable plan. Once connected, set it as primary in the domain settings. Lovable then redirects your other connected domains, including the lovable.app address and www (on by default), to it. Those redirects are 302s: Lovable hosting doesn't support 301 redirects between project domains, so primary domains stay reversible. Google says its indexing pipeline doesn't use a temporary redirect as a signal for which URL is canonical, so other signals have to carry that: an absolute canonical on every page pointing at your custom domain, a sitemap on that domain, and internal links that use it.

Terminal
curl -sI https://your-app.lovable.app/pricing | grep -iE "^(HTTP|location)"   # want 302 to your domain
curl -sI https://www.your-domain.com/ | grep -iE "^(HTTP|location)"

The redirect checker shows the full chain. Note that branded workspace URLs (app-name.workspace.lovable.app), unpublished projects and projects with restricted access never appear in search, so don't test SEO on those.

2. Give every page its own metadata

Run the built-in review first: in the project's SEO & AI tab, Your SEO & AI search review checks sitemap, robots.txt, titles, canonicals, structured data, alt text and noindex, and offers Try to fix. It is free on all plans. Then prompt for anything it leaves:

Prompt for Lovable chat
For every public page, set a unique <title> (under 60 characters, main topic first),
a meta description of 140-160 characters, an absolute canonical URL on https://your-domain.com,
and og:title, og:description and a 1200x630 og:image. Use the page's real content; don't invent
claims. List the values you set per route so I can review them.

Check the result with the SERP preview for length and the curl loop above for uniqueness.

3. Add a sitemap and point robots.txt at it

Lovable creates a robots.txt with each project but "not always a sitemap". Ask for one that lists only public, indexable pages, and make sure robots.txt names it:

Prompt for Lovable chat
Add a sitemap.xml at https://your-domain.com/sitemap.xml that lists every public page
(no login, admin or thank-you pages), using absolute URLs on my custom domain. Add
"Sitemap: https://your-domain.com/sitemap.xml" to robots.txt. Keep the sitemap in sync
when pages are added.

4. Connect Search Console

Lovable has a Google Search Console connection that shows clicks, impressions and queries and can submit sitemaps. It verifies with the meta-tag method only. Add a property for your custom domain (not the lovable.app URL), submit the sitemap, and come back to the Page indexing report after a week or two. A Bing Webmaster Tools connector exists too.

5. Fix the 404 status and late content

If the not-found curl returned 200, ask Lovable to render a not-found page with <meta name="robots" content="noindex"> for unknown routes (Google's advice for SPAs), or on TanStack Start to return a real 404 status from the not-found route. For content that loads late, ask Lovable to load the main copy with the page instead of after a delay or on scroll.

Should you migrate to TanStack Start?

If your project is older and it matters that every client, not only verified crawlers, gets real HTML, yes. Lovable has a built-in Migrate to TanStack Start action on all plans: type / in chat and pick it, or use Project settings, General, Project actions, Migrate. Lovable says most upgrades cost 10 to 35 credits, carries over titles, descriptions, social tags and analytics, and leaves the live site alone until you republish. You can revert from version history.

What you can and can't control

SEO controls on Lovable hosting (per Lovable's docs; 'not documented' means we found no official statement)
ItemOn LovableNotes
Titles, descriptions, Open GraphYes, by prompt or in codeStarts generic; social and search preview cards in the editor
CanonicalYes, by prompt or in codeChecked by the SEO & AI review
robots.txtYesCreated with every project
sitemap.xmlYes, by promptNot always created for you
Domain redirects302 onlyNo 301s between project domains
Custom path redirectsNot documentedTest with curl before relying on them
404 status for unknown URLsNot documentedCheck with curl; add noindex if it's 200
llms.txtOptionalNot required; served if you add one

When to move off Lovable, and how

Most sites never need to. Consider it when you need permanent 301 redirects (for example, a site migration with many renamed URLs), server-level control over status codes and headers, or a stack Lovable doesn't produce. Lovable is still great for building; you can keep using it and host elsewhere.

  1. Sync the code to Git

    Git sync works with GitHub, GitLab and Bitbucket on all plans and is two-way, but it creates a new repository (you can't connect an existing one). ZIP download needs a paid plan.

  2. Pick a host that fits the stack

    A TanStack Start project needs a host that runs a server. Its build uses Nitro, which detects Vercel, Netlify and Cloudflare Pages; elsewhere use the node-server preset and run node .output/server/index.mjs. An older React + Vite project is a static SPA: it needs an index.html fallback rewrite, and it loses Lovable's prerendering, so prerender it yourself (see React SEO for Vite apps) or migrate it first.

  3. Brief your coding agent in the repo
    Prompt for a coding agent
    This repo was exported from Lovable and will be hosted on <host> at https://your-domain.com.
    1. Confirm every public route returns its H1, title, description and an absolute canonical
       on https://your-domain.com in the server HTML (curl a production build).
    2. Make unknown URLs return a 404 status and generate sitemap.xml from the real routes.
    3. Add 301 redirects from any old URLs I list below.
    Done when the curl checks pass on the preview deploy. Old URLs:
  4. Switch the domain last

    Point DNS at the new host only after the preview passes, then resubmit the sitemap in Search Console. Server secrets aren't in the repo, so set them on the new host first.

Once the code is in a repo, npx serpkin can set up Claude Code, Codex or Cursor, register the site and run a first scan. It flags pages whose text isn't in the server HTML, bundles small metadata gaps into one "Fix the basics" mission, and npx serpkin check <preview-url> catches regressions on each preview before you switch DNS.

Check a page nowFree: see what a crawler finds on any URL, with a prompt for your agent.

Questions

Is Lovable good for SEO?

It can be. New projects render on the server with TanStack Start, and older ones get prerendered copies for verified crawlers. You still need unique titles and descriptions, a sitemap, a primary custom domain and links between pages.

Why does my Lovable site look empty to SEO tools?

Older Lovable projects are React + Vite single-page apps. Lovable serves prerendered pages only to verified crawlers such as Google and Bing; other tools get the app shell. Check Google's view with URL Inspection's live test.

Does Lovable create a sitemap?

Not always. Lovable's docs say it creates robots.txt with every project but not always a sitemap. Ask Lovable to add sitemap.xml with your public pages and reference it in robots.txt.

How do I connect a custom domain to Lovable for SEO?

Connect it on a paid plan and set it as primary. Lovable then redirects the lovable.app address and other domains to it with 302 redirects. Add absolute canonicals on the custom domain and verify that domain in Search Console.

Can I move my Lovable project to Vercel or Netlify?

Yes. Sync it to GitHub, GitLab or Bitbucket. TanStack Start projects build with Nitro, which supports Vercel, Netlify and Cloudflare; older React + Vite projects deploy as a static SPA but lose Lovable's prerendering.

Sources

Let your agent do the SEO work.

Serpkin finds the next fix from real search data, hands it to Claude Code, Codex or Cursor, and checks it after you ship.

npx serpkin
Start free