pertama Contentful Paint (FCP)

Apa pertama Contentful Paint measures, apa sebuah baik FCP score, mengapa ini tidak sebuah Core Web Vital, bagaimana ini differs dari pertama Paint dan LCP, dan cara perbaiki sebuah slow satu.

Pertama kali diterbitkan: 26 Jun 2026 · Terakhir diperbarui: 8 Agu 2026 · Advanced
Bahasa

pertama Contentful Paint (FCP) adalah time dari ketika sebuah halaman dimulai memuat untuk ketika apa pun bagian dari -nya konten — text, image, SVG, atau non-white canvas — pertama renders. baik adalah ≤1,8 s di 75th percentile dari pengguna nyata. ini adalah Tidak sebuah Core Web Vital: sinyal peringkat adalah LCP, INP, dan CLS. FCP adalah sebuah diagnostic metric (lab dan field) itu's sebuah membangun block dari LCP — ini happens di atau sebelum LCP — so ini adalah mainly berguna untuk catching render-blocking resources dan slow TTFB. di Lighthouse 10 ini adalah 10% dari performa score. Perbaiki ini oleh eliminating render-blocking CSS/JS, cutting TTFB, inlining critical CSS, menggunakan font-display: tukar, dan preconnecting untuk diperlukan origins.

TL;DR — FCP adalah time dari navigation mulai untuk ketika apa pun halaman konten (text, image, <svg>, atau non-white <canvas>) pertama renders. ini adalah tidak sebuah Core Web Vital — ini adalah sebuah supplementary, lab-dan-field diagnostic metric, dan sebuah membangun block dari LCP (FCP happens di atau sebelum LCP). Field thresholds (p75): baik ≤ 1,8 s, perlu-improvement ≤ 3,0 s, poor > 3,0 s. di Lighthouse 10 ini adalah 10% dari performa score. Karena FCP’s clock dimulai di navigation — ini mencakup redirect time, connection setup, dan TTFB — lab (Lighthouse) dan field (CrUX) angka sering diverge. Perbaiki ini di mana ini lives: render-blocking CSS/JS pertama, lalu TTFB, lalu fonts.

Apa FCP measures (precisely)

Google’s definition, dari Philip Walton’s web.dev artikel, adalah accuracy spine di sini: “Pertama Contentful Paint (FCP) measures itu time dari ketika itu user pertama navigated untuk itu halaman untuk ketika any part dari itu halaman’s konten adalah dirender pada itu screen.” (terjemahan) “pertama Contentful Paint (FCP) measures time dari ketika pengguna pertama navigated untuk halaman untuk ketika apa pun bagian dari halaman’s konten adalah dirender pada screen.” “Konten,” (terjemahan) “konten,” per dokumentasi yang sama, berarti “text, images (including background images), <svg> elements, or non-white <canvas> elements.” (terjemahan) “teks, gambar (termasuk gambar latar), elemen <svg>, atau elemen <canvas> non-putih.”

kata itu melakukan semua berfungsi adalah apa pun. FCP tidak care apa renders — sebuah 40-pixel logo counts yang sama sebagai sebuah penuh hero image. ini adalah “adalah apa pun pada screen namun?” (terjemahan) “adalah apa pun pada screen namun?” sinyal, yang adalah persis mengapa ini adalah sebuah early indicator alih-alih sebuah completion metric.

Evidence for this claim FCP measures from navigation until the first text, image, SVG, or non-white canvas content is rendered. Scope: Current web.dev FCP definition and qualifying content types. Confidence: high · Verified: web.dev: First Contentful Paint

Satu detail itu’s easy untuk miss dan perubahan bagaimana Anda baca angka: FCP’s clock dimulai di navigation, so ini bundles di semuanya itu happens sebelum Anda HTML adalah bahkan parsed. Google’s own Key poin: “FCP includes any unload time dari itu sebelumnya halaman, connection set up time, redirect time, dan Waktu hingga byte pertama (TTFB) yang dapat menjadi significant ketika measured di itu field.” (terjemahan) “FCP mencakup apa pun unload time dari sebelumnya halaman, connection siapkan time, redirect time, dan Time untuk pertama Byte (TTFB) yang dapat menjadi significant ketika diukur di lapangan.” sebuah server itu takes 1,5 s untuk respond memiliki sudah burned sebagian besar dari Anda 1,8 s budget sebelum browser memiliki processed sebuah single byte.

