Introduction
When users visit a website, their experience is determined by how quickly the page becomes visible, usable, and stable. Traditional metrics like total page load time or server response time only measure technical performance, but they don’t reflect what the user sees and feels during loading.
To address this, Google and other web performance experts introduced Core Web Vitals and related metrics. These metrics focus on user-centric performance, measuring aspects like when the first content appears, when the page becomes interactive, and whether the layout shifts unexpectedly.
The key metrics are:
- First Contentful Paint (FCP)
- Largest Contentful Paint (LCP)
- Time to Interactive (TTI)
- Speed Index (SI)
- Cumulative Layout Shift (CLS)
- First Input Delay (FID)
Let’s study each one in detail.
1. First Contentful Paint (FCP)
Definition
First Contentful Paint (FCP) measures the time from when the page starts loading to when any content (text, image, or non-white canvas) is first rendered on the screen.
It marks the first moment that users see something change on the screen, indicating that the website is starting to load.
The browser considers “contentful” elements as:
- Text blocks (paragraphs, headings, etc.)
- Images (including background images loaded via CSS)
- Non-white
<canvas>elements - SVG graphics
FCP does not count empty elements or invisible content.
Why It Matters
A fast FCP gives users confidence that something is happening — the site is loading and not frozen. If FCP is delayed, users may feel the site is slow or unresponsive.
Example
Imagine you open https://www.example.com and see a white screen for 2 seconds. Then suddenly, the company logo and page title appear.
If that happens at 2.1 seconds, then FCP = 2.1s.
Good, Needs Improvement, Poor
- Good: ≤ 1.8 seconds
- Needs Improvement: 1.8–3.0 seconds
- Poor: > 3.0 seconds
How to Improve FCP
- Minimize render-blocking CSS and JavaScript.
- Use server-side rendering (SSR) for faster initial HTML.
- Optimize images and use lazy loading.
- Enable text compression (GZIP or Brotli).
- Implement caching (especially for static assets).
2. Largest Contentful Paint (LCP)
Definition
Largest Contentful Paint (LCP) measures the time it takes for the largest visible element in the viewport to render. It represents when the main content of the page is fully visible to the user.
The LCP element could be:
- A large image or background image
- A video poster image
- A large text block or headline
Why It Matters
LCP is a key indicator of perceived load speed — when users feel the main part of the page is ready. If LCP is slow, users may abandon the page even if smaller elements appeared earlier.
Example
Suppose you open a news website:
- The header and logo appear at 1.5s (FCP)
- The large main article image appears at 2.8s
- The headline below it loads at 3.1s
The largest visible element is the article image that appeared at 2.8s, so LCP = 2.8s.
Good, Needs Improvement, Poor
- Good: ≤ 2.5 seconds
- Needs Improvement: 2.5–4.0 seconds
- Poor: > 4.0 seconds
How to Improve LCP
- Use a fast server or CDN.
- Optimize image loading and compression.
- Remove unnecessary JavaScript that delays rendering.
- Preload key resources (fonts, hero images).
- Ensure critical CSS is inlined.
3. Time to Interactive (TTI)
Definition
Time to Interactive (TTI) measures how long it takes for a page to become fully interactive.
A page is considered interactive when:
- It displays useful content.
- Event handlers are registered for visible elements.
- The page responds to user input within 50 milliseconds.
In simpler terms, TTI measures how long users must wait before they can click, scroll, or type without delay.
Why It Matters
A website may appear visually complete but still be unusable because the browser is busy executing scripts. A poor TTI means users see the page but can’t interact with it smoothly.
Example
When you visit an e-commerce homepage:
- You see product images at 1.5s.
- You click “Add to Cart” at 2.0s, but nothing happens until 4.2s.
In this case, TTI = 4.2s, since the page became interactive only after the main thread finished loading JavaScript.
Good, Needs Improvement, Poor
- Good: ≤ 3.8 seconds
- Needs Improvement: 3.8–7.3 seconds
- Poor: > 7.3 seconds
How to Improve TTI
- Split large JavaScript bundles into smaller chunks (code splitting).
- Defer non-critical JavaScript.
- Use web workers to offload heavy computations.
- Reduce third-party scripts (ads, analytics).
4. Speed Index (SI)
Definition
Speed Index (SI) measures how quickly the contents of a page are visually displayed during load.
It is calculated by analyzing a video of the page load and computing the average time at which visible parts of the page appear.
In simple terms, it represents the visual progression of the page loading — how fast the content fills in.
Why It Matters
Users perceive faster sites as those where content appears quickly and progressively, even if the entire page hasn’t finished loading. A lower Speed Index means a smoother, faster visual experience.
Example
Imagine two websites:
- Site A: Loads the full content at once after 4 seconds.
- Site B: Loads the header at 1s, text at 2s, and images at 3s.
Even though both finish around 4s, Site B feels faster, and hence has a lower Speed Index.
Good, Needs Improvement, Poor
- Good: ≤ 3.4 seconds
- Needs Improvement: 3.4–5.8 seconds
- Poor: > 5.8 seconds
How to Improve Speed Index
- Optimize rendering path.
- Prioritize above-the-fold content.
- Use lazy loading for below-the-fold elements.
- Compress and cache assets effectively.
5. Cumulative Layout Shift (CLS)
Definition
Cumulative Layout Shift (CLS) measures how much visible content shifts around unexpectedly while a page is loading.
It captures the sum of all layout shifts that occur during the lifespan of a page.
Layout shift occurs when an element changes its position or size after it’s been rendered, without user interaction.
Why It Matters
Unexpected layout shifts frustrate users — imagine trying to click a button that suddenly moves. CLS reflects how visually stable the page is.
Example
You’re reading an article and suddenly an ad loads at the top, pushing the paragraph down. That’s a layout shift.
If multiple such shifts occur, their total impact is calculated as CLS.
Good, Needs Improvement, Poor
- Good: ≤ 0.1
- Needs Improvement: 0.1–0.25
- Poor: > 0.25
How to Improve CLS
- Always set width and height for images and videos.
- Reserve space for ads and dynamic elements.
- Avoid inserting elements above existing content.
- Use CSS
transformanimations instead of layout-changing properties.
6. First Input Delay (FID)
Definition
First Input Delay (FID) measures the time from when a user first interacts with your page (like clicking a button or link) to when the browser responds to that interaction.
It reflects how responsive the page feels.
FID is especially important for pages where users interact quickly after loading, such as login pages or signup forms.
Why It Matters
If users try to interact but the page is still processing JavaScript, they experience a lag — even if the content looks ready. A long delay frustrates users and affects engagement.
Example
A user clicks a button immediately after seeing it at 2.5 seconds, but the page responds only at 3.0 seconds.
The delay is 0.5 seconds, so FID = 500ms.
Good, Needs Improvement, Poor
- Good: ≤ 100 ms
- Needs Improvement: 100–300 ms
- Poor: > 300 ms
How to Improve FID
- Break up long JavaScript tasks.
- Use async or defer attributes for script loading.
- Minimize third-party scripts.
- Keep main-thread work light.
Summary Table
| Metric | Focus | Good Threshold | Description |
|---|---|---|---|
| FCP | First visible content | ≤ 1.8s | Measures how soon something appears on screen. |
| LCP | Main content load | ≤ 2.5s | Measures when the main element is visible. |
| TTI | Interactivity readiness | ≤ 3.8s | Measures when page becomes usable. |
| Speed Index | Visual loading speed | ≤ 3.4s | Measures how quickly content is visually displayed. |
| CLS | Visual stability | ≤ 0.1 | Measures unexpected layout shifts. |
| FID | Input responsiveness | ≤ 100ms | Measures response delay for first user action. |
Final Thoughts
These performance metrics help developers focus on user experience instead of only backend efficiency. Tools such as Lighthouse, Chrome DevTools, and PageSpeed Insights use these metrics to generate performance reports and improvement suggestions.
By continuously monitoring and optimizing FCP, LCP, TTI, Speed Index, CLS, and FID, you ensure your website not only loads quickly but also feels smooth, stable, and responsive to every user.
