İlk İçerikli Boyama (FCP)

İlk İçerikli Boyama'nın neyi ölçtüğünü, iyi bir FCP skorunun ne olduğunu, neden bir Core Web Vital olmadığını, First Paint ve LCP'den nasıl farklı olduğunu ve yavaş bir FCP'nin nasıl düzeltileceğini öğrenin.

İlk yayın tarihi: 26 Haz 2026 · Son güncelleme: 13 Ağu 2026 · Advanced
Diller

İlk İçerikli Boyama (FCP), bir sayfanın yüklenmeye başlamasından içeriğinin herhangi bir bölümünün — metin, görsel, SVG veya beyaz olmayan canvas — ilk kez oluşturulmasına kadar geçen süredir. Gerçek kullanıcıların 75. yüzdelik diliminde ≤1,8 sn iyi kabul edilir. FCP bir Core Web Vital DEĞİLDİR: sıralama sinyalleri LCP, INP ve CLS'dir. FCP, hem laboratuvarda hem de alanda kullanılan ve LCP'nin yapı taşlarından biri olan bir tanı metriğidir — LCP'den önce veya onunla aynı anda gerçekleşir — dolayısıyla esas olarak oluşturmayı engelleyen kaynakları ve yavaş TTFB'yi belirlemekte yararlıdır. Lighthouse 10'da Performans skorunun %10'unu oluşturur. Oluşturmayı engelleyen CSS/JS'yi ortadan kaldırarak, TTFB'yi azaltarak, kritik CSS'yi satır içine alarak, font-display: swap kullanarak ve gerekli kaynak sunuculara ön bağlantı kurarak FCP'yi iyileştirin.

TL;DR — FCP, gezinmenin başlangıcından herhangi bir sayfa içeriğinin (metin, görsel, <svg> veya beyaz olmayan <canvas>) ilk kez oluşturulmasına kadar geçen süredir. Bir Core Web Vital değildir — tamamlayıcı, hem laboratuvar hem de alan ortamında kullanılan bir tanı metriği ve LCP’nin yapı taşlarından biridir (FCP, LCP’den önce veya onunla aynı anda gerçekleşir). Alan eşikleri (p75): İyi ≤ 1,8 sn, iyileştirme gerekli ≤ 3,0 sn, zayıf > 3,0 sn. Lighthouse 10’da Performans skorunun %10’unu oluşturur. FCP’nin saati gezinmeyle başladığından yönlendirme süresini, bağlantı kurulumunu ve TTFB’yi içerir; bu nedenle laboratuvar (Lighthouse) ve alan (CrUX) değerleri sıklıkla farklılaşır. Sorunu bulunduğu yerde giderin: önce oluşturmayı engelleyen CSS/JS, ardından TTFB, sonra yazı tipleri.

FCP tam olarak neyi ölçer?

Buradaki doğruluk temelini, Philip Walton’ın web.dev makalesindeki Google tanımı oluşturur: “First Contentful Paint (FCP) measures the time from when the user first navigated to the page to when any part of the page’s content is rendered on the screen.” (çeviri) “First Contentful Paint (FCP), kullanıcının sayfaya ilk kez gitmeye başladığı andan sayfa içeriğinin herhangi bir bölümünün ekranda oluşturulduğu ana kadar geçen süreyi ölçer.” Aynı belgeye göre “Content” şu anlama gelir: “text, images (including background images), <svg> elements, or non-white <canvas> elements.” (çeviri) “metin, görseller (arka plan görselleri dâhil), <svg> öğeleri veya beyaz olmayan <canvas> öğeleri.”

Bütün yükü taşıyan sözcük herhangi sözcüğüdür. FCP, neyin oluşturulduğuyla ilgilenmez — 40 piksellik bir logo, tam boyutlu bir ana görselle aynı şekilde sayılır. Bu, “ekranda henüz herhangi bir şey var mı?” sinyalidir; tam da bu nedenle bir tamamlanma metriği değil, erken göstergedir.

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