FCP adalah Tidak sebuah Core Web Vital

Let me menjadi blunt tentang ini karena sebagian besar halaman hedge ini: FCP adalah tidak sebuah Core Web Vital dan adalah tidak bagian dari Google’s sinyal peringkat. Core Web Vitals adalah LCP, INP, dan CLS — dan FCP tidak mentioned anywhere pada Google’s Penelusuran peringkat Core Web Vitals halaman.

Apa FCP adalah, di Google’s taxonomy, adalah sebuah “Other Web Vital” (terjemahan) “lainnya Web Vital” — sebuah supplementary metric itu’s berguna untuk diagnosis. web.dev menjelaskannya begini: “itu metrics Waktu hingga byte pertama (TTFB) dan Pertama Contentful Paint (FCP) adalah keduanya vital aspects dari itu loading experience, dan adalah keduanya useful di diagnosing issues dengan LCP (slow server response times atau render-blocking resources, respectively).” (terjemahan) “ metrics Time untuk pertama Byte (TTFB) dan pertama Contentful Paint (FCP) adalah keduanya vital aspects dari memuat experience, dan adalah keduanya berguna di diagnosing issues dengan LCP (slow server respons times atau render-blocking resources, respectively).”

So honest framing untuk stakeholders adalah dua-sided, dan Anda harus state keduanya halves tanpa flinching:

  • FCP melakukan tidak memengaruhi rankings secara langsung. jangan mengoptimalkan FCP “untuk SEO.” (terjemahan) “untuk SEO.”
  • FCP adalah sebuah great diagnostic untuk LCP, yang melakukan memengaruhi rankings. Render-blocking resources tampilkan up di FCP pertama.

FCP vs pertama Paint (FP)

ini mendapatkan conflated constantly:

  • pertama Paint (FP) fires ketika browser paints apa pun di semua — including sebuah bare background color dengan Tidak sebenarnya konten.
  • FCP fires hanya ketika eligible konten renders: text, images (including background images), <svg> elements, atau non-white <canvas> elements. itu’s sebuah spesifik, spec-didefinisikan list — tidak sebuah longgar “any DOM konten” (terjemahan) “apa pun DOM konten” aturan — dan ini adalah worth mempertahankan precise, since sebuah background image counts bahkan though ini tidak text di DOM.

So FP ≤ FCP, selalu. pada sebagian besar halaman mereka’re nearly identical, karena painting sebuah background color dengan tanpa konten pada top adalah rare. Ketika di sana adalah sebuah bermakna kesenjangan, ini biasanya berarti sebuah cosmetic background painted sebelum apa pun nyata konten melakukan. Paint Timing API mengembalikan keduanya first-paint dan first-contentful-paint entries — tetapi FCP adalah satu worth analyzing; FP rarely tells Anda apa pun actionable.

FCP vs LCP

lainnya pair orang gabungkan:

  • FCP = ketika apa pun konten paints. Fires early. dapat menjadi sebuah tiny logo atau sebuah nav tautan.
  • LCP = ketika largest element di viewport renders. Fires di atau setelah FCP.

Google’s wording: FCP measures ketika apa pun konten adalah painted dan LCP ketika main konten adalah painted, so LCP adalah yang dimaksud untuk menjadi lebih selective. Baca itu sebagai “lebih selective,” (terjemahan) “lebih selective,” tidak “certified correct” (terjemahan) “certified correct” — neither metric proves halaman’s sebenarnya main konten adalah menyelesaikan atau berguna untuk pengunjung. FCP hanya mengonfirmasi sesuatu eligible painted; LCP mengonfirmasi largest eligible candidate melakukan. sebuah halaman dapat memiliki sebuah fast FCP (logo di 0,5 s) dan sebuah slow LCP (hero image di 4 s) — itu kesenjangan adalah itself sebuah berguna diagnostic. dan jika Anda FCP adalah close untuk Anda LCP, itu’s sering sebuah baik sign: ini berarti pertama hal painted adalah juga largest satu, dengan Tidak wasted early-paint pada chrome itu tidak penting untuk pengguna.

