Skip to content
Base44 SEO Journal

Base44 SEO: what the platform does for you and what it leaves to you

A complete Base44 SEO guide: how Base44 serves pages to Google and AI crawlers, what it automates, and the checklist for custom domains, sitemaps, titles and records.

15 min read

Base44 does real SEO work for you, on one condition: your app has to be on a custom domain. There it writes titles and canonical tags, generates sitemap.xml and robots.txt, adds social tags and breadcrumb structured data, and serves Google and the major AI crawlers a pre-rendered copy of each page. What it leaves to you is everything that depends on your content: meta descriptions, titles for pages that show records, a sitemap that only lists what should rank, and pages worth ranking.

This guide covers how Base44 serves your pages to crawlers, what it automates, where the gaps are, and a checklist to work through. Much of it is based on our test of 47 live Base44 sites, so you’ll see where the docs and the live behavior differ.

Start here: are you on a custom domain?

Everything else depends on this. Base44’s SEO documentation is direct about it: “Base44’s SEO setup is designed and supported for apps that are published on a custom domain. Free Base44 URLs can still be crawled by search engines, but they are not intended for long-term, production SEO.”

On a free yourapp.base44.app address you still get a robots.txt, and Google can index the page. You don’t get the full set: llms.txt and social previews are custom-domain features, and a base44.app subdomain carries no brand signal of its own. Custom domains need the Starter plan or higher. The custom domain guide covers the DNS records and the mistakes that stop a domain from verifying.

Once your app has a custom domain, its base44.app copy keeps working. In our test, 43 of 46 apps with a custom domain sent a noindex header on the base44.app copy, which keeps it out of Google. Check yours:

curl -sI https://yourapp.base44.app/ | grep -i x-robots-tag
# x-robots-tag: noindex, follow   <- what you want to see once a custom domain is live

How Base44 serves your pages to crawlers

Base44 apps are standard React apps built with Vite, rendered in the browser. The HTML a visitor’s browser receives contains no real page content. JavaScript builds the page after it loads, and data comes from your app’s backend through the Base44 SDK.

For crawlers, Base44 adds two layers.

  1. A pre-rendered copy of the page. Base44’s docs say “the platform automatically serves crawlers a rendered version of your pages, including meta tags, structured data, and your real page content”, refreshed when you publish. In our test the render was genuine: it contained the page’s real headings and copy, including content loaded from the app’s data.
  2. A fallback summary. When no render is ready, crawlers get what the docs call “a structured snapshot carrying that page’s heading, its description, and links to your other pages.” In the HTML it’s a hidden block with the id seo-snapshot, and it’s written from a template: page name, app name, an auto-generated app description, and a list of your pages.

This setup causes three SEO problems.

  • Cloaking risk. A crawler that gets the summary sees a different, hidden page from the one visitors see. Google only excuses serving crawlers a separate version “as long as your dynamic rendering produces similar content.” The summary isn’t similar.
  • Late content. Crawlers get whatever Base44 has cached, and nothing renders while they wait, so a new or changed page usually reaches crawlers as the summary. On the first Googlebot request in our test, only 34% of inner pages came back rendered, and requesting pages again didn’t make Base44 render them.
  • Gaps in coverage. A few minutes later, 31% of inner pages still had no render. A day later, 13 of 44 pages that had been rendered were back to the summary. Record pages never appear in the sitemap, and several crawlers are never rendered for.

Base44 decides who counts as a crawler by user agent. Googlebot, Bingbot, GPTBot, ClaudeBot, PerplexityBot, Applebot and the major link-preview bots get the render once it exists. Google’s inspection tool, Bravebot, Meta’s AI crawler and SEO audit tools only ever got the summary. The crawler study has the full list.

You can check what your own page sends:

UA='Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)'
curl -s -A "$UA" https://yourdomain.com/pricing | grep -c 'id="seo-snapshot"'
# 1 = generated summary, 0 = rendered page

What Base44 automates on a custom domain

ElementWhat Base44 doesWhat to check
Page titlesA unique title per page, generated from the URLPages with URL parameters (records) all share one title
Canonical tagsSelf-referencing on every page; strips utm_* and fbclid, keeps ?id=Present on all 47 homepages we tested
sitemap.xmlLists public pages; excludes login-required pagesNo records; login and reset pages often included
robots.txtGenerated for free and paid appsAllows public content and AI crawlers
llms.txtGenerated when you switch it onOff by default
Social tagsOpen Graph and Twitter tags; image resized to 1200 × 630Uses the title, description and logo from app settings
Structured dataBreadcrumbList per page; WebSite, Organization, FAQPage after Fix with AIArticle, Product, LocalBusiness are up to you
Meta descriptionsNot set per page by defaultSet them yourself on every page that matters
Languagelang="en" in index.htmlEdit it in the Code tab if your site isn’t in English

The SEO & GEO page in your app dashboard is where most of this lives. It runs a scan, gives you a score, and can apply some fixes in one click. The SEO & GEO score guide explains what it checks and what a high score doesn’t tell you.

The five gaps to close yourself

1. Meta descriptions and page titles

Base44 doesn’t set a custom meta description per page by default, so Google writes its own snippet from whatever it finds. Set a title (10 to 60 characters, per Base44’s panel) and a description (up to 160) for every page you want to rank, in SEO & GEO → Meta tags. The meta tags guide covers the panel, the Open Graph image, and when to override Base44’s injection.

2. Titles and descriptions on record pages

Base44 generates titles from the URL “for pages without URL parameters.” A template page that shows records, such as /Product?id=123 or /BlogPost?id=abc, gets one title for every record. In our test, every series page on one app was titled “Series | StoryNook.” If your records are the pages people search for, the title has to come from the record, which means asking Base44’s AI to set the document title and description from the loaded data. Pre-rendering then carries that title to crawlers.

