Short answer

A crawlability test shows whether a crawler can reach a page and what it gets. Convertica's free crawlability test reads a page's HTML before any JavaScript runs and reports the text, links, headings and structured data in it, plus any noindex, canonical, redirect or robots.txt rule in the way. It renders nothing, and cannot say whether a page is indexed.

  • Enter a page's address and Convertica's server fetches it once, or paste the page source and the test runs in your browser.
  • It reads the HTML as sent and runs no JavaScript, so what it shows is what a non-rendering crawler receives, not what a browser displays.
  • Google documents that Googlebot renders JavaScript. The crawler pages of OpenAI, Anthropic and Perplexity do not say whether theirs do.
  • Paste the rendered DOM as well and the test lists the text and links that exist only after JavaScript runs.
  • It fetches under its own name, so it cannot see a firewall or bot protection rule aimed at a crawler's name or IP address.

Crawlability test: read a page as a crawler gets it

Free, no sign-up. Enter a page's address and Convertica's server fetches it once, without running JavaScript. Or paste the page source: that runs in your browser and what you paste is not sent anywhere. The form starts with a made-up page.

To fetch the page, enter its full address and press the button. With a pasted source the address is optional: it lets the test tell internal links from external ones and check where the canonical points.

Open the page, choose View Page Source (Ctrl+U in most browsers, Cmd+Option+U on a Mac), select all, copy and paste it over this made-up example. Use the source, not the Elements panel of the developer tools: that panel shows the page after JavaScript.

To list what exists only after JavaScript runs: open the developer tools, right-click the html element in the Elements panel, choose Copy, then Copy outerHTML, and paste it here.

Text in the HTML before JavaScript runs

17 words

No noindex found in the HTML.

Canonical: https://www.example.com/teas/. Add the page URL to see whether it points to this page.

4 links with a page address, 1 h1, 1 JSON-LD block.

2 signs that JavaScript adds content, listed below.

Example result, for the made-up page above

Indexing signals in the HTML

noindex
No noindex found in the HTML. A pasted source has no response headers, so an X-Robots-Tag header is not checked.
nofollow for the whole page
Not found.
Robots meta tags
robots: index, follow
Canonical
https://www.example.com/teas/. Add the page URL to see whether it points to this page.
hreflang links
None

Title and description

Title
Loose Leaf Teas | Example Tea Co (32 characters)
Meta description
Made-up page for the crawlability test: a tea shop category whose product list is added by JavaScript. (102 characters)
Language
lang="en"

Text in the HTML

Words
17
Characters
97, in 4 blocks of text
The text starts
"Example Tea Co Teas About Loose leaf teas Twelve teas, shipped from our made-up warehouse. Follow us"
Inside noscript
8 words in 1 noscript element, not counted above: "This shop needs JavaScript to show its products."

Counted: text outside the head that is not inside script, style, template, svg, iframe or textarea. No CSS is applied, so text a browser would hide is counted too.

Headings

h1
1: "Loose leaf teas"
All headings
1 (1 h1)

Outline, in source order

  • h1: Loose leaf teas

Links and images

Links with a page address
4 of 4 a elements
Relative and absolute
3 relative, 1 absolute. Add the page URL to split them into internal and external.
rel nofollow
1
Not links to a page
None
Images
1 img element: 1 with no alt attribute, 0 with an empty alt

Structured data

JSON-LD blocks
1, all parsed as JSON
Top-level types
Organization

Signs that JavaScript adds content

Script elements
1: 1 loaded from a file, 0 inline
Inline script and data
0 characters, beside 97 characters of text
Framework markers
None found

Found

  • An element with id="app" is in the HTML with no text inside it. Single-page apps fill an element like this with JavaScript.
  • A noscript element says: "This shop needs JavaScript to show its products."

How to test a website's crawlability

