How it works
Methodology
CrawlWise uses a versioned checkset. The current version is 0.4.10. Scores are reproducible: the same pages, checkset and scan region should produce the same result, apart from timing noise.
A report keeps the checkset version it was scanned with, so updating the checkset never rewrites older reports.
What a scan covers
Each scan audits one to three pages on the same host: the URL you submit and up to two key
pages you add. CrawlWise checks robots.txt for CrawlWiseBot before
auditing any page, fetches the raw HTML and supporting files, then loads each page in
Chromium at a 1365 × 900 desktop viewport. It does not sign in, submit forms, interact with
controls, scroll the page or crawl the rest of the site.
Site checks run once: robots.txt, AI bot access, sitemap, resource access, llms.txt, HTTPS and security headers. Page checks run for every audited page and are merged for the score: a check fails if it fails on any page, warns if it warns anywhere, and passes only if every page passes. Each page also gets a diagnostic page score, and the report lists page findings separately.
The scanner identifies itself as CrawlWiseBot/1.0 and runs from an EU region. A
bot challenge or access denial is reported as blocked, not as a failed score.
A consent wall is reported as a content finding instead.
Scoring
Each check has a weight. A pass earns the full weight, a warning half, a failure zero. Checks that do not apply are excluded from the denominator. If less than 80% of the weight can be evaluated, the scan is marked incomplete and no score is shown.
Four critical failures cap the score: a noindex page caps at 30, missing HTTPS at 40, blocking all search and citation bots at 50, and serving no main content without JavaScript at 55.
Check statuses
| Status | Meaning | Scoring |
|---|---|---|
| Pass | The page meets the criterion. | Full weight |
| Warning | The page partially meets it or is close to a boundary. | Half weight |
| Fail | The page misses the criterion. | Zero |
| N/A | The check does not apply, for example no dated structured data. | Excluded |
| Blocked | The target or a specific check was blocked. | Excluded |
| Error | The check could not run. | Excluded |
A fully blocked target has no score. Individual blocked or errored checks are excluded from the denominator; too many of them leave too little weight to evaluate and mark the scan incomplete.
Grades
The score maps to a letter grade so reports are easy to compare at a glance.
| Grade | Score | What it means |
|---|---|---|
| A | 90–100 | Excellent agent readiness. The page is easy to fetch, read and trust. |
| B | 80–89 | Strong result. A small number of fixes would remove the remaining friction. |
| C | 70–79 | Fair. Several checks need attention before the page is reliably agent-ready. |
| D | 60–69 | Weak. Important signals are missing or broken. |
| E | 50–59 | Poor. Most checks need work. |
| F | 0–49 | Critical. The page is likely hard or impossible for agents to use. |
Categories
| Category | What it covers | Weight |
|---|---|---|
| Discovery | Can crawlers and AI agents find the page? Covers robots.txt, citation bot access and sitemap discovery. | 27 |
| Content | What a visitor or agent gets without JavaScript: main text, page structure, boilerplate and consent walls. | 20 |
| Schema | Structured data: JSON-LD parses, core fields are present and dates are valid. | 15 |
| Agent | Agent-specific signals: a Markdown version of the page and an llms.txt file. | 12 |
| Performance | Fetch and render performance: TTFB, HTML payload, caching, resource budget and lab LCP/CLS. | 15 |
| Trust | Security and trust: HTTPS, HSTS, security headers and redirect behaviour. | 8 |
| Freshness & A11y | Machine-readable dates and automated accessibility checks. | 3 |
| API & agent protocols | Discovery documents for sites with an API or app: API catalog, OAuth metadata, MCP and A2A cards, agent skills and WebMCP tools. Not scored. | 0 |
Performance measurements
Performance checks include Time to First Byte, HTML size and caching, plus laboratory Largest Contentful Paint (LCP) and Cumulative Layout Shift (CLS) measurements from Chromium. The scan also records the page's network requests, total transfer, largest resources and render-blocking scripts. It names the element behind LCP and the top layout-shift sources. The scan uses an unthrottled browser and observes the initial viewport without simulated user interaction. These measurements help identify regressions; they are not Google PageSpeed Insights scores or field Core Web Vitals.
LCP passes at 2.5 seconds or less and CLS at 0.1 or less. Metrics are captured before the evidence screenshots, so a full-page capture cannot turn lazy below-the-fold images into a late LCP. Network, device and page state can change results between scans. Interaction to Next Paint (INP) is not reported because a single automated visit cannot represent real user interactions.
The thresholds follow published Core Web Vitals boundaries. Google's field classification uses the 75th percentile across visits, so this single-scan result is a diagnostic signal, not a field classification.
Page resources. The resource check passes at or below 1 MB transfer and 50
requests with no render-blocking scripts. It warns up to 2 MB, 80 requests and two
render-blocking scripts, and fails above those limits. Sizes include response headers; a
render-blocking script is a
<script src> without async or defer. Module
scripts (type="module") are deferred by default and are not counted as
render-blocking.
Evidence and screenshots
Every check keeps machine-readable evidence. The report shows labelled values and thresholds, with a short explanation for performance metrics, and keeps the raw JSON available. Reports include an initial desktop viewport screenshot, a full-page desktop capture and a mobile viewport screenshot. Screenshots are private evidence and expire after seven days. The "What an agent sees" section shows the text extracted from HTML and, when the site serves it, the Markdown representation that agents can request or discover through a link. Reports from key-page audits show a score and findings for each audited page alongside the merged scan result.
Checks in 0.4.10
Discovery
| Check | What it verifies | Weight |
|---|---|---|
| discovery.robots | robots.txt is reachable and valid | 2 |
| discovery.ai-bots | AI search and citation bots are allowed | 6 |
| discovery.ai-bot-access | AI crawlers get the same page as a regular fetch | 2 |
| discovery.content-signal | Content usage preferences for AI are declared (experimental) | 0 |
| discovery.sitemap | sitemap.xml is valid and current | 2 |
| discovery.indexability | The page is indexable and has a consistent canonical | 8 |
| discovery.redirects | Redirects are permanent and short | 3 |
| discovery.resource-access | robots.txt allows CSS and JavaScript needed for rendering | 3 |
| discovery.hreflang | hreflang annotations are complete | 1 |
Content
| Check | What it verifies | Weight |
|---|---|---|
| content.no-js | Main content is available without JavaScript | 7 |
| content.structure | Document structure is extractable | 5 |
| content.boilerplate | Main content is not buried in boilerplate | 1 |
| content.consent-wall | Content is not hidden behind a consent wall | 1 |
| content.images | Content images are described and efficient | 3 |
| content.links | Internal links are crawlable and descriptive | 2 |
| content.social | Social preview metadata is complete | 1 |
Schema
| Check | What it verifies | Weight |
|---|---|---|
| schema.parses-core | JSON-LD parses and describes the page | 8 |
| schema.dates | Structured data dates are valid | 3 |
| schema.entities | Structured data describes the page entity | 4 |
Agent
| Check | What it verifies | Weight |
|---|---|---|
| agent.markdown | Markdown is available for agents | 8 |
| agent.llms-txt | llms.txt directory is present (experimental) | 2 |
| agent.markdown-negotiation | Markdown is advertised and negotiated correctly | 2 |
API & agent protocols
For sites with an API, an app or actions agents can take. These checks carry no weight, appear in their own report tab, and a content site can ignore them.
| Check | What it verifies | Weight |
|---|---|---|
| api.webmcp | WebMCP tools are complete (experimental) | 0 |
| api.catalog | An API catalog lists the site's APIs (experimental) | 0 |
| api.oauth-discovery | OAuth or OpenID Connect discovery is published (experimental) | 0 |
| api.oauth-protected-resource | OAuth protected resource metadata is published (experimental) | 0 |
| api.mcp-server-card | An MCP server card describes the site's MCP server (experimental) | 0 |
| api.a2a-agent-card | An A2A agent card describes the site's agent (experimental) | 0 |
| api.agent-skills | An agent skills index lists the site's skills (experimental) | 0 |
| api.ard | An ARD manifest lists the site's agent resources (experimental) | 0 |
Performance
| Check | What it verifies | Weight |
|---|---|---|
| perf.ttfb | Time to first byte is reasonable | 2 |
| perf.payload | HTML payload is small and compressed | 2 |
| perf.caching | HTML has validators and cache headers | 2 |
| perf.resources | Page resources stay within a reasonable budget | 3 |
| perf.lcp | Largest Contentful Paint is under 2.5 seconds | 3 |
| perf.cls | Cumulative Layout Shift is under 0.1 | 3 |
Trust
| Check | What it verifies | Weight |
|---|---|---|
| trust.https | HTTPS, HSTS and redirects are correct | 6 |
| trust.headers | Security headers are present | 2 |
Freshness & A11y
| Check | What it verifies | Weight |
|---|---|---|
| freshness.signals | Freshness signals are present | 1 |
| a11y.axe | Automated accessibility checks pass | 2 |
What this is not
CrawlWise is not a ranking tool and does not measure brand mentions in AI answers. It is a technical audit of what a crawler or agent can fetch, parse and quote. A high score does not guarantee citations; a low score is a concrete list of things to fix.
llms.txt is marked experimental because it is a community proposal, not a
standard, and absence of the file does not block search or citation.
Last updated .