Performance Module¶
Module ID: performance | Type: Core (always enabled) | Weight: 15%
The Performance module analyses HTML for page weight, render-blocking resources, lazy loading, image optimisation hints, inline asset sizes, and resource hints.
What It Checks¶
| Check | What It Looks For |
|---|---|
| HTML document size | Raw HTML size in bytes |
| Render-blocking scripts | <script> tags without async or defer in <head> |
| Render-blocking CSS | External stylesheets without media attributes |
| Lazy loading | loading="lazy" on below-fold images |
| Image format | Modern formats (WebP, AVIF) vs legacy (PNG, JPEG, GIF) |
| Inline CSS size | Total bytes of <style> blocks |
| Inline JS size | Total bytes of inline <script> blocks |
| Resource hints | preconnect, prefetch, preload link tags |
| Font loading | font-display: swap or equivalent strategy |
| Third-party scripts | Count and size of external domain scripts |
Scoring Breakdown¶
| Criterion | Deduction | Condition |
|---|---|---|
| HTML over 100KB | -5 | Document size exceeds 100KB |
| HTML over 250KB | -10 | Document size exceeds 250KB |
| Render-blocking scripts | -5 per script | Up to -15 total |
| Render-blocking CSS | -3 per stylesheet | Up to -9 total |
| No lazy loading on images | -5 | No images use loading="lazy" |
| No modern image formats | -5 | All images use legacy formats |
| Large inline CSS (>50KB) | -5 | Inline styles exceed 50KB |
| Large inline JS (>50KB) | -5 | Inline scripts exceed 50KB |
| No resource hints | -5 | No preconnect/prefetch/preload |
| No font-display strategy | -3 | Font loading blocks render |
| Excessive third-party scripts | -5 | More than 10 external scripts |
Auto-Detection¶
This module is always enabled. Performance affects every site.
Example Findings¶
P1 HIGH: 4 render-blocking scripts in <head>
Scripts without async or defer block HTML parsing. The browser cannot
render anything until these scripts download and execute.
Fix: Add defer to non-critical scripts, or move them to the end of <body>.
Effort: Low
P2 MEDIUM: No lazy loading on 12 images
All images load immediately, increasing initial page weight and time
to interactive.
Fix: Add loading="lazy" to images below the fold. Keep above-fold
images eager-loaded.
Effort: Low
P3 LOW: No resource hints found
Resource hints (preconnect, prefetch) help the browser start
loading critical resources earlier.
Fix: Add <link rel="preconnect" href="https://fonts.googleapis.com">
for key third-party origins.
Effort: Low
Related¶
- JS Bundle Analysis module -- deeper analysis of JavaScript loading patterns
- Lighthouse integration -- accurate Core Web Vitals measurement