Reference: 2026 performance budget — SMB marketing site (Candid default targets)

For a typical SMB marketing site (5-25 pages, contact-form lead-gen, light blog) targeting CrUX p75 "Good" on mid-range Android over 4G:

Budget Category Target Rationale
Total uncompressed page weight (HTML+CSS+JS+initial images) ≤ 1.0 MB Median mobile page is 2.56 MB (Web Almanac 2025: median mobile page weight crossed 2,559 KB in July 2025 (+7.8% YoY)); cutting in half is the moat
JavaScript (compressed, initial bundle) ≤ 150 KB Per-script 100 KB ceiling (Chrome Aurora)
JavaScript (uncompressed, total) ≤ 500 KB Forces island/partial-hydration decisions
CSS (compressed) ≤ 50 KB Critical CSS inlined
Above-the-fold images (combined, AVIF/WebP) ≤ 250 KB Hero ≤ 150 KB
Web fonts (total) ≤ 100 KB; ≤ 2 weights Variable fonts where possible; Latin subset
Third-party requests ≤ 5 GTM + GA + 1 chat/pixel; nothing else without ROI math
Third-party bytes (combined) ≤ 150 KB compressed Includes GTM fired tags
Total HTTP requests ≤ 35 on first load Under HTTP/2 / HTTP/3 multiplexing
TTFB (p75) ≤ 200 ms Requires edge/CDN/static-first hosting
LCP (p75 field) ≤ 2.0 s Internal target 20% under Google's 2.5s
INP (p75 field) ≤ 150 ms 25% under Google's 200ms
CLS (p75 field) ≤ 0.05 Half of Google's 0.10

Governance: Budget enforced in CI via Lighthouse CI or DebugBear GitHub integration. Build fails if any budget exceeds threshold. Quarterly third-party-script audit. One-script-in, one-out rule. See RULE: Performance budgets enforced in CI. Build fails on budget violation. Documented budgets without CI enforcement do not work..