View contents
Speed Index: Understanding Visual Page Load Progress
Introduction
Speed Index measures how quickly content is visually displayed during page load. Unlike metrics that measure a single moment in time (like FCP or LCP), Speed Index captures the entire visual loading experience by analyzing how fast the visible portion of your page fills with content.
A low Speed Index means users see meaningful content quickly, creating the perception of a fast, responsive website. A high Speed Index indicates that users stare at a blank or incomplete screen for too long, leading to frustration and abandonment.
What is Speed Index?
Speed Index is a visual progress metric that calculates the average time at which visible parts of the page are displayed. It uses video frames captured during page load to measure how “visually complete” your page becomes over time.
How Speed Index Works
Lighthouse captures a video filmstrip of the page loading and analyzes each frame:
Loading Timeline:
┌─────────────────────────────────────────────────────────────┐
│ 0s 1s 2s 3s 4s 5s │
│ ┌──┐ ┌──┐ ┌──┐ ┌──┐ ┌──┐ ┌──┐ │
│ │ │ │▓▓│ │▓▓│ │▓▓│ │▓▓│ │▓▓│ │
│ │ │ │ │ │▓▓│ │▓▓│ │▓▓│ │▓▓│ │
│ │ │ │ │ │ │ │▓▓│ │▓▓│ │▓▓│ │
│ └──┘ └──┘ └──┘ └──┘ └──┘ └──┘ │
│ 0% 30% 60% 85% 95% 100% Visual Completeness │
└─────────────────────────────────────────────────────────────┘
Speed Index calculates the area above the visual progress curve. A page that loads content quickly will have less “white space” above the curve, resulting in a lower (better) Speed Index.
Speed Index Calculation
The formula measures the integral of visual incompleteness over time:
Speed Index = ∫(1 - Visual Completeness) dt
Lower values = faster visual loading = better user experience
Speed Index Thresholds
According to Chrome Developers documentation, Speed Index scores are categorized as:
✅ Good: < 3.4 seconds
⚠️ Needs Improvement: 3.4 - 5.8 seconds
❌ Poor: > 5.8 seconds
Goal: Aim for a Speed Index under 3.4 seconds for an optimal visual loading experience.
Why is Speed Index Important for SEO?
Speed Index directly impacts user perception and has several important implications:
Key benefits of good Speed Index:
- Perceived performance: Users judge your site based on how fast it feels, and Speed Index captures this perception
- Lighthouse score: Speed Index contributes 10% to your overall Lighthouse performance score
- Bounce rate reduction: Pages that appear to load quickly retain more visitors
- Mobile critical: Especially important on slower mobile connections where visual progress is more gradual
- User trust: Fast-appearing pages build confidence in your brand
Speed Index vs Other Visual Metrics
| Metric | Measures | Use Case |
|---|---|---|
| FCP | First content painted | Initial visual response |
| LCP | Largest element painted | Main content visibility |
| Speed Index | Visual progress over time | Overall loading experience |
Speed Index complements FCP and LCP by measuring the entire journey from blank screen to fully loaded page.
What Causes High Speed Index?
Several factors can cause a high Speed Index:
1. Render-Blocking Resources
CSS and JavaScript that prevent content from appearing:
<!-- These block rendering until fully loaded -->
<link rel="stylesheet" href="large-styles.css">
<script src="blocking-script.js"></script>
2. Slow Server Response (TTFB)
If the server takes too long to respond, everything else is delayed:
User Request → [TTFB delay] → HTML arrives → Parsing begins
↑
High TTFB delays all visual progress
3. Large Unoptimized Images
Images that load slowly or cause layout shifts:
<!-- Large images delay visual completeness -->
<img src="hero-5mb.jpg" width="1920" height="1080">
4. Web Fonts Loading Slowly
Custom fonts that cause invisible text or flash of unstyled text (FOUT):
@font-face {
font-family: 'CustomFont';
src: url('custom-font.woff2');
/* No font-display causes invisible text */
}
Basic Best Practices
1. Eliminate Render-Blocking Resources
<!-- Defer non-critical JavaScript -->
<script src="app.js" defer></script>
<!-- Load non-critical CSS asynchronously -->
<link rel="preload" href="styles.css" as="style" onload="this.rel='stylesheet'">
2. Optimize Server Response Time
- Use a CDN for static assets
- Enable server-side caching
- Optimize database queries
3. Optimize Images
<!-- Use modern formats and responsive sizes -->
<img src="hero.webp"
srcset="hero-480.webp 480w, hero-800.webp 800w"
sizes="(max-width: 600px) 480px, 800px"
loading="lazy">
4. Use Font Display Swap
@font-face {
font-family: 'CustomFont';
src: url('custom-font.woff2');
font-display: swap; /* Shows fallback font immediately */
}
Common Mistakes to Avoid
Mistake 1: Loading Everything Synchronously
Problem: All resources load in sequence, blocking visual progress.
Solution: Prioritize critical resources and defer everything else.
Mistake 2: Large Above-the-Fold Images
Problem: Hero images take too long to load, keeping the page visually incomplete.
Solution: Optimize images, use responsive sizes, and consider placeholder techniques.
Mistake 3: Ignoring Web Fonts
Problem: Custom fonts cause invisible text while loading.
Solution: Use font-display: swap or optional to show content immediately.
Measuring Speed Index
Using Lighthouse
Run a Lighthouse audit to see your Speed Index score:
- In Chrome DevTools → Lighthouse tab
- Select “Performance” and run the audit
- Speed Index is displayed in the metrics section
Using WebPageTest
WebPageTest provides detailed filmstrip analysis:
- Visit webpagetest.org
- Enter your URL
- View the filmstrip and Speed Index calculation
Related Articles
Improve other aspects of your site’s visual performance:
- LCP Explained - Optimize your largest content element
- FCP Explained - Improve initial content paint
- TBT Explained - Reduce main thread blocking
- TTFB Explained - Optimize server response time
📚 Back to Performance SEO Hub - Explore all performance topics
References
- Chrome Developers - Speed Index
- Chrome Developers - Lighthouse Performance Scoring
- web.dev - First Contentful Paint
Try It Yourself
Want to measure your page’s Speed Index?
🔧 Download UXR SEO Analyzer (Free, 100% local analysis)
Disclaimer: The analyzers in this extension are reference guides based on official Chrome Developers and web.dev documentation. They do not represent absolute truths about how search engines evaluate your content—only search engines know their internal algorithms. Use these recommendations as a starting point to improve your site.
Last updated: December 14, 2025