Audit Checklist
40-Point Performance Audit
Systematically audit every Core Web Vital. Check off items as you fix them and track your score in real time.
Set fetchpriority="high" on the LCP image element
LCPhigh
<link rel="preload"> for LCP image in <head>
LCPhigh
Serve images in WebP or AVIF format
LCPhigh
Enable a CDN for static assets (Cloudflare, Vercel, CloudFront)
LCPhigh
Server response time (TTFB) is under 600ms
LCPmedium
Provide srcset and sizes on all images
LCPmedium
Compress and resize images to appropriate max width
LCPmedium
Use stale-while-revalidate caching on HTML responses
LCPmedium
Inline critical CSS (above-the-fold styles)
LCPlow
Remove render-blocking stylesheets and scripts
LCPlow
No JavaScript task exceeds 50ms (break up long tasks)
INPhigh
Debounce high-frequency event handlers (input, scroll, resize)
INPhigh
Defer non-critical scripts with defer or async attributes
INPhigh
Move heavy computation to Web Workers
INPmedium
Use scheduler.postTask() or scheduler.yield() for background work
INPmedium
Virtualise long lists (react-window, TanStack Virtual)
INPmedium
Avoid layout thrash (batch DOM reads/writes)
INPmedium
Profile and remove unused JavaScript with bundle analyser
INPlow
Use code-splitting / dynamic imports for routes and heavy modules
INPlow
Enable tree-shaking in your bundler config
INPlow
All <img> elements have explicit width and height attributes
CLShigh
All ad slots and embeds have a reserved min-height
CLShigh
Font swap does not cause layout shift (use size-adjust fallback)
CLShigh
Dynamic banners/toasts are inserted above existing content, not injected mid-flow
CLShigh
Animations use transform and opacity only (not top/left/width/height)
CLSmedium
Sticky or fixed positioned elements do not cause reflow on scroll
CLSmedium
Skeleton loading screens replace empty states during data fetch
CLSmedium
Video embeds have aspect-ratio CSS property set
CLSlow
CSS transitions use will-change sparingly and correctly
CLSlow
No content is injected above the fold after page load
CLSlow
Tested on real device (Android mid-range) with throttling
Generalhigh
PageSpeed Insights score ≥ 90 on mobile
Generalhigh
HTTPS enabled with valid certificate
Generalmedium
HTTP/2 or HTTP/3 enabled on hosting provider
Generalmedium
Gzip or Brotli compression enabled on server
Generalmedium
Third-party scripts loaded with async, defer, or facade pattern
Generalmedium
Resource Hints: dns-prefetch and preconnect for critical origins
Generallow
Lighthouse CI integrated into your CI/CD pipeline
Generallow
CrUX data monitored in Search Console
Generallow
Performance budget set and documented in project
Generallow
Your Score
0
0 / 40 completed
Needs Work0–49%
Getting There50–79%
Excellent80–100%
🔧 Lots to improve