3. A sitemap that lists what should rank

Base44’s sitemap lists your page files and nothing else. Across the 47 sites we tested, 21% of sitemap URLs were login, password-reset, admin or checkout pages, and none were individual records. Turn off indexing for utility pages in SEO & GEO → Advanced Settings, and if your records matter, replace the sitemap with one that lists them. The sitemap guide shows both.

4. Content Google can’t get from the summary

When a crawler gets the summary, it sees your page name, your app description and a list of links. That’s enough for Google to know the page exists and not enough to rank it for anything. The fix is making sure a render exists before crawlers arrive, which Base44 doesn’t do on its own for pages nobody has visited. See the options in the next section.

5. Trust and content signals

Base44’s docs spend most of their SEO page on content, and they’re right to. Named authors, a real About page, business details, policy pages, FAQs with plain answers, and copy written in the words your customers use. None of that can be automated, and all of it matters more than any tag.

Sites with many pages of dynamically loaded content

Even on a small marketing site, you can’t make Base44 render a page when you need it to. It’s worse when your traffic depends on dynamically loaded content (product pages, directory listings, blog posts stored in your app’s data: anything that isn’t written into the page’s source code). Those pages are the ones least likely to have a render ready, least likely to be in the sitemap, and most likely to share a title.

You have two ways to close that gap, and one habit to keep.

  1. Monitor after each publish. Run the curl check across your sitemap to see which pages serve the summary. Requesting a page doesn’t make Base44 render it, and republishing is the only refresh trigger it documents, so this tells you where you stand without fixing it.
  2. Put a pre-rendering service in front of your domain. It renders every page ahead of time and serves the finished HTML to every crawler, including the ones Base44 skips. We’d use Encited, which has a documented Base44 setup, serves Markdown to AI agents, and keeps crawl logs showing which bot fetched which page and what it got. Prerender.io and a self-hosted Puppeteer service are the other common choices.
  3. Export the code and move to a framework with server rendering. You get full control of every tag and URL, and you take on hosting and the backend. The migration guide explains what that involves.

Getting found in AI answers

The crawlers behind ChatGPT, Claude and Perplexity answers (GPTBot, OAI-SearchBot, ChatGPT-User, ClaudeBot, PerplexityBot) all got Base44’s render once it existed. Base44’s robots.txt allows them by default, and you can switch on llms.txt from the SEO & GEO page. Beyond that, AI answers mostly draw on pages that rank in search indexes, so everything above applies. The AI search guide covers the rest, including why Brave’s crawler matters and gets only the summary.

Checking your work in Search Console

Connect your custom domain to Google Search Console, submit https://yourdomain.com/sitemap.xml, and use URL Inspection on a few key pages. One Base44-specific trap: the Test live URL button fetches with Google-InspectionTool, which Base44 doesn’t pre-render for, so the live test shows the summary even when Googlebot gets the full page. Read View crawled page on the indexed version instead. The Search Console guide has the steps, and if pages still aren’t showing up, work through why a Base44 app isn’t indexed.

The Base44 SEO checklist

  1. Publish on a custom domain and confirm the base44.app copy sends noindex.
  2. Set a unique title and meta description on every page you want to rank.
  3. Make record pages set their title and description from the record.
  4. Turn off indexing for login, password-reset, admin and checkout pages.
  5. If records matter, serve a sitemap that lists them.
  6. Switch on llms.txt and confirm robots.txt allows the crawlers you want.
  7. Add Organization, WebSite and, where it fits, FAQPage or LocalBusiness structured data, then validate it.
  8. Set up 301 redirects for any page you rename.
  9. Verify the domain in Google Search Console and Bing Webmaster Tools and submit the sitemap.
  10. Check what crawlers get with the curl test, and decide whether you need pages rendered ahead of time.

What to do next

Run the curl test on your homepage and your three most important inner pages. If they come back rendered, spend your time on titles, descriptions and content, and check again after each publish. If they keep coming back as the summary, read the crawler study and pick one of the three options above before you publish more pages.

Found something wrong or out of date? Base44 ships changes every week and we'd rather fix a guide than let it rot.

Disclosure: the team behind this guide also builds Encited, mentioned above.

Frequently asked questions

Does Base44 do SEO?
Yes, on a custom domain. Base44 generates titles, canonical tags, sitemap.xml, robots.txt, social tags and breadcrumb structured data, and serves recognized crawlers a pre-rendered version of each page. You still set meta descriptions, fix titles on record pages, clean up the sitemap and write the content.
Is Base44 good for SEO?
The basics are there on a custom domain, but its crawler rendering works against you. Until a page is rendered, crawlers get a hidden, auto-written summary that differs from what visitors see, which is a cloaking risk. Real content reaches crawlers late, renders expire, and record pages share one title and never appear in the sitemap.
Can a free base44.app URL rank on Google?
It can be indexed, but Base44's docs say free URLs 'are not intended for long-term, production SEO', and features like llms.txt and social previews are designed for custom domains. If search traffic matters, connect a custom domain, which needs the Starter plan or higher.
Does Base44 render JavaScript for Google?
Base44 serves recognized crawlers such as Googlebot, Bingbot and GPTBot a pre-rendered copy of the page, so they don't need to run JavaScript. It serves that copy from a cache and never renders while a crawler waits, so a page with no cached render gets an auto-written summary instead.
What's the fastest SEO win on Base44?
Connecting a custom domain, which Base44 itself calls the single biggest improvement. After that: a unique title and meta description on every important page, noindex on login and password-reset pages, and a sitemap submitted in Google Search Console.

Read next