Performance SEO checklist
Page speed is a ranking factor. Google uses Core Web Vitals — LCP, CLS, and INP — as measurable performance signals. This checklist targets the optimizations that actually move those metrics for real users.
Critical
— 3 itemsAchieve LCP under 2.5 seconds
Largest Contentful Paint measures how fast the main content loads. Optimize the hero image or text block. Preload critical resources, inline critical CSS, and avoid render-blocking scripts.
Keep CLS below 0.1
Cumulative Layout Shift measures visual stability. Set explicit width and height on all images and embeds. Reserve space for dynamic content. Avoid inserting content above the fold after load.
Maintain INP under 200ms
Interaction to Next Paint measures responsiveness. Break up long JavaScript tasks. Use requestIdleCallback for non-critical work. Debounce event handlers.
Important
— 6 itemsOptimize images with modern formats
Use WebP or AVIF for all images. Compress to appropriate quality (80% for photos, 100% for screenshots). Serve responsive sizes with srcset. Use next/image in Next.js.
Lazy load images below the fold
Only eager-load the hero image and above-the-fold content. Everything else should use loading="lazy" (native) or the Image component's default behavior in Next.js.
Set a JavaScript budget under 200KB (compressed)
Audit your JavaScript bundle size. Remove unused dependencies, code-split routes, and defer non-critical scripts. Every KB of JavaScript delays interactivity.
Optimize font loading with display swap
Use font-display: swap to show text immediately with a fallback font. Preload your primary font file. Subset fonts to include only characters you need.
Enable server-side caching headers
Set Cache-Control: public, max-age=31536000, immutable for static assets (images, fonts, CSS). Use stale-while-revalidate for HTML. Proper caching reduces server load and improves repeat visits.
Minimize third-party script impact
Audit every third-party script (analytics, chat widgets, ads). Load non-critical scripts with async or defer. Consider removing scripts that add more than 100ms to page load.
Nice-to-have
— 2 itemsPreload critical above-the-fold resources
Add <link rel="preload"> for the hero image, primary font, and critical CSS. Preloading tells the browser to fetch these resources immediately instead of waiting for the parser.
Monitor real-user performance with field data
Lab metrics (Lighthouse) are useful for debugging but Google ranks based on field data (CrUX). Monitor real-user metrics via web-vitals library, Vercel Analytics, or GSC Core Web Vitals report.
Frequently asked questions
What are Core Web Vitals?
Core Web Vitals are three metrics Google uses to measure user experience: LCP (Largest Contentful Paint — loading speed), CLS (Cumulative Layout Shift — visual stability), and INP (Interaction to Next Paint — responsiveness). All three are ranking factors.
Does page speed directly affect rankings?
Yes. Core Web Vitals are a confirmed ranking factor since 2021. However, they are a tiebreaker, not a primary signal. A slow page with great content can still rank, but a fast page with great content will outrank it.
Should I optimize for Lighthouse score or field data?
Field data. Lighthouse scores are lab measurements on a simulated device. Google ranks based on real-user data from the Chrome User Experience Report (CrUX). Optimize for what real users experience, not a synthetic test.
Automate this checklist
Stop checking manually. Indxel validates SEO rules on every build and blocks broken deploys.