TapCub is live — analytics, insights and live chat, free on one platform
Glossary

What is First Contentful Paint (FCP)? Thresholds and fixes

First Contentful Paint is the time until the browser draws the first text or image. The thresholds, how it differs from LCP, and the fixes that make it faster.

Chen Yu Reviewed by Xu An Also called FCP Last updated Nov 4, 2026 Glossary

Quick answer

First Contentful Paint (FCP) measures the time from the start of navigation until the browser renders the first piece of content from the page: text, an image, a non-white canvas or an SVG. Good is 1.8 seconds or less.

Formula: FCP ≈ time to first byte + time blocked by render-blocking CSS and scripts + first render

What is First Contentful Paint?

First Contentful Paint (FCP) is the moment the page stops looking blank: the time from the start of navigation until the browser draws the first text, image, SVG or non-white canvas. It tells visitors that something is happening.

RatingFCP
Good1.8 s or less
Needs improvement1.8–3 s
Poorover 3 s

FCP is not one of the three Core Web Vitals, but it explains them. If FCP is slow, LCP cannot be fast. If FCP is fast but LCP is slow, the problem is the main image or headline, not the page shell.

What makes FCP slow

Before anything can be drawn, the browser needs the HTML (time to first byte) and every stylesheet and synchronous script in the <head>. So slow FCP almost always comes down to:

  • Slow server response or redirects before the HTML arrives.
  • Render-blocking CSS and JavaScript in the head.
  • Web fonts that hide text until they load.

A sample breakdown

Sample data: a blog's P75 FCP on mobile is 2.6 s: 1.2 s until the HTML arrives, 1.0 s waiting for two stylesheets and a synchronous script, 0.4 s to render.

Two fixes: cache the HTML at the edge (first byte 1.2 → 0.5 s) and inline the critical CSS while loading the rest and the script without blocking (1.0 → 0.5 s). New FCP: 0.5 + 0.5 + 0.4 = 1.4 s, good.

Fixes that move FCP

  1. Remove redirect chains and cache HTML where you can.
  2. Inline the CSS needed for the first screen; load the rest asynchronously.
  3. Add defer or async to scripts in the head.
  4. Use font-display: swap (or optional) so text shows in a fallback font.
  5. Preconnect to required third-party origins.

FCP in TapCub

TapCub collects Web Vitals from real visits with the site script (sent once, when the first page is hidden; turn off with data-vitals="false"). In Web analytics › Monitoring › Performance, cards switch between P75, median, P95 and average, the breakdown splits by page, device, browser, country and operating system, and Slowest pages is sorted by P75 largest contentful paint. Details are in the performance docs.

Was this explanation clear?

We use your answers to fix and expand this page.

Chen Yu

Technical Engineer

Focuses on tracking code, SDKs, and API integrations, with practical guidance on implementation checks and troubleshooting.

FAQ

Questions people ask

Short answers to the follow-up questions that come up most.

Still have a question?

Chat with the team behind TapCub — we usually reply within a few hours on business days.

What is a good FCP?

1.8 seconds or less is good, over 3 seconds is poor, and in between needs improvement, at the 75th percentile of real visits.

Is FCP a Core Web Vital?

No. The Core Web Vitals are LCP, INP and CLS. FCP is a supporting metric that helps explain a slow LCP.

What is the difference between FCP and LCP?

FCP is when anything appears; LCP is when the largest element appears. A big gap between them usually points at a late-loading hero image.

Do background colours count for FCP?

No. Only content counts: text, images (including background images), SVG and non-white canvas.

See this number on your own site

Add one script tag for web and apps, and the first reports fill in within minutes.

See your data clearly. Find your growth.

Every click, backed by data. Install one line of code and see your first numbers in a minute.

No credit card · Free plans for analytics and chat · Cookieless analytics