What is the seo-snapshot block in Base44's HTML?
Every Base44 page ships a hidden seo-snapshot div that crawlers read when no render is ready. What it contains, where its text comes from, and how to make it better.
8 min read
Every Base44 page ships with a hidden block of HTML inside its root element: <div id="seo-snapshot" data-seo-source="builder">. It’s Base44’s fallback for crawlers. When a crawler asks for a page and no pre-rendered copy is ready, this block is what it reads: a heading, a sentence about your app, and a list of your pages. Base44 builds it from your app name, app description and page names, so improving those improves the fallback.
The mechanism guide explains when crawlers get it. This post is about what’s in it.
What it looks like
Here’s the structure from a live Base44 site, trimmed:
<div id="root">
<div data-seo-source="builder" id="seo-snapshot"
style="position:absolute;width:1px;height:1px;padding:0;margin:-1px;
overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0;">
<main>
<header>
<h1>About | findgestor.com</h1>
<p>About on findgestor.com. The definitive, bilingual directory for finding
expert gestores in Spain.</p>
</header>
<nav aria-label="Pages">
<h2>Pages</h2>
<ul>
<li><a href="/SubmitGestor">Submit Gestor</a> ... Submit Gestor on findgestor.com. ...</li>
<li><a href="/Contact">Contact</a> ... Contact on findgestor.com. ...</li>
<!-- one entry per page in the app -->
</ul>
</nav>
</main>
</div>
</div>
Base44’s docs describe it as “a structured snapshot carrying that page’s heading, its description, and links to your other pages, so crawlers always receive meaningful content.” A June 2026 update added “clearly labeled page sections and a description for each page.”
Where each part comes from
| Part | On the homepage | On an inner page |
|---|---|---|
<h1> | App name | Page name, a pipe, app name |
| First paragraph | App description | “Page on App.” followed by the app description |
| Page list | Every page, each with a short line | The same list |
Three consequences follow.
- Every inner page’s snapshot is nearly identical. Only the page name at the start changes. To a crawler that gets snapshots, your inner pages look like duplicates.
- The description is only as good as your app description. On one directory site we tested, the homepage snapshot said the app “manages 3 data types including gestors” and “helps you organize, track, and share your work in 1 place,” which reads like a generic app summary. The site is a directory of tax advisers. On another, the description was cut off mid-word.
- None of the page’s own content is in it. No body copy, prices, listings or answers.
Who sees it
- Browsers receive it, hidden by the clipping style, and React replaces it the moment the app renders. Visitors never see it.
- Recognized crawlers see it when no render is ready. In our test of 47 sites, that was 66% of inner pages on a first Googlebot request.
- Unrecognized crawlers and tools always see it: Google’s inspection tool, Bravebot, Meta’s AI crawler, Screaming Frog, Ahrefs and others. See the crawler list.
How to improve the snapshot
You can’t edit the block directly, but you control its inputs.
- Write a real app description. It’s the paragraph on every page. Make it a plain sentence that says what the site is and who it’s for, with a specific detail or two. Base44’s SEO & GEO scan offers an “Improve description” fix; review what it writes.
- Name pages for what they are. Page names become headings and list entries. “Roof repair” is a better page name than “ServicePage2.”
- Set page descriptions. Titles and descriptions you set on the SEO & GEO page’s Meta tags tab feed the page’s head, which every response carries.
- Hide utility pages. Pages you set to non-indexable drop out of the sitemap. The page list in the snapshot comes from your app’s pages, so name utility pages clearly too.
The better fix: make the snapshot rare
The snapshot is a floor. The goal is that crawlers get the rendered page, and Base44 won’t render a page because you ask. Putting a pre-rendering service in front of the domain renders every page before a crawler asks. The options guide compares them.
Check whether a page served the snapshot
curl -s -A 'Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)' \
https://yourdomain.com/about | grep -c 'id="seo-snapshot"'
# 1 = snapshot, 0 = rendered page
What to do next
- Read your homepage’s snapshot with the command above, using a browser user agent to see it every time.
- Rewrite your app description if it reads like a stock summary.
- Rename pages whose names don’t say what they are.
Frequently asked questions
- What is seo-snapshot in Base44?
- A visually hidden block, div id='seo-snapshot' with data-seo-source='builder', that Base44 puts inside every page's root element. It holds a heading, a description and a list of the app's pages, so crawlers that don't run JavaScript get something readable when no pre-rendered page is ready.
- Is Base44's hidden seo-snapshot text a cloaking risk?
- Yes. It's hidden text that visitors and screen readers never get, and when no render is ready it's the whole page recognized crawlers receive. Google accepts a separate crawler version only if it produces similar content, and its spam policies list hidden CSS text and inserting text only for search engines. The snapshot is also thin and near-identical across pages.
- Where does the seo-snapshot text come from?
- From your app's name, your app description and your page names. The heading is the page name plus the app name, the paragraph repeats the app description, and the list names every page. You can improve it by writing a clear app description and page descriptions in Base44.
- Can I remove the seo-snapshot block?
- Base44 doesn't document a setting for it. Turning off Enable SEO for this app removes pre-rendering entirely, which is worse. The better goal is making sure crawlers get the rendered page so the snapshot rarely matters.
Read next
Keep going
-
How Base44 pre-rendering works: a render cache and a fallback
Base44 serves crawlers pre-rendered pages from a cache, by user agent, and a hidden summary when a page isn't cached. What we measured, what fills the cache, and why it hurts SEO.
-
Pre-rendering Base44 apps: the complete guide
Does Base44 pre-render pages for Google and AI crawlers? Only from a cache. How Base44 pre-rendering works, where it leaves gaps, and every way to prerender a Base44 app.
-
How to check what crawlers get from your Base44 app
Commands to test your Base44 pages as Googlebot, GPTBot and other crawlers: detect the seo-snapshot fallback, check renders, record pages, the sitemap and link previews.
-
Which crawlers Base44 pre-renders for, and which it skips
We tested 33 user agents against live Base44 pages. Googlebot, Bingbot, GPTBot, ClaudeBot and PerplexityBot get renders. Bravebot, Meta and Search Console's tester don't.