To test a website's crawlability, check one page at a time in the order a crawler meets it: may the crawler fetch the address, does the address answer with the page, does anything in the response say not to index it, and is the content in the HTML it receives. This crawlability test covers each step it can read from the page.

  1. Pick the pages that matter

    Test one of each kind: the homepage, a category or service page, a product or pricing page, and an article. Templates differ, so a result for one says little about the others.

  2. Give the test the page

    Enter the address and press "Fetch and test this URL", or paste the page source. Pasting is the way for a page behind a login, on a staging server, or on a site that turns unknown fetchers away.

  3. Read the blockers first

    Look at the status, the redirects and the robots.txt rows, then at the noindex and canonical rows. A page that answers with an error, redirects in a loop, is disallowed for a crawler or carries a noindex has a problem that no amount of content fixes.

  4. Read what is in the HTML

    Check that the words, the h1, the links and the JSON-LD you expect are there. Search the first lines of text for the thing the page sells or explains. If it is missing, it arrives by JavaScript or sits in an image.

  5. Compare with the rendered DOM

    Paste the rendered DOM into the second box. The test lists the blocks of text, the links and the headings that exist only after JavaScript runs, and any change to the title, description, canonical or robots meta.

  6. Confirm with the search engine's own tool

    For Google, run the live test in Search Console's URL Inspection tool. It shows the HTML and a screenshot from Google's own fetch, which no outside tool can reproduce.

What does the crawlability test check?

The crawlability test checks what one page hands to a crawler that reads HTML and runs nothing. It reports the response status, redirects and robots.txt rules in URL mode, and in both modes the indexing signals in the head, the title and description, the words of text, the headings, the links, the images and the structured data. Each item is stated as what was found.

What the test reads, and why it matters to a crawler
CheckWhat the test readsWhy it matters
Status and redirects URL modeThe status code, each redirect on the way (up to five), the final address and the content typeGoogle says it does not use the content of a URL that answers with a 4xx status, and that its crawlers follow up to 10 redirect hops by default
robots.txt URL modeThe host's robots.txt, applied to the page's path for Googlebot and the 19 other crawlers in the AI visibility checker's listA crawler that honors robots.txt does not fetch a disallowed page at all
X-Robots-Tag header URL modeThe header's value, and whether it carries a noindex or nofollow and for which crawlerThe header does the job of a robots meta tag, and is easy to miss because it is not in the page source
Robots meta tagsEvery robots and crawler-named meta tag, such as googlebot, and where a noindex or nofollow was foundA noindex asks a search engine to leave the page out of its index
CanonicalThe canonical link, whether there is more than one, and whether it points to this page when the address is knownA canonical that points elsewhere tells a search engine another URL is the one to index
Title and descriptionThe title element and the meta description, with their lengths in charactersIf they are missing from the HTML, a non-rendering crawler has none
TextWords and characters of text outside scripts and styles, how the text starts, and the words inside noscript, counted apartThis is the content a text-only fetch receives
HeadingsHow many h1 elements, and the outline of the first 40 headings in source orderHeadings are how a machine finds the question a passage answers
LinksLinks with a page address, internal and external, rel="nofollow", and a elements with no usable hrefGoogle says it can only discover links that are a elements with an href attribute
ImagesThe img elements, and how many have no alt attribute or an empty oneAlt text is the only description of an image a text reader gets
Structured dataJSON-LD blocks, whether each parses as JSON, and their top-level typesMarkup that does not parse cannot be used. To check the properties of each type, use the schema markup validator
JavaScript signsScript counts, an app element with no text in it, a noscript message that asks for JavaScript, and framework markersThey suggest where content may arrive only after scripts run. The rendered DOM comparison shows whether it does

How the text is counted: everything outside the head that is not inside a script, style, template, svg, iframe or textarea element. A word is a run of characters between spaces with at least one letter or digit in it. No CSS is applied, so text that a browser hides still counts, because a fetcher that applies no CSS reads it. There is no pass mark: how much text a page needs depends on the page.

How to read the result: three worked examples

Read a crawlability test result from the top: blockers, then signals, then content. The made-up page in the form is a shop category whose product list is built in the browser. Its numbers illustrate how the test counts. They are not targets.

Worked example 1: what is in the source

Tested with its address, https://www.example.com/teas/, the example source holds 17 words of text in 4 blocks: the navigation, the h1, one sentence and a footer link. It has 4 links with a page address (3 internal, 1 external and marked nofollow), 1 image with no alt attribute, and 1 JSON-LD block of type Organization. The canonical points to the page itself and no noindex was found.

The test also reports two signs about JavaScript: an element with id="app" that has no text inside it, and a noscript element whose 8 words say the shop needs JavaScript. Those words are shown but kept out of the count of 17. Nothing here proves the products are missing for every crawler. It shows they are not in the HTML.

Worked example 2: the source compared with the rendered DOM

The second version of the example is the same page as a browser holds it after its script has run, with the product list inside the app element. Pasted into the second box, it gives this comparison:

The made-up page before and after JavaScript (an illustration of the comparison, not a benchmark)
MeasuredIn the sourceAfter JavaScriptOnly after JavaScript
Words of text173316, in 5 blocks
Links with a page address473
Headings132: Green teas, Black teas

