Speculation rules on 27 homepages: two ship them, and both got them from WordPress

Speculation rules appear on 2 of 27 homepages fetched on 2026-09-03, both WordPress sites, both prefetch-only with conservative eagerness, and both matching the documented WordPress core default. Nobody prerenders, and the older link rel hints sit at 20 of 27.

Implementation5 min read1238 views
Speculation rules on 27 homepages: two ship them, and both got them from WordPress

FIELD TEST · 2026-09-03 · 27 homepages · one request each · speculation rules and legacy resource hints

Sample and method: 30 homepages fetched once each on 2026-09-03 with a desktop Chrome user agent, redirects followed, no JavaScript executed, exit node in Osaka, Japan. Three dropped out — stackoverflow.com, medium.com and www.reddit.com each returned 403 — leaving 27.

Two of the 27 homepages ship speculation rules: arstechnica.com and techcrunch.com. Both run WordPress, both prefetch only, both set eagerness to conservative, and both blocks match the documented WordPress core default. Neither prerenders anything. On the same 27 pages, the resource hints that predate this API are on 20.

How we measured it

One GET per site, desktop Chrome user agent rather than Googlebot, redirects followed. In the delivered HTML we looked for <script type="speculationrules"> blocks and parsed each one as JSON, and in the response headers for the Speculation-Rules header. Separately we counted <link rel> hints: preload, preconnect, dns-prefetch, modulepreload.

# The same reading on one of your own pages
curl -sL -A 'Mozilla/5.0' https://example.com/ > page.html
grep -o 'type="speculationrules"' page.html | wc -l
grep -oiE '<link [^>]*rel="(preload|preconnect|dns-prefetch)"' page.html | wc -l

The biggest limit is the one that matters most here. We executed no JavaScript, and Chrome's documentation states rules "can be statically included in the page's HTML or dynamically inserted into the page by JavaScript" — so any site injecting rules at runtime counts as zero in this pass, and the real adoption number is higher than two by an amount we cannot measure. Homepage only, one request each, and we did not test whether any prefetch made a navigation faster.

Who ships speculation rules, and what is in them

Two sites, two blocks, 382 and 375 bytes. Both are the same rule with a different theme path.

SiteActionSourceEagerness
arstechnica.comprefetchdocumentconservative
techcrunch.comprefetchdocumentconservative

Here is the arstechnica.com block, reformatted for reading and otherwise unchanged:

{"prefetch": [{
  "source": "document",
  "where": {"and": [
    {"href_matches": "/*"},
    {"not": {"href_matches": [
      "/wp/wp-*.php", "/wp/wp-admin/*", "/wp-content/uploads/*",
      "/wp-content/*", "/wp-content/plugins/*",
      "/wp-content/themes/ars-v9/*", "/*\?(.+)"]}},
    {"not": {"selector_matches": "a[rel~=\"nofollow\"]"}},
    {"not": {"selector_matches": ".no-prefetch, .no-prefetch a"}}
  ]},
  "eagerness": "conservative"
}]}

techcrunch.com sends the same structure with /wp-*.php and /wp-content/themes/tc-24/* in place of the Ars paths. Both exclude admin routes, uploads, plugin and theme directories, any link carrying a search string, links marked nofollow, and anything inside a .no-prefetch container.

Both blocks are the WordPress default, not a decision

The WordPress core team published the defaults when the feature shipped: "WordPress 6.8 introduces speculative loading, which can lead to near-instant page load times by loading URLs before the user navigates to them", and "The default of prefetch with conservative eagerness is used as a reasonable starting point to enable speculative loading at the scale of WordPress" (Speculative Loading in 6.8, published 2025-03-06, read 2026-09-03). The same post notes that URLs carrying a search string are excluded automatically.

Both blocks in this sample match that description on every axis we can check: action, source, eagerness, and the automatic exclusions. We cannot prove neither site touched a filter. What we can say is that nothing in either block differs from the shipped default, and the only site-specific string in each is its own theme directory.

Adoption counts on this panel are counting a CMS release, not twenty-seven decisions.

Nobody on this panel prerenders

Both blocks use prefetch. Chrome's documentation describes the two actions as materially different: a prefetched document is "processed in the same way that navigations are (but then not rendered) and are held in memory", while a prerendered page "behaves as if the page has been opened in an invisible background tab" (Speculative loading, read 2026-09-03). Prerender is the one that makes a click feel instant, and it is the one nobody here uses.

The eagerness setting explains part of that caution. Chrome defines the value both sites picked in one line: "Conservative: This speculates on pointer or touch down." Nothing is fetched while a reader is merely looking at a link.

MechanismSitesShare
<link rel="preload">20 / 2774%
<link rel="preconnect">19 / 2770%
<link rel="modulepreload">6 / 2722%
<link rel="dns-prefetch">5 / 2719%
speculation rules script2 / 277%
Speculation-Rules header0 / 270%

There is a second pattern in the two names. Both adopters are news publishers. None of the framework and hosting homepages on this panel — nextjs.org, vercel.com, astro.build, www.netlify.com, railway.com, supabase.com, linear.app, webflow.com, www.framer.com — ships a rules block, and every one of those nine sells a framework, a builder or hosting.

What this means for your site

This is a user-experience feature, not a search feature. It changes how fast a second page appears for a human who already arrived; it does not change how you are crawled, and this data set contains no ranking information.

  1. If you run WordPress 6.8 or later, check whether you already ship this. Two sites here do, and the rules describe their own theme directory, which is a disclosure worth reading once — the same reading is in X-Powered-By across 27 homepages.
  2. If you are hand-writing speculation rules, start at prefetch with conservative. That combination is what both production sites here run, and it wastes the least bandwidth on links nobody clicks.
  3. Do not add rules on top of an unmeasured page. The older hints on 20 of these 27 sites solve a different problem, and stacking a new one over a slow first response moves nothing.

The older hints and how widely they are used are measured in preconnect and resource hints across 27 homepages, and whether any of this speed work reaches your rankings is the subject of does page speed affect SEO. To see the delivered HTML your own pages return before any script runs, see how QueryWin reads a page.

Common questions

How did you measure this?

One GET per homepage on 2026-09-03, desktop Chrome user agent, redirects followed, bodies written to disk. Speculation rules blocks were found by their type attribute and parsed as JSON; link hints were counted with a regular expression. No JavaScript ran, so runtime-injected rules are invisible here. Exit node in Osaka, Japan.

Is 2 out of 27 the real adoption rate?

No, and we cannot give you the real one. It is a floor. Rules inserted by script after load do not appear in a static fetch, and this panel is 27 homepages rather than a sample of the web.

Does prefetching help SEO?

Nothing here shows that it does. The measurement contains no ranking data at all. Prefetch affects a navigation that happens after a reader is already on your site.

Should I use prerender instead?

It is the stronger of the two and the one that makes a click feel instant, and zero sites on this panel chose it. That is a signal about perceived risk, not a recommendation — we did not measure the wasted work either setting causes.

Why count link rel hints in the same survey?

To have a baseline for what adoption looks like when a mechanism is old. Preload sits at 20 of 27 and preconnect at 19. Against that, two is not a slow start so much as a different stage.

Speculation rules on 27 homepages: two ship them, and both got them from WordPress