CLS Nedir ve Nasıl Düzeltilir? Cumulative Layout Shift Rehberi

sametgness · 28 Eylül 2026 · 1 görüntülenme · 0 cevap

CLS (Cumulative Layout Shift), bir web sayfası görüntülenirken içeriklerin beklenmedik şekilde ne kadar yer değiştirdiğini ölçen Core Web Vitals metriklerinden biridir. Sayfa açıldıktan sonra yazının aşağı kayması, butonun aniden yer değiştirmesi veya sonradan yüklenen reklamın bütün içeriği aşağı itmesi CLS sorununa örnektir.


İyi bir kullanıcı deneyimi için Google'ın kullandığı yaygın eşiklere göre CLS değerinin 0,1 veya altında olması hedeflenir. 0,1 ile 0,25 arasındaki değerler iyileştirme gerektirebilir; 0,25'in üzerindeki değerler ise zayıf kabul edilir.

CLS neden önemlidir?

Kullanıcı bir bağlantıya tıklamak üzereyken sayfa düzeni aniden değişirse yanlış butona basabilir.

Örneğin kullanıcı:

Giriş Yap

butonuna basmak isterken üst tarafta sonradan bir reklam yüklenir ve buton aşağı kayarsa farklı bir bağlantıya tıklayabilir.

Bu tür beklenmedik hareketler kullanıcı deneyimini doğrudan olumsuz etkiler.

CLS sorununun en yaygın nedenleri nelerdir?

Yüksek CLS değerinin arkasında genellikle şunlardan biri bulunur:

- Boyutları belirtilmemiş görseller
- Sonradan yüklenen reklamlar
- Dinamik içerikler
- Embed ve iframe alanları
- Font değişimleri
- Sonradan eklenen banner'lar
- Cookie veya bildirim alanları
- İçeriğin üzerine değil arasına sonradan eklenen bileşenler

Sorunu düzeltmek için önce hangi elementin sayfa düzenini değiştirdiğini bulmak gerekir.

1. Görseller için alan ayırın

HTML içerisinde görselin genişlik ve yükseklik bilgilerini belirtmek tarayıcının görsel yüklenmeden önce ne kadar alan ayıracağını hesaplamasına yardımcı olur.

Örneğin:

<img src="/gorsel.webp" width="800" height="450" alt="Örnek görsel">

Görsel henüz indirilmemiş olsa bile tarayıcı en-boy oranını hesaplayabilir.

Responsive tasarım için CSS tarafında:

max-width: 100%;

height: auto;

gibi kurallar kullanılabilir.

Amaç görsel yüklenmeden önce sayfadaki alanının mümkün olduğunca belli olmasıdır.

2. Reklam alanlarının boyutunu önceden belirleyin

Reklamlar CLS sorunlarının önemli kaynaklarından biri olabilir.

Örneğin sayfa ilk açıldığında reklam alanı yoksa ancak birkaç saniye sonra 728×90 reklam yüklenerek içeriği aşağı itiyorsa layout shift oluşabilir.

Bunun yerine reklam yüklenmeden önce ilgili alan için uygun yer ayrılabilir.

Örneğin masaüstünde 728×90 reklam gösterilecekse tasarımda bu alanın kaplayacağı bölüm önceden rezerve edilebilir.

Reklam gelmese bile yerleşimin nasıl davranacağı önceden planlanmalıdır.

3. Sonradan açılan duyuru bantlarına dikkat edin

Sayfa açıldıktan sonra header'ın üzerinde bir duyuru bandı oluşturulması bütün sayfanın aşağı kaymasına neden olabilir.

Örneğin:

- Sayfa açılır.
- Header üstte görünür.
- JavaScript çalışır.
- Duyuru bandı eklenir.
- Header ve içerik aşağı kayar.

Bu durumda CLS oluşabilir.

Duyuru bandının yüksekliğini önceden ayırmak veya sayfanın ilk render aşamasında doğru yerleşimi oluşturmak daha iyi sonuç verir.

4. Header yüksekliğini sabit ve öngörülebilir tutun

Logo veya menü sonradan yüklenerek header yüksekliğini değiştiriyorsa sayfanın geri kalanı hareket edebilir.

Özellikle:

- Logo
- Kullanıcı avatarı
- Menü
- Bildirim alanı
- Reklam
- Üst banner

gibi header içerisinde bulunan öğelerin kaplayacağı alan mümkün olduğunca önceden belli olmalıdır.

5. Font yüklenmesi CLS oluşturabilir

Web fontu yüklenmeden önce tarayıcı geçici bir font gösterebilir.

Daha sonra gerçek font geldiğinde karakterlerin genişliği veya yüksekliği değişirse satırlar yeniden düzenlenebilir.

Bu durum layout shift oluşturabilir.

Font optimizasyonunda:

- Gereksiz font ağırlıklarını azaltmak
- Kritik fontları doğru yüklemek
- Uygun fallback font seçmek
- Font dosyalarının yüklenmesini optimize etmek

yardımcı olabilir.

Ancak yalnızca CLS puanını düşürmek için fontları kontrolsüz biçimde preload etmek performansın başka bölümlerini olumsuz etkileyebilir.

6. iframe ve embed alanlarına boyut verin

YouTube videosu, harita veya başka bir embed sonradan yükleniyorsa ilgili alan için önceden yer ayrılmalıdır.

Responsive video alanlarında aspect-ratio oldukça kullanışlı olabilir.

Örneğin:

aspect-ratio: 16 / 9;

kullanılarak video yüklenmeden önce alanın oranı korunabilir.

7. Dinamik içerikleri mevcut içeriğin üstüne eklerken dikkat edin

JavaScript ile sonradan:

- Uyarı
- Kampanya
- Reklam
- Bildirim
- Öneri kutusu