Kolayca gözden kaçabilecek ve değeri yorumlama biçiminizi değiştiren bir ayrıntı vardır: FCP’nin saati gezinmeyle başlar, dolayısıyla HTML’niz daha ayrıştırılmadan önce gerçekleşen her şeyi kapsar. Google’ın kendi Key Point ifadesi şöyledir: “FCP includes any unload time from the previous page, connection set up time, redirect time, and Time To First Byte (TTFB) which can be significant when measured in the field.” (çeviri) “FCP, önceki sayfanın boşaltılma süresini, bağlantı kurulum süresini, yönlendirme süresini ve alanda ölçüldüğünde önemli olabilen Time To First Byte (TTFB) süresini içerir.” Yanıt vermesi 1,5 sn süren bir sunucu, tarayıcı tek bir baytı bile işlemeden 1,8 sn’lik bütçenizin büyük bölümünü tüketmiş olur.

FCP bir Core Web Vital DEĞİLDİR

Çoğu sayfa bu konuda kaçamak konuştuğu için açık söyleyeyim: FCP bir Core Web Vital değildir ve Google’ın sıralama sinyallerinin bir parçası değildir. Core Web Vitals; LCP, INP ve CLS’dir — Google’ın Arama sıralamasıyla ilgili Core Web Vitals sayfasında FCP’den hiç söz edilmez.

Google’ın sınıflandırmasına göre FCP, tanı amacıyla yararlı olan ve “Other Web Vital” olarak adlandırılan tamamlayıcı bir metriktir. web.dev bunu şöyle ifade eder: “the metrics Time to First Byte (TTFB) and First Contentful Paint (FCP) are both vital aspects of the loading experience, and are both useful in diagnosing issues with LCP (slow server response times or render-blocking resources, respectively).” (çeviri) “Time to First Byte (TTFB) ve First Contentful Paint (FCP) metriklerinin ikisi de yükleme deneyiminin hayati unsurlarıdır ve LCP sorunlarının tanılanmasında — sırasıyla yavaş sunucu yanıt süreleri veya oluşturmayı engelleyen kaynaklar bakımından — yararlıdır.”

Dolayısıyla paydaşlara sunulacak dürüst çerçevenin iki yönü vardır ve ikisini de çekinmeden belirtmelisiniz:

  • FCP sıralamaları doğrudan etkilemez. FCP’yi “SEO için” optimize etmeyin.
  • FCP, sıralamaları etkileyen LCP için çok iyi bir tanı metriğidir. Oluşturmayı engelleyen kaynaklar önce FCP’de kendini gösterir.

FCP ile First Paint (FP) arasındaki fark

Bu ikisi sürekli birbirine karıştırılır:

  • First Paint (FP), tarayıcı herhangi bir şeyi — gerçek içerik içermeyen düz bir arka plan rengini bile — boyadığında tetiklenir.
  • FCP yalnızca uygun içerik oluşturulduğunda tetiklenir: metin, görseller (arka plan görselleri dâhil), <svg> öğeleri veya beyaz olmayan <canvas> öğeleri. Bu, genel bir “herhangi bir DOM içeriği” kuralı değil, spesifikasyonda tanımlanmış belirli bir listedir. Arka plan görseli DOM’da metin olmadığı hâlde sayıldığı için bu ayrımı doğru biçimde korumak önemlidir.

Dolayısıyla her zaman FP ≤ FCP’dir. Çoğu sayfada ikisi neredeyse aynıdır; çünkü üzerinde içerik bulunmayan bir arka plan renginin boyanması nadirdir. Aralarında anlamlı bir fark olduğunda bu genellikle, herhangi bir gerçek içerikten önce dekoratif bir arka planın boyandığı anlamına gelir. Paint Timing API hem first-paint hem de first-contentful-paint girdilerini döndürür; ancak analiz edilmeye değer olan FCP’dir. FP nadiren eyleme geçirilebilir bir bilgi sunar.

FCP ile LCP arasındaki fark

