Make the next click instant
Speculation Rules tell Chromium browsers which pages to prefetch or prerender before a click. This checks that yours are valid, discoverable, and actually firing.
Free, no signup. We load your page in a real Chromium and report what the browser actually speculates.
Get found on Google & AI
Ex-Google Search engineers show you what to fix. Book a free, no-obligation call.
searchbrothers.com →What it checks
Where rules live
Finds rules in the Speculation-Rules header, inline script tags in the head and body, and rule sets injected after JavaScript runs.
Full WHATWG check
Validates every field, source, urls, where predicates, and eagerness, plus the newer form_submission and prerender_until_script keys, against the HTML Standard.
Real-world health
Fetches each speculated URL twice, plain and with Sec-Purpose, to catch status errors and servers that should defer side effects during speculation.
What the browser does
Runs the page in a real Chromium and reads Preload CDP events, so a cancelled prerender comes back with the browser's own reason.
Delivery and CSP
Checks external JSON files for the right MIME type and CORS, and inline rules against the page Content Security Policy.
Cap and budget
Compares each rule's URL count against Chromium's FIFO caps per eagerness level and flags rules that overflow the budget.
Free Speculation Rules Debugger
See exactly how Chromium handles a page's Speculation Rules — the modern replacement for <link rel="prerender"> that lets pages tell the browser which URLs to prefetch or prerender, producing near-instant navigations. The Speculation Rules Debugger checks rules delivered via the Speculation-Rules HTTP response header or inline <script type="speculationrules"> (before and after JavaScript runs, so JS-injected rule sets are caught), validates every field against the WHATWG HTML Standard, and probes each speculated URL for real-world compatibility.
Every speculated URL is fetched twice — once plain, once with Sec-Purpose: prefetch — to detect servers that should defer side-effects (analytics, OTP emails, cart state, logout) during speculative loads. Cross-origin prerender targets are checked for Supports-Loading-Mode: credentialed-prerender. No-Vary-Search response headers are parsed and correlated with each rule's expects_no_vary_search hint. The initial response is inspected for Clear-Site-Data directives (including "prefetchCache" / "prerenderCache") that invalidate speculation state, and for a Content Security Policy that allows inline speculation rules (via 'inline-speculation-rules', a nonce, or a hash).
The actual browser behaviour is observed live via the Chrome DevTools Protocol — Preload.prefetchStatusUpdated and Preload.prerenderStatusUpdated — so if the browser cancels a prerender, you see the reason. Chromium's FIFO limits (50 prefetch / 10 prerender at immediate, 2 at eager/moderate/conservative) are enforced as warnings when a rule declares more URLs than the applicable eagerness cap.
What the Speculation Rules Debugger checks
- Discovery: HTTP Speculation-Rules header (parsed as a Structured Fields list of URLs, multi-file supported), inline
<script type="speculationrules">in head vs body, and JS-injected rule sets that only appear after page scripts run. - Transport: external JSON files are checked for the required
application/speculationrules+jsonMIME type and, when cross-origin, a proper Access-Control-Allow-Origin response. Inline scripts are checked against the page's Content Security Policy. - Full WHATWG validation: every top-level and per-rule field —
source,urls,where(includingand/or/notpredicates,href_matches,selector_matches),eagerness,relative_to,referrer_policy,requires,expects_no_vary_search,target_hint, andtag. Chromium additions are covered as well:form_submission(Chrome 151+) and theprerender_until_scriptorigin trial (Chrome 144-150). - Speculated URL health: status code, redirects, and Vary inspection. 204/205 responses are flagged as prerender-blocking.
- Server-side side-effect safety: baseline vs Sec-Purpose response diff surfaces servers that need to defer work (cart, sign-out, analytics) during speculation.
- Document-rule matching: every
<a href>on the page is evaluated against the predicate to preview which links Chromium would actually speculate, with state-changing URLs (/logout,/cart, etc.) highlighted. - Live browser activity: Chromium runs the page with Preload CDP events enabled, then reports every prefetch/prerender attempt, including cancel reasons for failed prerenders.
Frequently Asked Questions
What are Speculation Rules?
The Speculation Rules API is a JSON-based way for a page to declare which URLs the browser should prefetch or prerender before the user navigates. It replaces legacy hints like <link rel="prerender"> and supports rich predicates — match by URL pattern, CSS selector, or boolean logic.
How are rules delivered?
Three ways: the Speculation-Rules HTTP response header pointing to an external JSON file (MIME must be application/speculationrules+json), an inline <script type="speculationrules">, or JS-injected rules added at runtime by analytics/CMS code. The Speculation Rules Debugger detects all three.
What is the difference between prefetch and prerender?
Prefetch downloads the response body only — no subresources, no JavaScript execution — giving a fast render on navigation. Prerender fully loads and renders the page in an invisible background tab, so activation is near-instant but the cost is much higher (similar to an iframe). Chrome documents both behaviours in detail.
How do servers detect speculation requests?
The browser sends Sec-Purpose — prefetch or prefetch;prerender. Servers should let the request complete but defer side-effects: sign-out, cart changes, OTP sending, usage-counter increments, ad conversion tracking. Responses should also include Vary: Sec-Purpose so intermediate caches don't mix speculative and real responses.
What is No-Vary-Search and why does it matter?
No-Vary-Search lets a server tell the browser that certain query parameters (for example, utm_source, utm_medium) don't change the response, so a prefetched URL can match the real navigation even if tracking params differ. The rule-level expects_no_vary_search hint lets the browser skip a duplicate fetch while the prefetch is still in-flight.
Why would a prerender get cancelled?
Common reasons: non-2xx status (204/205 explicitly block prerender), cross-origin target without Supports-Loading-Mode: credentialed-prerender, memory pressure, Save-Data/Energy Saver, or site-level CSP blocking the inline rules. The Speculation Rules Debugger surfaces the Chromium cancellation reason directly from the Preload CDP events.
How many URLs can I speculate at once?
Chromium caps speculation per eagerness level: immediate allows 50 prefetch and 10 prerender; eager, moderate, and conservative allow 2 each. Excess URLs are evicted FIFO — a rule that lists 100 URLs at immediate will silently drop the last 50.
Which browsers support Speculation Rules?
Speculation Rules is a Chromium feature. Chrome and Edge support prefetch from version 109 and prerender from 121, as do other Chromium browsers like Opera and Brave. Firefox and Safari do not support the Speculation Rules API. The Speculation Rules Debugger runs a real Chromium instance, so the reported behaviour matches what those users actually see.
Are newer additions like form_submission and prerender_until_script supported?
Yes. form_submission (Chrome 151+) marks a prerender rule as targeting GET form submissions, such as a search form navigating to /search?q=term. The debugger validates the field type and flags misuse on prefetch or document rules. prerender_until_script (origin trial in Chrome 144 to 150) renders a page and loads subresources while pausing at the first blocking script. Rules under the key are validated like any other action, with a warning when a prefetch fallback is missing.
Is the Speculation Rules Debugger free?
Yes — completely free, no account required.
Disclaimer
This website is developed by technical SEO consultant and ex-Google engineer Fili.
Bugs will happen and despite best efforts to maintain the code base and data quality, no guarantees can and/or will be given. Data may be incomplete, lost and/or errors may occur. This is a personal website and for-fun project. Use at your own risk.