Indexing

Why Your Notion Site Pages Aren't Getting Indexed (and How to Fix It)

Notion sites are hard to index because the content loads with JavaScript, so crawlers see an empty shell. Here's why, plus the settings and tools that fix it.

SearchOptimo Team5 min read

Notion is a wonderful place to write and a difficult place to get found. The reason is technical and specific: a published notion.site page does not put your content in the HTML it first serves. It loads an app, then fills in your words with JavaScript, and not every crawler waits or runs that code. Here is exactly why Notion sites struggle to index and what actually fixes it.

Why isn't my Notion site getting indexed?

Notion sites fail to index for two reasons that compound: an indexing setting that may be off, and content that loads via JavaScript instead of being in the HTML. First, check the setting. In your Notion site's settings, there is a "Search engine indexing" section with a "Discoverable on the web" toggle, and Notion states that "turning search engine indexing on allows your page to be indexed by search engines like Google." If that is off, nothing else matters. But even with it on, the deeper problem remains: a raw notion.site page is a client-rendered app, so the initial HTML a crawler downloads contains no actual page content. Google can eventually render it, but on a delay, which is why Notion itself warns that sites "can take up to four weeks to be indexed and appear in search results." For non-Google crawlers, the content may never be seen at all. Both issues have fixes, covered below.

Does a raw notion.site page actually contain my content?

No, and this is the core of the whole problem. If you open a notion.site page and use view source to see the raw HTML, you do not find your headings and paragraphs. You find a generic Notion application shell: a <title> that just says "Notion," a boilerplate description identical across every Notion site, a loading skeleton, and a <noscript> message reading "JavaScript must be enabled in order to use Notion." Your real content, the text, the structure, the page-specific title, is injected by JavaScript only after the app boots in a browser. This is single-page-app rendering, and it means the meaningful content of your page is absent from the document a crawler first receives. You can verify it yourself in ten seconds with view source on any Notion site, including big ones. That empty-shell HTML is what every crawler starts from, and it explains both the slow Google indexing and the next problem.

Why do AI search engines miss Notion sites entirely?

AI crawlers miss Notion sites because they do not run JavaScript, and a Notion site's content only exists after JavaScript runs. Google can render JavaScript in a delayed second pass, so a notion.site page usually makes it into Google eventually. The AI crawlers behind today's answer engines do not. Vercel's 2024 analysis of real crawler traffic concluded that "none of the major AI crawlers currently render JavaScript," naming GPTBot, ClaudeBot, and PerplexityBot. They fetch the raw HTML, extract what is there, and move on. For a Notion site, what is there is the generic app shell and the "JavaScript must be enabled" notice, none of your actual content. The result is that a raw Notion site is effectively invisible to ChatGPT, Claude, and Perplexity citations. If AI-search visibility matters to you, this alone is a reason to change how the site is served. We go deeper on this in do AI crawlers render JavaScript.

How do I turn on indexing for a Notion site?

Enabling indexing is a setting, but it is only the first step, not the whole fix. In your Notion site's settings, open the "Search engine indexing" section and turn on "Discoverable on the web." On a paid Notion plan you can also edit the page's title and description for search, which Notion gates to paid plans; the free plan leaves you with the generic, uneditable meta. A few related limits are worth knowing before you rely on native Notion for SEO:

  • No sitemap or robots.txt. Native Notion does not generate an XML sitemap or a robots.txt, both of which help search engines crawl efficiently.
  • A shared subdomain you don't own. Free sites live on a notion.site subdomain, often with a randomized URL, which carries little authority.
  • A canonical pointing away from you. The raw shell hard-codes an og:url of app.notion.com, a signal that points away from your own page.

So the toggle makes a Notion site eligible to be indexed, but it does not fix the rendering, meta, or sitemap gaps.

What's the real fix for Notion SEO?

The durable fix is to serve your Notion content as static HTML through a dedicated tool, so the content and meta exist in the initial response. Tools built for exactly this, such as Super, Potion, and Simple.ink, pull your Notion content and publish it as a fast, crawlable site. Potion, for example, describes rendering "your pages on the server" and serving "clean HTML to site visitors (and search engines)." The concrete things these tools add over raw Notion are the things Google and AI crawlers need:

  1. Server-rendered or static HTML, so your content is in the page source rather than injected by JavaScript.
  2. Real per-page meta tags, title, description, and canonical, instead of generic Notion boilerplate.
  3. An automatic sitemap and robots.txt, which native Notion does not provide.
  4. A custom domain, so you build authority on a domain you own rather than a shared subdomain.

Once your Notion content is served this way, the same indexing rules as any other site apply, and you can verify and monitor it normally. Connect Google Search Console, run URL Inspection, and use "Test Live URL" to confirm Googlebot now sees your text. Our guide on how to check if a page is indexed walks through the tools.

Keeping a Notion site indexed

Once your Notion site is properly served and indexed, the ongoing risk is the same as any site: a page can drop out after a content change, a re-publish, or a domain tweak, and nothing tells you. SearchOptimo re-checks the index status of every URL on a schedule and alerts you the moment a page falls out, so a problem surfaces in a dashboard instead of in your traffic weeks later.

If you are running a Notion-based site you want found, see whether SearchOptimo is worth it for your case, or start free and watch your own URLs.

Frequently asked questions

Why isn't my Notion site getting indexed by Google?
Two reasons stack up. First, the 'Search engine indexing' setting may be off; you have to open Site settings and toggle on 'Discoverable on the web.' Second, and more fundamental, raw notion.site pages render their content with JavaScript, so the initial HTML a crawler receives is a near-empty Notion app shell with no page text. Even with indexing enabled, Notion says sites 'can take up to four weeks' to appear in search.
Does a raw notion.site page contain my content in the HTML?
No. If you view source on a notion.site page, you see a generic Notion app shell, a loading skeleton, and a noscript message reading 'JavaScript must be enabled in order to use Notion,' not your headings and text. The content is injected by JavaScript after the page loads. That is why Google indexes Notion sites slowly and AI crawlers, which do not run JavaScript, often can't see them at all.
How do I make a Notion site SEO-friendly?
Enable 'Discoverable on the web' in Site settings, and edit your page title and description, which Notion allows on paid plans. For real SEO, serve your Notion content as static HTML using a tool like Super, Potion, or Simple.ink. These render the content server-side, add proper per-page meta tags, generate a sitemap and robots.txt that native Notion does not, and let you use a custom domain instead of the shared notion.site subdomain.
Can ChatGPT or Perplexity read my Notion site?
Usually not, if it is a raw notion.site page. The AI crawlers behind ChatGPT, Claude, and Perplexity do not execute JavaScript, so they only receive the empty Notion app shell, not your content. Because a Notion site's text is built on the client, it is effectively invisible to AI answer engines unless you serve it as static HTML through a rendering tool.

Monitor your index status automatically

SearchOptimo re-checks your URLs on a schedule and alerts you when something drops. Start free — no credit card.

Start free

Keep reading