Skip to content
Prerender Base44

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

PartOn the homepageOn an inner page
<h1>App namePage name, a pipe, app name
First paragraphApp description“Page on App.” followed by the app description
Page listEvery page, each with a short lineThe 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.

  1. 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.
  2. Name pages for what they are. Page names become headings and list entries. “Roof repair” is a better page name than “ServicePage2.”
  3. 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.
  4. 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

  1. Read your homepage’s snapshot with the command above, using a browser user agent to see it every time.
  2. Rewrite your app description if it reads like a stock summary.
  3. Rename pages whose names don’t say what they are.

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

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