All Tools

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 complete

0% of all items checked

LCP (Largest Contentful Paint)

0/7

Measures loading performance. Good LCP is under 2.5 seconds.

Optimize the largest image or text block

CriticalHigh impact

Identify 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 impact

Add <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 impact

Serve images, fonts, and other assets from a CDN to reduce latency for users across different geographic locations.

Eliminate render-blocking resources

CriticalHigh impact

Defer 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 impact

Serve appropriately sized images for each viewport using srcset and sizes attributes to avoid downloading oversized images.

Optimize server response time (TTFB)

ImportantMedium impact

Keep Time to First Byte under 800ms. Use server-side caching, optimize database queries, and consider edge rendering.

Avoid lazy-loading the LCP image

CriticalHigh impact

The LCP element should load eagerly. Set loading="eager" or use fetchpriority="high" for the hero image.

INP (Interaction to Next Paint)

0/7

Measures responsiveness to user input. Good INP is under 200 milliseconds.

Break up long tasks

CriticalHigh impact

Split JavaScript tasks longer than 50ms into smaller chunks using requestIdleCallback, setTimeout, or scheduler.yield().

Minimize main thread work

CriticalHigh impact

Reduce JavaScript execution time by removing unused code, deferring non-essential scripts, and using code splitting.

Optimize event handlers

ImportantHigh impact

Keep event handlers lightweight. Move heavy computations to web workers or defer them with requestAnimationFrame.

Reduce DOM size

ImportantMedium impact

Keep DOM under 1,500 nodes. Large DOMs slow down style calculations, layout, and paint operations triggered by interactions.

Avoid forced synchronous layouts

ImportantMedium impact

Do not read layout properties (offsetHeight, getBoundingClientRect) immediately after writing DOM changes.

Use CSS containment

Nice to haveMedium impact

Add contain: content or contain: layout on independent sections to limit the scope of browser re-layout.

Debounce rapid input events

ImportantMedium impact

For scroll, resize, and input events, use debouncing or throttling to prevent excessive processing per frame.

CLS (Cumulative Layout Shift)

0/6

Measures visual stability. Good CLS is under 0.1.

Set explicit dimensions on images and videos

CriticalHigh impact

Always 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 impact

Use min-height or aspect-ratio containers for ad slots, iframes, and dynamically injected content.

Avoid injecting content above the fold

CriticalHigh impact

Do not dynamically insert banners, cookie notices, or notifications that push existing content down after load.

Use font-display: swap with size-adjust

ImportantMedium impact

Prevent layout shifts from web fonts by using font-display: swap along with size-adjust or font fallback metrics.

Avoid dynamically resizing elements

ImportantMedium impact

Use 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 impact

Apply content-visibility: auto on below-the-fold sections with contain-intrinsic-size to stabilize layout.

General Performance

0/7

Broad optimizations that improve overall page speed and user experience.

Enable text compression (gzip/Brotli)

CriticalHigh impact

Compress HTML, CSS, and JS responses with Brotli (preferred) or gzip. Most hosting platforms support this natively.

Minify CSS and JavaScript

ImportantMedium impact

Remove whitespace, comments, and unused code from CSS and JS bundles. Use tools like Terser and cssnano.

Implement caching headers

ImportantMedium impact

Set Cache-Control headers with appropriate max-age for static assets. Use immutable for hashed filenames.

Reduce third-party script impact

ImportantHigh impact

Audit third-party scripts (analytics, chat widgets, etc.). Lazy-load or defer them and consider using Partytown.

Use HTTP/2 or HTTP/3

ImportantMedium impact

Ensure your server supports HTTP/2+ for multiplexing, header compression, and faster resource delivery.

Implement resource hints

Nice to haveLow impact

Use dns-prefetch and preconnect for third-party origins. Add <link rel="preconnect"> for critical external domains.

Tree-shake and code-split JavaScript

ImportantHigh impact

Use 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