The 3 product links and both product headings exist only after JavaScript runs. A crawler that renders, as Google documents Googlebot does, can reach them. A crawler that only reads the HTML gets 17 words and no product. A block of text counts as new when no block in the source has exactly the same text, so a sentence that JavaScript rewrites shows up as new.

Worked example 3: how robots rules are read

A noindex can sit in a meta tag or in the X-Robots-Tag response header, and it can address every crawler or one by name. The test reports where it found one and for whom:

What the test reports for six robots rules
In the page or its responseWhat the test reports
<meta name="robots" content="index, follow">No noindex and no nofollow
<meta name="robots" content="noindex">noindex for every crawler
<meta name="googlebot" content="noindex">noindex for Googlebot
<meta name="robots" content="none">noindex for every crawler, nofollow for every crawler
X-Robots-Tag: noindexnoindex for every crawler
X-Robots-Tag: googlebot: nofollow, otherbot: noindex, nofollownoindex for another crawler only, nofollow for Googlebot

Google documents that none means noindex and nofollow together, and that a robots tag and a googlebot tag on the same page are combined when Googlebot reads them. The rules are in Google's robots meta tag specification. In the last row the noindex addresses a crawler called otherbot, so the test does not report the page as noindexed for Googlebot.

What is the difference between crawlability and indexability?

Crawlability is whether a crawler may and can fetch a page. Indexability is whether a page that was fetched may be stored and shown in results. Robots.txt, the response status and redirects decide the first. A noindex and the canonical decide the second. A page needs both, and the two sets of rules can cancel each other out.

What each control does, and what it does not do
ControlWhere it livesWhat it controlsWhat it does not do
robots.txt DisallowOne file at the root of each hostWhether a crawler that honors it fetches the URLKeep the page out of the index. Google says robots.txt is not a mechanism for keeping a page out of Google
noindexA robots meta tag, or the X-Robots-Tag headerWhether a fetched page may be indexedWork on a page that robots.txt blocks: the crawler never fetches it, so it never sees the rule
CanonicalA link element in the head, or a headerWhich of several similar URLs you want indexedBlock anything. Google treats it as a signal about the preferred URL
Status codeThe response itselfWhether there is a page to read at allExplain itself: a 403 from a firewall and a 403 from the application look the same from outside

The most common trap is the first two rows used together. A page that is disallowed in robots.txt and also carries a noindex stays blocked from crawling, and Google's documentation on blocking indexing says the noindex only takes effect when the page is not blocked by robots.txt. To take a page out of a search index, let it be crawled and serve the noindex.

Passing both is still not a promise. Google describes search as three stages, crawling, indexing and serving, and says not every page makes it through each one. This test reads the first two from your side of the fence. It cannot tell you whether a page is in an index.

See your page the way a visitor's browser loads it

This test reads the HTML and stops. The free CRO audit loads your page in a real browser at phone and desktop size and scores eight checks, AI visibility and agent readiness among them. Enter your website and email, and watch it run.

Which crawlers run JavaScript?

Googlebot runs JavaScript: Google documents that it queues pages and renders them in a headless Chromium. Apple says Applebot may render pages too. The crawler pages that OpenAI, Anthropic and Perplexity publish do not say whether their crawlers run JavaScript. Google's own advice covers the gap: it calls server-side rendering or pre-rendering a great idea because "not all bots can run JavaScript".

What each operator's own documentation says about JavaScript
OperatorCrawlersWhat its documentation saysSource
GoogleGooglebotRenders. Google describes three phases for JavaScript pages (crawling, rendering, indexing): Googlebot puts a page in a queue, and a headless Chromium later renders it and runs its JavaScript. The page can wait in that queue for seconds or for longer.Google: JavaScript SEO basics
AppleApplebotMay render. Apple says Applebot may render a site's content within a browser, and that blocking the JavaScript and CSS a page needs in robots.txt can stop it rendering the content properly.Apple: About Applebot
OpenAIGPTBot, OAI-SearchBot, ChatGPT-UserDoes not say. OpenAI's crawler page lists each crawler's purpose, user agent and IP addresses, and says nothing about JavaScript or rendering.OpenAI: Overview of OpenAI Crawlers
AnthropicClaudeBot, Claude-SearchBot, Claude-UserDoes not say. Anthropic's page on its crawlers covers what each is for and how to block it, and says nothing about JavaScript or rendering.Anthropic: Does Anthropic crawl data from the web?
PerplexityPerplexityBot, Perplexity-UserDoes not say. Perplexity's crawler page covers user agents, IP addresses and firewall settings, and says nothing about JavaScript or rendering.Perplexity: Perplexity Crawlers