İnsanların birbirine karıştırdığı diğer ikili şöyledir:

  • FCP = herhangi bir içeriğin boyandığı an. Erken tetiklenir. Küçük bir logo veya gezinme bağlantısı olabilir.
  • LCP = görünüm alanındaki en büyük öğenin oluşturulduğu an. FCP ile aynı anda veya FCP’den sonra tetiklenir.

Google’ın ifadesiyle FCP, herhangi bir içeriğin; LCP ise ana içeriğin ne zaman boyandığını ölçer. Bu nedenle LCP’nin daha seçici olması amaçlanır. Bunu “daha seçici” olarak okuyun, “doğruluğu onaylanmış” olarak değil — iki metrik de sayfanın gerçek ana içeriğinin tamamlandığını veya ziyaretçi için yararlı olduğunu kanıtlamaz. FCP yalnızca uygun bir şeyin boyandığını; LCP ise uygun adayların en büyüğünün boyandığını doğrular. Bir sayfanın FCP’si hızlı (logo 0,5 sn’de), LCP’si yavaş (ana görsel 4 sn’de) olabilir — bu farkın kendisi yararlı bir tanı sinyalidir. FCP’niz LCP’nize yakınsa bu da çoğu zaman iyiye işarettir: İlk boyanan öğenin aynı zamanda en büyük öğe olduğu ve kullanıcı için önemsiz arayüz süslerine erken boyama harcanmadığı anlamına gelir.

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)

Bilinmeye değer bir ölçüm tuhaflığı vardır: kaynaklar arası görsel zamanlamasına ilişkin güvenlik kısıtlamaları nedeniyle tarayıcı API’si nadir durumlarda LCP’yi FCP’den daha erken bildirebilir. Bu, fiziksel olarak gerçekleşmiş bir olay değil, ölçümden kaynaklanan bir artefakttır.

Eşikler — laboratuvar ve alan verileri neden uyuşmaz?

Alan eşikleri (CrUX, p75): İyi ≤ 1,8 sn · iyileştirme gerekli ≤ 3,0 sn · zayıf > 3,0 sn. Google, sayfa yüklemelerinin mobil ve masaüstü olarak ayrılarak 75. yüzdelik dilimde ölçülmesini önerir.

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

Ancak Lighthouse masaüstünde farklı ve daha katı eşikler kullanır — yeşil yaklaşık 0–0,9 sn, turuncu 0,9–1,6 sn, kırmızı ise 1,6 sn’nin üzeridir — çünkü laboratuvar gerçek dünya koşullarını değil, simüle edilmiş bir cihazda temiz ve kısıtlanmış bir Chrome oturumunu çalıştırır. (Aşağıdaki skor ağırlıkları gibi bu aralıklar da Lighthouse sürümüne özgüdür; burada yazının hazırlandığı sıradaki güncel denetim belgesi esas alınmıştır.) Lighthouse FCP skoru “a comparison of your page’s FCP time and FCP times for real websites, based on data from the HTTP Archive.” (çeviri) “FCP skorunuz, HTTP Archive verilerine dayanarak sayfanızın FCP süresiyle gerçek web sitelerinin FCP sürelerinin karşılaştırılmasıdır.”

Bu, FCP hakkında en sık karşılaşılan kafa karışıklığıdır; dolayısıyla şu ayrımı iyice benimseyin:

1,8 sn’lik “iyi” sınırı alan (CrUX p75) eşiğidir. Lighthouse masaüstünün “yeşil” sınırı yaklaşık 0,9 sn’dir. Bunlar farklı amaçlara hizmet eden farklı ölçeklerdir.