Evidence for this claim FCP answers when any eligible content first appears, while LCP tracks the largest eligible viewport candidate; neither metric proves the page's main content is complete or useful. Scope: field and lab Confidence: high · Verified: First Contentful Paint (FCP)

Satu pengukuran oddity worth knowing: karena security restrictions pada cross-origin image timing, browser API dapat di rare cases report LCP sebelumnya daripada FCP. itu’s sebuah pengukuran artifact, tidak sesuatu itu physically happened.

Thresholds — dan mengapa lab dan field disagree

Field thresholds (CrUX, p75): baik ≤ 1,8 s · perlu improvement ≤ 3,0 s · poor > 3,0 s. Google’s guidance adalah untuk mengukur di 75th percentile dari halaman memuat, split di seluruh mobile dan desktop.

Evidence for this claim A good FCP is 1.8 seconds or less at the 75th percentile; above 3 seconds is poor. Scope: Current web.dev FCP field thresholds. Confidence: high · Verified: web.dev: First Contentful Paint

tetapi Lighthouse desktop menggunakan berbeda, stricter cutoffs — green adalah roughly 0–0,9 s, orange 0,9–1,6 s, red di atas 1,6 s — karena lab berjalan sebuah bersih, throttled Chrome pada sebuah simulated device, tidak dunia nyata conditions. (itu bands, like score weights di bawah, adalah Lighthouse-versi-spesifik — ini reflects saat ini audit doc sebagai dari ini writing.) Lighthouse FCP score adalah “a perbandingan dari Anda halaman’s FCP time dan FCP times untuk real websites, based pada data dari itu HTTP Archive.” (terjemahan) “sebuah perbandingan dari Anda halaman’s FCP time dan FCP times untuk nyata situs web, berdasarkan data dari HTTP Archive.”

ini adalah single sebagian besar umum sumber dari FCP confusion, so internalize ini:

** 1,8 s “good” (terjemahan) “baik” line adalah field (CrUX p75) threshold. Lighthouse desktop’s “green” (terjemahan) “green” line adalah ~0,9 s. mereka adalah berbeda scales untuk berbeda jobs.**

Field dan lab angka diverge mainly karena mereka sample berbeda populations, tidak karena satu adalah universally “lebih benar.” (terjemahan) “lebih benar.” Lighthouse berjalan sebuah single bersih session pada fixed device/network conditions. Field/CrUX aggregates nyata devices, nyata networks, cache status, dan navigation jenis — including back/forward-cache restores dan prerendered halaman, yang jangan secara otomatis mendapatkan sebuah fresh FCP cara sebuah wajar navigation melakukan; mereka perlu mereka own lifecycle menangani ( web-vitals library melakukan ini untuk Anda). pada sebagian besar situs field angka melakukan baca lebih tinggi — pengguna nyata carry rantai pengalihan, sebelumnya- halaman unload time, dan cold connections sebuah lab jalankan skips — tetapi itu’s sebuah tendency, tidak sebuah aturan. sebelum reading sebuah lab/field kesenjangan sebagai sebuah masalah, periksa Anda’re comparing like-untuk-like (sama device class, sama network conditions). gunakan data lapangan untuk Anda dunia nyata angka dan Lighthouse untuk diagnosis.

Di mana FCP sits di Lighthouse score

di Lighthouse 10 — saat ini versi sebagai dari ini writing, tidak sebuah permanent figure — FCP adalah 10% dari performa score. penuh weighting:

MetricWeight
Total Blocking Time (TBT)30%
Largest Contentful Paint (LCP)25%
Cumulative Layout Shift (CLS)25%
pertama Contentful Paint (FCP)10%
Speed indeks10%

performa score adalah sebuah weighted average dari individual metric scores, dan Google notes weightings perubahan di atas time sebagai mereka research evolves — FCP memiliki held di 10% dari Lighthouse 8 melalui 10, tetapi konfirmasi terhadap whatever versi Anda’re berjalan sebelum treating “10%” (terjemahan) “10%” sebagai timeless. practical baca: sebuah perfect FCP dapat hanya move Anda Lighthouse angka so far — dan sebuah buruk FCP sering poin di sebuah buruk LCP too (mereka share root penyebab), though itu’s sebuah overlap worth memeriksa, tidak sesuatu score jaminan.

Apa penyebab sebuah slow FCP