"Does not say" means exactly that: the page neither claims nor denies it. It is not evidence that a crawler skips JavaScript, and operators change how their crawlers work without notice. The practical reading is the same either way. Content in the HTML reaches every crawler on the first fetch, and content that needs JavaScript reaches only the ones that render, after a wait.

Rendering does not rescue everything, even for Google. Google says that when it meets a noindex in the HTML it may skip rendering and JavaScript altogether, so a script that removes a noindex may never run. The source a crawler receives first should already say what you mean.

What this crawlability test cannot see

This crawlability test reads HTML and nothing else. It does not run JavaScript, does not fetch as any search engine or AI company's crawler, and does not know whether a page has been crawled, indexed or cited. Treat it as a fast first pass and confirm what matters with the search engine's own tools.

  • It is not a Googlebot simulator. Googlebot renders pages and fetches from Google's own addresses. This test shows the HTML before rendering. People search for "googlebot simulator", "view page as Googlebot" and "fetch as Google" when they want that first look, and for the first look this is the right kind of tool. For Google's own view, only Search Console has it.
  • Fetch as Google no longer exists. It was a tool in the old Search Console, which Google retired. The URL Inspection tool's live test is what Search Console offers now.
  • It fetches as itself. URL mode sends a user agent that names Convertica and links to this page. It never pretends to be Googlebot, GPTBot or anyone else, and it comes from Cloudflare's network, not a crawler's. So it cannot see a firewall, CDN or bot protection rule that treats a crawler differently by name or IP address, in either direction: a site may block this test and welcome Googlebot, or the reverse.
  • URL mode has limits. It follows up to five redirects, waits 8 seconds for each fetch and 20 in all, reads the first 1.5 MB and the first 20,000 elements of a page, and allows 10 checks per 10 minutes per IP address. It fetches public pages on default ports only. Paste mode reads up to 3,000,000 characters and has no rate limit.
  • It reads one page. It does not crawl a site, follow links, find orphan pages or read a sitemap.
  • It is a scanner, not a browser's parser. It does not repair broken markup the way a browser does, so badly nested HTML can be counted a little differently from how a given crawler reads it.
  • A pasted source is your browser's copy. A server can send different HTML to different visitors. What you paste is what your browser was given, which may not be what a crawler is given.

How to fix what the test finds

Fix crawlability problems in the order a crawler meets them: access, then the response, then indexing signals, then content. A fix further down the list does nothing while something above it still stops the crawler. None of these steps guarantees a ranking or a citation. They remove reasons a page cannot be read.

  1. Blocked in robots.txt. Remove or narrow the Disallow rule, and remember that a crawler with its own group ignores the * group. The AI visibility checker shows which rule decides for each AI crawler, and the robots.txt generator writes a file with the rules you choose.
  2. An error status or a long redirect chain. Make the address answer 200 directly. Point internal links, the canonical and the sitemap at the final address, not at one that redirects.
  3. A noindex you did not intend. Find where it comes from: the template, an SEO plugin setting, a staging flag left on, or a server rule that adds the X-Robots-Tag header.
  4. A canonical that points elsewhere. If this page should be indexed, make its canonical its own address. If it should not, the canonical is doing its job.
  5. Content that exists only after JavaScript. Render it on the server or pre-render it, so the facts are in the first HTML response: what is sold, the price, availability, policies and contact details. This is the fix Google itself recommends for crawlers that do not run JavaScript.
  6. Links that are not links. Navigation built from buttons, click handlers or javascript: addresses gives a crawler nothing to follow. Use a elements with a real href.
  7. JSON-LD that does not parse. Fix the syntax first, then check each type's properties with the schema markup validator. For a page with a visible FAQ, the FAQ schema generator writes the block.

After a fix, test again, then ask the search engine to look. Google says crawling can take anywhere from a few days to a few weeks after you ask it to recrawl, and that asking does not guarantee inclusion.

Why crawlability comes before conversion

A page converts only the visitors it gets, and a page that crawlers cannot read gets fewer of them from search and from AI answers. The same holds for AI agents that shop or research on a person's behalf: an agent that reads the HTML and finds no price cannot compare your offer. The AI agent readiness checklist covers that wider list, and AI traffic tracking shows how to see the visits AI assistants already send.