ekleniyorsa mevcut içeriğin aşağı itilmesine neden olabilir.

Mümkün olduğunda alanı başlangıçtan itibaren ayırın veya kullanıcı etkileşimiyle açılan öğeleri mevcut sayfa düzenini beklenmedik şekilde değiştirmeyecek biçimde tasarlayın.

8. Skeleton ve placeholder kullanımı yardımcı olabilir

API üzerinden içerik yükleyen sayfalarda veri gelene kadar hiçbir şey göstermeyip ardından büyük bir içerik bloğu oluşturmak sayfa düzenini değiştirebilir.

İçeriğin yaklaşık boyutu biliniyorsa uygun:

- Placeholder
- Skeleton
- Minimum yükseklik

kullanılması yerleşimin daha stabil kalmasına yardımcı olabilir.

Ancak placeholder boyutunun gerçek içerikten çok farklı olması da hareket oluşturabilir.

9. Lazy loading kullanırken alanı koruyun

Lazy loading, görselleri ihtiyaç duyulana kadar yüklemeyerek performansa yardımcı olabilir.

Ancak lazy yüklenen görsel için önceden alan ayrılmamışsa görsel geldiğinde aşağıdaki içerikleri itebilir.

Bu nedenle:

loading="lazy"

kullanmak tek başına yeterli değildir.

Görselin boyutu veya en-boy oranı da doğru şekilde tanımlanmalıdır.

10. Cookie bildirimi CLS oluşturabilir mi?

Evet.

Sayfanın üst bölümüne sonradan eklenen büyük bir cookie bildirimi bütün içeriği aşağı kaydırabilir.

Tasarım tercihine göre bildirim mevcut içeriği itmek yerine sabit bir katman olarak gösterilebilir veya kaplayacağı alan başlangıçtan itibaren hesaba katılabilir.

Burada erişilebilirlik ve kullanıcı etkileşimini engellememe de dikkate alınmalıdır.

11. CLS nasıl ölçülür?

CLS değerini incelemek için farklı araçlardan yararlanılabilir.

Yaygın seçenekler arasında:

- PageSpeed Insights
- Chrome DevTools
- Lighthouse
- Chrome User Experience Report tabanlı veriler
- Search Console Core Web Vitals raporları

bulunur.

Araçların sunduğu verilerin aynı şeyi temsil etmeyebileceğini unutmayın.

12. Laboratuvar verisi ile gerçek kullanıcı verisi farklı olabilir

Kendi bilgisayarınızda yaptığınız testte CLS:

0

çıkabilir ancak gerçek kullanıcı verilerinde daha yüksek değer görülebilir.

Bunun nedeni gerçek ziyaretçilerin:

- Farklı cihazlar
- Farklı internet hızları
- Farklı ekran boyutları
- Farklı cache durumları
- Farklı sayfalar

kullanmasıdır.

Bu nedenle yalnızca tek bir Lighthouse testine bakarak bütün sitenin CLS sorununun çözüldüğünü düşünmeyin.

13. CLS değeri kaç olmalı?

Yaygın Core Web Vitals değerlendirmesinde:

0 – 0,1: İyi

0,1 – 0,25: İyileştirme gerekli

0,25 üzeri: Zayıf

Bu değerlendirmeler gerçek kullanıcı verilerinde belirli bir dağılım yaklaşımıyla ele alınır; tek bir test sonucu bütün sitenin durumunu temsil etmeyebilir.

14. CLS sorununu çözmek için nereden başlanmalı?

En doğru yöntem puanı rastgele düşürmeye çalışmak yerine hareket eden elementi bulmaktır.

Şu sırayla ilerleyebilirsiniz:

1. Sorunlu sayfayı test edin.
2. Hangi elementlerin hareket ettiğini belirleyin.
3. Görsellerin boyutlarını kontrol edin.
4. Reklam alanlarını inceleyin.
5. Header ve duyuru bantlarını kontrol edin.
6. iframe ve embed alanlarına bakın.
7. Font yüklenmesini inceleyin.
8. Dinamik JavaScript içeriklerini kontrol edin.
9. Düzeltmeden sonra tekrar test yapın.
10. Gerçek kullanıcı verilerinin zaman içerisinde güncellenmesini takip edin.

CLS düzeltirken yapılmaması gerekenler

Sorunu gizlemek amacıyla sayfanın tamamına rastgele sabit yükseklikler vermek responsive tasarımı bozabilir.

Aynı şekilde:

overflow: hidden

kullanarak hareketin veya taşmanın görünmesini engellemek gerçek CLS nedenini çözmez.

Amaç sayfanın hareketini saklamak değil, tarayıcının içerik yüklenmeden önce doğru alanı ayırmasını sağlamaktır.

CLS ve SEO ilişkisi

CLS, Google'ın Core Web Vitals kapsamında değerlendirdiği kullanıcı deneyimi metriklerinden biridir. Ancak Google sıralamasını yalnızca tek bir CLS değerine indirgemek doğru değildir.

İçeriğin kalitesi, arama niyetine uygunluk ve diğer birçok sinyal de arama performansında rol oynar.

Bu nedenle CLS optimizasyonunun temel amacı yalnızca SEO puanı yükseltmek değil, daha stabil ve kullanışlı bir web sayfası oluşturmak olmalıdır.

Özetle CLS sorununu düzeltmenin en etkili yolu görsel, reklam, banner, iframe ve dinamik içeriklerin kaplayacağı alanı mümkün olduğunca önceden belirlemek ve sayfa açıldıktan sonra beklenmedik yerleşim değişikliklerini azaltmaktır.

Özellikle reklam ve dinamik içerik kullanan sitelerde alanların önceden rezerve edilmesi CLS değerinde önemli iyileşme sağlayabilir.