di rough priority order:

  1. Render-blocking resources — #1 killer. CSS dan synchronous JS di <head> force browser untuk tunggu: ini dapat’t bangun CSSOM dan render tree, so ini dapat’t paint apa pun, until itu files adalah downloaded dan parsed.
  2. tinggi TTFB — FCP dapat’t fire sebelum bytes arrive. sebuah slow server adalah pertama domino, dan ini adalah di dalam FCP pengukuran.
  3. rantai pengalihan — setiap redirect adalah sebuah penuh round-trip ditambahkan sebelum pertama byte.
  4. Webfont memuat strategyfont-display: block (atau Tidak aturan) dapat leave text invisible untuk up untuk ~3 seconds. bahkan jika paint technically fires pada sebuah background, pengguna sees tidak ada apa pun berguna.

cara perbaiki ini

penuh list, tetapi dengan sebuah priority order docs jangan memberikan Anda. ini adalah umum levers, tidak universal ones — periksa Anda own trace atau filmstrip pertama untuk see yang resource atau phase adalah sebenarnya delaying Anda FCP candidate sebelum reaching untuk memperbaiki (preconnect, preload, sebuah font-display perubahan) itu dapat tidak apply untuk Anda halaman:

melakukan ini pertama (biggest wins):

  • Eliminate render-blocking CSS dan JavaScript. Inline critical, di atas—fold CSS secara langsung di <head>; muat rest asynchronously; tambahkan async/defer untuk non-critical scripts. Repositioning sebuah <link> tag melakukan tidak help — browser tidak akan paint until semua CSS adalah dimuat dan parsed regardless dari di mana tag sits.
  • Reduce TTFB (server respons time). Caching, sebuah CDN, sebuah lebih cepat origin — apa pun itu mendapatkan pertama byte out sooner secara langsung shaves FCP.
  • Perbaiki font memuat. gunakan font-display: swap (menampilkan fallback text immediately, swaps di web font ketika ready) atau font-display: optional (skips web font jika ini tidak sudah cached). hindari font-display: block untuk critical text — ini adalah worst untuk FCP.

lalu tidy up rest:

  • Preconnect untuk diperlukan origins dengan <link rel="preconnect"> — establishing early connections untuk penting ketiga-party origins dapat save 100–500 ms.
  • Preload key permintaan (<link rel="preload">) untuk sebuah critical font atau LCP image.
  • Minify CSS, hapus unused CSS, hapus unused JavaScript — lebih kecil files parse dan unblock paint lebih cepat.
  • hindari multiple redirects, hindari enormous network payloads, sajikan static assets dengan sebuah efficient cache policy, hindari sebuah excessive DOM size, dan minimize critical permintaan depth. umum payload hygiene itu semua feeds pertama paint.

FCP → TTFB → LCP diagnostic chain

ini adalah bagaimana I’d sebenarnya gunakan FCP, dan ini adalah framing docs gesture di tetapi jangan develop. Treat three memuat metrics sebagai satu workflow:

  1. FCP adalah tinggi → periksa untuk render-blocking resources (CSS/JS di <head>). itu’s sebagian besar umum penyebab dan fastest win.
  2. juga periksa TTFB — karena FCP mencakup ini, sebuah slow server inflates FCP sebelum apa pun render-blocking bahkan enters picture. web.dev’s guidance: karena TTFB precedes keduanya FCP dan LCP, Anda server seharusnya respond fast cukup itu 75th percentile dari pengguna hit sebuah “good” (terjemahan) “baik” FCP.
  3. ini sama masalah sering cascade ke LCP — metric itu’s sebenarnya sebuah peringkat sinyal — karena FCP dan LCP frequently share root penyebab. itu’s sebuah overlap worth memeriksa, tidak sebuah jaminan: LCP memiliki factors dari -nya own ( size, priority, dan muat path dari -nya spesifik largest element), so memperbaiki FCP’s penyebab tidak promise sebuah fixed LCP. ini adalah right pertama place untuk look, tidak terakhir langkah.

itu’s nilai dari FCP untuk sebuah SEO: ini adalah sebuah cheap, early baca pada apakah memuat path adalah healthy, sebelum lebih selective LCP pengukuran bahkan menyelesaikan.

Add an expert note

Pin an expert quote

New person? Create their unclaimed profile at /admin/experts/ → Pin a quote first.