Alan ve laboratuvar değerleri, birinin evrensel olarak “daha doğru” olmasından değil, esas olarak farklı kitleleri örneklemelerinden dolayı ayrışır. Lighthouse, sabit cihaz ve ağ koşullarında tek bir temiz oturum çalıştırır. Alan/CrUX ise gerçek cihazları, gerçek ağları, önbellek durumlarını ve gezinme türlerini bir araya getirir — normal bir gezinmedeki gibi otomatik olarak yeni bir FCP üretmeyen geri/ileri önbelleği geri yüklemeleri ve önceden oluşturulmuş sayfalar da buna dâhildir; bunlar için ayrı yaşam döngüsü işlemleri gerekir (web-vitals kütüphanesi bunu sizin için yapar). Çoğu sitede alan değeri gerçekten daha yüksek görünür — gerçek kullanıcılar, laboratuvar çalıştırmasının atladığı yönlendirme zincirlerini, önceki sayfanın boşaltılma süresini ve soğuk bağlantıları beraberinde getirir — ancak bu bir eğilimdir, kural değildir. Laboratuvar ve alan arasındaki farkı sorun olarak yorumlamadan önce benzer koşulları karşılaştırdığınızdan emin olun (aynı cihaz sınıfı ve aynı ağ koşulları). Gerçek dünyadaki değeriniz için alan verilerini, tanılama için Lighthouse’ı kullanın.

FCP’nin Lighthouse skorundaki yeri

Bu yazı hazırlandığı sırada güncel sürüm olan — ancak kalıcı bir değer sunmayan — Lighthouse 10’da FCP, Performans skorunun %10’unu oluşturur. Ağırlıkların tamamı şöyledir:

MetrikAğırlık
Total Blocking Time (TBT)%30
Largest Contentful Paint (LCP)%25
Cumulative Layout Shift (CLS)%25
First Contentful Paint (FCP)%10
Speed Index%10

Performans skoru, her bir metrik skorunun ağırlıklı ortalamasıdır. Google, araştırmaları geliştikçe ağırlıkların zaman içinde değiştiğini belirtir — FCP, Lighthouse 8’den 10’a kadar %10 düzeyinde kalmıştır; ancak “%10” değerini değişmez kabul etmeden önce kullandığınız sürümde bunu doğrulayın. Pratik açıdan bakıldığında kusursuz bir FCP, Lighthouse skorunuzu yalnızca belirli bir ölçüde yükseltebilir. Kötü bir FCP de çoğu zaman kötü bir LCP’ye işaret eder (ortak temel nedenleri vardır); ancak bu, skorun garanti ettiği bir sonuç değil, kontrol edilmeye değer bir örtüşmedir.

FCP’nin yavaş olmasına ne yol açar?

Kabaca öncelik sırasına göre:

  1. Oluşturmayı engelleyen kaynaklar — bir numaralı sorundur. <head> içindeki CSS ve senkron JS tarayıcıyı beklemeye zorlar: Bu dosyalar indirilip ayrıştırılana kadar tarayıcı CSSOM’u ve oluşturma ağacını kuramaz, dolayısıyla hiçbir şeyi boyayamaz.
  2. Yüksek TTFB — baytlar ulaşmadan FCP tetiklenemez. Yavaş bir sunucu ilk domino taşıdır ve FCP ölçümünün içindedir.
  3. Yönlendirme zincirleri — her yönlendirme, ilk bayttan önce eklenen tam bir gidiş-dönüştür.
  4. Web yazı tipi yükleme stratejisifont-display: block (veya herhangi bir kuralın bulunmaması) metni yaklaşık 3 saniyeye kadar görünmez bırakabilir. Arka planda teknik olarak boyama gerçekleşse bile kullanıcı yararlı hiçbir şey görmez.

FCP nasıl düzeltilir?

Belgelerde bulunmayan bir öncelik sırasıyla eksiksiz listeyi burada bulabilirsiniz. Bunlar evrensel çözümler değil, yaygın müdahale noktalarıdır — sayfanıza uymayabilecek çözümlere (ön bağlantı kurma, önceden yükleme veya font-display değişikliği) başvurmadan önce sizin FCP adayınızı gerçekte hangi kaynağın veya aşamanın geciktirdiğini belirlemek için kendi izinizi ya da film şeridinizi inceleyin:

Önce bunları yapın (en büyük kazanımlar):

  • Oluşturmayı engelleyen CSS ve JavaScript’i ortadan kaldırın. İlk ekranda gereken kritik CSS’yi doğrudan <head> içine satır içi olarak ekleyin; kalanını eşzamansız yükleyin; kritik olmayan komut dosyalarına async/defer ekleyin. Bir <link> etiketini başka yere taşımak işe yaramaz — etiket nerede bulunursa bulunsun, tüm CSS yüklenip ayrıştırılana kadar tarayıcı boyama yapmaz.
  • TTFB’yi (sunucu yanıt süresini) azaltın. Önbellekleme, CDN veya daha hızlı bir kaynak sunucu — ilk baytın daha erken gönderilmesini sağlayan her şey FCP’yi doğrudan kısaltır.
  • Yazı tipi yüklemesini düzeltin. font-display: swap (yedek metni hemen gösterir ve web yazı tipi hazır olduğunda ona geçer) veya font-display: optional (web yazı tipi önbellekte değilse onu atlar) kullanın. Kritik metinlerde font-display: block kullanmayın — FCP açısından en kötü seçenektir.

Ardından geri kalanını düzenleyin:

  • <link rel="preconnect"> ile gerekli kaynak sunuculara önceden bağlanın — önemli üçüncü taraf kaynak sunucularla erkenden bağlantı kurmak 100–500 ms kazandırabilir.
  • Kritik bir yazı tipi veya LCP görseli için önemli istekleri önceden yükleyin (<link rel="preload">).
  • CSS’yi küçültün, kullanılmayan CSS’yi ve kullanılmayan JavaScript’i kaldırın — daha küçük dosyalar daha hızlı ayrıştırılır ve boyamanın önündeki engeli daha çabuk kaldırır.
  • Birden fazla yönlendirmeden, çok büyük ağ yüklerinden ve aşırı DOM boyutundan kaçının; statik varlıkları verimli bir önbellek politikasıyla sunun ve kritik istek derinliğini en aza indirin. Bunların tümü ilk boyamaya katkıda bulunan genel yük düzenlemeleridir.

FCP → TTFB → LCP tanı zinciri

FCP’yi pratikte böyle kullanırdım; belgelerin işaret edip geliştirmediği çerçeve de budur. Üç yükleme metriğini tek bir iş akışı olarak ele alın:

  1. FCP yüksekse → oluşturmayı engelleyen kaynakları kontrol edin (<head> içindeki CSS/JS). Bu, en yaygın neden ve en hızlı kazanımdır.
  2. TTFB’yi de kontrol edin — FCP bunu içerdiğinden yavaş bir sunucu, oluşturmayı engelleyen kaynaklar henüz devreye girmeden FCP’yi yükseltir. web.dev’in rehberliğine göre TTFB hem FCP’den hem LCP’den önce gerçekleştiği için sunucunuz, kullanıcıların 75. yüzdelik diliminin “iyi” bir FCP değerine ulaşmasını sağlayacak kadar hızlı yanıt vermelidir.
  3. Aynı sorunlar çoğu zaman LCP’ye de zincirleme yansır — bu, gerçekten sıralama sinyali olan metriktir — çünkü FCP ve LCP sıklıkla ortak temel nedenlere sahiptir. Bu, kontrol edilmeye değer bir örtüşmedir; garanti değildir. LCP’nin kendine özgü etkenleri vardır (belirli en büyük öğenin boyutu, önceliği ve yükleme yolu), dolayısıyla FCP’nin nedenlerini gidermek LCP’nin de düzeltileceğini garanti etmez. Burası bakılacak doğru ilk yerdir, son adım değildir.

Bir SEO uzmanı açısından FCP’nin değeri budur: Daha seçici LCP ölçümü henüz tamamlanmadan, yükleme yolunun sağlıklı olup olmadığı hakkında hızlı ve düşük maliyetli bir erken sinyal verir.

Add an expert note

Pin an expert quote

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