Being readable is the entry ticket, not the result. Once people arrive, the page still has to persuade them, which is what the free CRO audit measures: it loads the page in a real browser and scores the first screen, calls to action, forms, trust, mobile experience and speed, with AI visibility and agent readiness as one of its eight checks.

See all free tools and how they fit together.

Crawlability test FAQ

What is a crawlability test?

A crawlability test checks whether a crawler can reach a page and what it gets when it does. A full test looks at the response status and redirects, robots.txt rules, noindex and canonical signals, and what the HTML holds before any JavaScript runs: text, links, headings and structured data. A page a crawler cannot fetch or read cannot be indexed or quoted.

How do I check if Google can crawl my page?

Use the URL Inspection tool in Google Search Console and run its live test: it reports whether Google's own inspection crawler can fetch the page and shows the HTML and a screenshot it got. This crawlability test is the quick first pass before that: it shows what any non-rendering fetch receives and whether a noindex, canonical or robots.txt rule is in the way.

Is this a Googlebot simulator?

No. Googlebot renders pages in a headless Chromium and fetches from Google's own IP addresses. This test does neither: it reads the HTML as sent, before JavaScript, and fetches under Convertica's own name. It shows what a crawler that runs no JavaScript receives. For what Google fetched and rendered, use the URL Inspection tool in Search Console.

What does Googlebot see on my page?

Googlebot first receives the HTML your server sends, which is what this test reads. Google then queues the page for rendering, and a headless Chromium runs its JavaScript, so Google can also see content that scripts add. Only Google's URL Inspection tool shows what Google actually fetched and rendered for a URL you have verified in Search Console.

Does Google render JavaScript?

Yes. Google documents three phases for JavaScript pages: crawling, rendering and indexing. Googlebot queues a page for rendering, which can take seconds or longer, and a headless Chromium then runs the JavaScript. Google still calls server-side rendering or pre-rendering a great idea, because it is faster for users and crawlers and, in its words, "not all bots can run JavaScript".

Do AI crawlers run JavaScript?

Their operators mostly do not say. The crawler pages published by OpenAI, Anthropic and Perplexity describe each crawler's purpose, user agent and IP addresses and say nothing about JavaScript or rendering. Apple says Applebot may render content within a browser. The safe reading: put the facts you want read in the HTML, where every crawler gets them.

What is the difference between crawlability and indexability?

Crawlability is whether a crawler may and can fetch a page: robots.txt, the response status and redirects decide it. Indexability is whether a fetched page may be stored and shown: noindex and the canonical decide it. They interact. Google says a noindex only works when the page is not blocked by robots.txt, because a blocked page is never fetched, so the rule is never seen.

Does the test check noindex and canonical tags?

Yes. It lists every robots meta tag in the HTML, reads the X-Robots-Tag header in URL mode, and says where a noindex or nofollow was found and for which crawler. It shows the canonical link and, when it knows the page's address, whether the canonical points to that page or to another one.

Why does my page look fine in a browser but nearly empty in this test?

Because the browser ran the page's JavaScript and this test did not. When a page is built in the browser, the HTML the server sends holds little more than an empty element and script tags. Paste the rendered DOM into the second box and the test lists the text and links that exist only after JavaScript runs.

Can a firewall or CDN block Googlebot when robots.txt allows it?

Yes. robots.txt is a request that crawlers choose to follow, while a firewall, CDN or bot protection rule acts on the request itself, by IP address or user agent, before any page is served. This test cannot see such a rule, because it fetches under its own name. Check your firewall's bot settings, your server logs and the URL Inspection live test.

How do I extract the text a crawler reads from a web page?

Paste the page source into this test: it reports the words of text in the HTML, how the text starts, the headings in order and the links, with scripts, styles and markup removed. For the full text on your own machine, a text-only fetch such as curl piped through an HTML-to-text converter gives the same kind of view.

Is the crawlability test free, and where does my data go?

It is free, with no sign-up. Pasted source is read by a script in your browser and is not sent anywhere. In URL mode the address you enter is sent to Convertica's server, which fetches the page once and returns the report. The address, the page and the report are not stored. To limit abuse, URL mode allows 10 checks per 10 minutes per IP address, counted against a keyed hash of the address that expires after those 10 minutes.

Find out what is costing you conversions

Enter your website and email and the audit starts right away. Watch it check your page live: eight checks, each scored out of 100, and three fixes you can make now.