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.