Page Speed Checklist
Interactive Core Web Vitals checklist with smart recommendations. Track your optimization progress for LCP, FID, CLS, and other performance metrics.
Overall Progress
0/27 complete0% of all items checked
LCP (Largest Contentful Paint)
0/7Measures loading performance. Good LCP is under 2.5 seconds.
Optimize the largest image or text block
CriticalHigh impactIdentify the LCP element using DevTools and ensure it loads as fast as possible. Compress images, use modern formats (WebP/AVIF), and set explicit width/height.
Preload the LCP resource
CriticalHigh impactAdd <link rel="preload"> for the LCP image or font so the browser fetches it early without waiting for CSS or JS.
Use a CDN for static assets
ImportantHigh impactServe images, fonts, and other assets from a CDN to reduce latency for users across different geographic locations.
Eliminate render-blocking resources
CriticalHigh impactDefer non-critical CSS and JS. Inline critical CSS to speed up first render and avoid blocking the LCP element.
Use responsive images with srcset
ImportantMedium impactServe appropriately sized images for each viewport using srcset and sizes attributes to avoid downloading oversized images.
Optimize server response time (TTFB)
ImportantMedium impactKeep Time to First Byte under 800ms. Use server-side caching, optimize database queries, and consider edge rendering.
Avoid lazy-loading the LCP image
CriticalHigh impactThe LCP element should load eagerly. Set loading="eager" or use fetchpriority="high" for the hero image.
INP (Interaction to Next Paint)
0/7Measures responsiveness to user input. Good INP is under 200 milliseconds.
Break up long tasks
CriticalHigh impactSplit JavaScript tasks longer than 50ms into smaller chunks using requestIdleCallback, setTimeout, or scheduler.yield().
Minimize main thread work
CriticalHigh impactReduce JavaScript execution time by removing unused code, deferring non-essential scripts, and using code splitting.
Optimize event handlers
ImportantHigh impactKeep event handlers lightweight. Move heavy computations to web workers or defer them with requestAnimationFrame.
Reduce DOM size
ImportantMedium impactKeep DOM under 1,500 nodes. Large DOMs slow down style calculations, layout, and paint operations triggered by interactions.
Avoid forced synchronous layouts
ImportantMedium impactDo not read layout properties (offsetHeight, getBoundingClientRect) immediately after writing DOM changes.
Use CSS containment
Nice to haveMedium impactAdd contain: content or contain: layout on independent sections to limit the scope of browser re-layout.
Debounce rapid input events
ImportantMedium impactFor scroll, resize, and input events, use debouncing or throttling to prevent excessive processing per frame.
CLS (Cumulative Layout Shift)
0/6Measures visual stability. Good CLS is under 0.1.
Set explicit dimensions on images and videos
CriticalHigh impactAlways include width and height attributes (or use CSS aspect-ratio) so the browser reserves space before the media loads.
Reserve space for ads and embeds
CriticalHigh impactUse min-height or aspect-ratio containers for ad slots, iframes, and dynamically injected content.
Avoid injecting content above the fold
CriticalHigh impactDo not dynamically insert banners, cookie notices, or notifications that push existing content down after load.
Use font-display: swap with size-adjust
ImportantMedium impactPrevent layout shifts from web fonts by using font-display: swap along with size-adjust or font fallback metrics.
Avoid dynamically resizing elements
ImportantMedium impactUse CSS transitions for size changes instead of abrupt resizing. Animate with transform instead of width/height.
Use content-visibility for off-screen content
Nice to haveLow impactApply content-visibility: auto on below-the-fold sections with contain-intrinsic-size to stabilize layout.
General Performance
0/7Broad optimizations that improve overall page speed and user experience.
Enable text compression (gzip/Brotli)
CriticalHigh impactCompress HTML, CSS, and JS responses with Brotli (preferred) or gzip. Most hosting platforms support this natively.
Minify CSS and JavaScript
ImportantMedium impactRemove whitespace, comments, and unused code from CSS and JS bundles. Use tools like Terser and cssnano.
Implement caching headers
ImportantMedium impactSet Cache-Control headers with appropriate max-age for static assets. Use immutable for hashed filenames.
Reduce third-party script impact
ImportantHigh impactAudit third-party scripts (analytics, chat widgets, etc.). Lazy-load or defer them and consider using Partytown.
Use HTTP/2 or HTTP/3
ImportantMedium impactEnsure your server supports HTTP/2+ for multiplexing, header compression, and faster resource delivery.
Implement resource hints
Nice to haveLow impactUse dns-prefetch and preconnect for third-party origins. Add <link rel="preconnect"> for critical external domains.
Tree-shake and code-split JavaScript
ImportantHigh impactUse dynamic imports and tree shaking to send only the JavaScript needed for each page. Reduces initial bundle size.
Core Web Vitals Thresholds
LCP
2.5s
Good: < 2.5s
Poor: > 4.0s
INP
200ms
Good: < 200ms
Poor: > 500ms
CLS
0.1
Good: < 0.1
Poor: > 0.25
- LCP (Largest Contentful Paint): Measures how fast the main content loads. Optimize images, fonts, and server response time.
- INP (Interaction to Next Paint): Measures responsiveness. Reduce JavaScript blocking time and optimize event handlers.
- CLS (Cumulative Layout Shift): Measures visual stability. Set explicit dimensions and reserve space for dynamic content.
- Test with real data: Use Google Search Console, PageSpeed Insights, and Chrome UX Report for field data, not just lab tests.
Features
- Core Web Vitals checklist
- LCP optimization tips
- CLS reduction guide
- INP improvement steps
- Progress tracking
- Priority recommendations
SEO Tips
- Keep title tags under 60 characters
- Meta descriptions should be 150-160 characters
- Include your primary keyword naturally
- Make each page's meta unique