Skip to content
All modules

Page Speed

Observed performance per page — server response time, page weight, request count, compression and caching.

9 active of 15 published rules · each active rule is versioned and backed by evidence. Planned rules are on the roadmap.

Medium Active

Slow server response

RULE-PERF-001 · v1.0.0

The server took over a second to return the HTML, delaying everything that follows.

What it checks

Measures time-to-fetch the HTML; flags responses over 1000 ms.

Confidence

High — derived from evidence quality, not asserted.

Low Active

Heavy HTML document

RULE-PERF-002 · v1.0.0

The HTML document itself is large (over 500 KB), which slows first render.

What it checks

Measures the HTML document size; flags documents over 500 KB.

Confidence

High — derived from evidence quality, not asserted.

Low Active

Many resource requests

RULE-PERF-003 · v1.0.0

The page references a large number of scripts, stylesheets and images (over 80), each a separate request.

What it checks

Counts referenced scripts, stylesheets and images; flags pages over 80.

Confidence

High — derived from evidence quality, not asserted.

Medium Active

Render-blocking scripts in the head

RULE-PERF-004 · v1.0.0

A script in the <head> has neither async nor defer, so the browser must download and run it before it can render the page.

What it checks

Counts <head> <script src> elements that are not async, defer, or type="module".

Confidence

High — derived from evidence quality, not asserted.

Low Active

Many render-blocking stylesheets

RULE-PERF-005 · v1.0.0

The <head> links a large number of stylesheets (over three), each of which blocks the first render.

What it checks

Counts <head> <link rel="stylesheet"> elements; flags more than three.

Confidence

High — derived from evidence quality, not asserted.

Low Active

Images without explicit width/height

RULE-PERF-006 · v1.0.0

One or more images omit width/height attributes, which forces the browser to reflow and contributes to layout shift.

What it checks

Counts <img> elements with a src but no explicit width or height attribute.

Confidence

High — derived from evidence quality, not asserted.

Low Active

No image lazy-loading on an image-heavy page

RULE-PERF-007 · v1.0.0

The page carries many images but none use loading="lazy", so every image is fetched up front.

What it checks

On pages with five or more images, checks whether any image uses loading="lazy".

Confidence

Medium — derived from evidence quality, not asserted.

Low Active

Excessive DOM size

RULE-PERF-008 · v1.0.0

The page has a very large DOM (over 1,500 elements), which slows style, layout and rendering work.

What it checks

Counts all elements in the document; flags more than 1,500.

Confidence

High — derived from evidence quality, not asserted.

Low Active

Many third-party scripts

RULE-PERF-009 · v1.0.0

The page loads a large number of scripts from other origins (over five), each adding a third-party connection and execution cost.

What it checks

Counts <script src> whose host differs from the page host; flags more than five.

Confidence

High — derived from evidence quality, not asserted.

High Planned

Largest Contentful Paint (LCP) is slow

RULE-PERF-010 · v1.0.0

The main content takes too long to render (LCP over 2.5 s).

What it checks

Needs the headless-render service or CrUX/PSI field data — not measurable from server HTML.

Status

Published in the catalogue; not yet evaluated by the scanner, so it never produces a finding.

Medium Planned

Cumulative Layout Shift (CLS) is high

RULE-PERF-011 · v1.0.0

Visible elements move during load (CLS above 0.1). Image dimensions (PERF-006) are only a partial proxy.

What it checks

Needs the headless-render service to measure actual layout movement.

Status

Published in the catalogue; not yet evaluated by the scanner, so it never produces a finding.

Medium Planned

Interaction to Next Paint (INP) is poor

RULE-PERF-012 · v1.0.0

The page is slow to respond to user interaction (INP above 200 ms).

What it checks

Needs field data or a headless interaction trace — not observable from static HTML.

Status

Published in the catalogue; not yet evaluated by the scanner, so it never produces a finding.

Medium Planned

High Total Blocking Time

RULE-PERF-013 · v1.0.0

Long main-thread tasks block input during load (TBT above 200 ms / Speed Index high).

What it checks

Needs the headless-render service to trace main-thread work.

Status

Published in the catalogue; not yet evaluated by the scanner, so it never produces a finding.

Low Planned

Response is not compressed

RULE-PERF-014 · v1.0.0

The HTML is served without gzip/brotli compression, inflating transfer size.

What it checks

Needs the captured Content-Encoding response header, which is not yet stored on the snapshot.

Status

Published in the catalogue; not yet evaluated by the scanner, so it never produces a finding.

Low Planned

No caching headers on static assets

RULE-PERF-015 · v1.0.0

Static assets are served without Cache-Control/Expires, so browsers cannot reuse them.

What it checks

Needs captured per-asset response headers, which the bounded MVP crawler does not yet fetch.

Status

Published in the catalogue; not yet evaluated by the scanner, so it never produces a finding.

Every finding this module produces is backed by an evidence record, scored by published formula, and marked with its provenance. Where the evidence isn’t sufficient, the module reports “insufficient evidence” rather than guessing.