Skip to content

Metin Karşılaştırma ve Diff

İki metni tarayıcınızda anında karşılaştırın. Satır içi kelime düzeyinde vurgulu yan yana görünüm, unified-diff dışa aktarımı, büyük/küçük harf — boşluk — boş satır yoksayma. %100 gizli — metniniz cihazınızdan ayrılmaz.

Takip Yok Tarayıcıda Çalışır Ücretsiz
Tüm karşılaştırma tarayıcınızda yerel olarak çalışır. Metniniz bu cihazdan ayrılmaz.
Yoksayma seçenekleri
`diff -u` çıktısıyla parite, satır içi LCS doğruluğu ve erişilebilirlik (ARIA rolleri, ekran okuyucu değişiklik bildirimleri, RTL/LTR işleme) için gözden geçirilmiştir. — Go Tools Metin Araçları Ekibi · May 21, 2026

Metin Diff nedir?

Metin diff, iki metin belgesinin yapılandırılmış karşılaştırmasıdır; birini diğerine dönüştüren en küçük ekleme ve silme kümesini bulur. Çıktı değişikliği görünür kılar: eklenen satırlar için yeşil, kaldırılan satırlar için kırmızı, yan yana veya unified-patch biçiminde (`git`, GitHub ve Unix `patch` komutunun kullandığı `---/+++/@@` biçimi).

Kaputun altında her modern diff bir Longest Common Subsequence (LCS) algoritmasıdır. Eugene Myers'ın 1986 tarihli O((N+M)D) makalesi kanonik verimli uygulamadır; klasik dinamik programlama (burada kullanılan, ortak ön ek/son ek kırpmasıyla) daha basittir ve tipik web girdileri için mükemmel çalışır. Satırlar hizalandıktan sonra, komşu kaldırma + ekleme çiftleri ikinci bir token düzeyinde LCS'den geçirilir, böylece render edici yalnızca bir satır içinde gerçekten değişen kelimeleri vurgulayabilir — inceleyenlerin satır içi veya kelime düzeyinde diff dediği şey.

Neden sadece dizeleri karakter karakter karşılaştırmıyoruz? Çünkü düzenlemeler nadiren düzdür: 200 satırlık bir dosyanın ortasına bir satır eklemek altındaki her satırı kaydırır. Naif bir `===` 199 satırı farklı sayar. LCS gerçeği söyler: bir satır eklendi, 199 satır değişmedi.

Bu araç tüm karşılaştırmayı tarayıcınızda yürütür. Yükleme yok, geçici dosya yok, log yok. Özel kodlar, kırmızı çizgi sözleşmeler, özel loglar veya üçüncü taraf sunucusuna yapıştırmaktan rahatsızlık duyacağınız her şey için güvenlidir. JSON karşılaştırmanız gerekiyor mu? Anahtar sırası ve boşlukların artık gürültü olmaması için yapısal JSON Diff aracını kullanın. YAML veya CSV'de iki yapılandırmayı karşılaştırıyor musunuz? Önce YAML to JSON veya JSON to CSV ile dönüştürün, sonra biçim için doğru araçla diff yapın.

// Two strings that look 'mostly the same' but a naïve check disagrees
const a = 'hello world';
const b = 'hello, world!';

// Character equality
a === b; // false — but only 3 characters actually changed.

// LCS-style diff (this tool, at line + word granularity)
// → 1 line modified, inline highlight: 'hello[, ]world[!]'
// → unified patch:
//   --- original
//   +++ modified
//   @@ -1 +1 @@
//   -hello world
//   +hello, world!

Temel Özellikler

Yan Yana + Unified

Görsel iki sütunlu görünüm (insan incelemesi için) ile kanonik unified-diff yama biçimi (`git apply`, kod inceleme araçları, hata raporları için) arasında geçiş yapın.

Satır içi kelime düzeyinde vurgulama

İki satır değiştirilmiş olarak eşleştirildiğinde yalnızca değişen tokenler renkli arka plan taşır. Gözünüz 80 karakteri taramak yerine düzenlemeyi anında bulur.

Büyük/küçük harf / boşluk / boş satır yoksay

Dört bağımsız anahtar: büyük/küçük harf, tüm boşluk, yalnızca sondaki boşluk, boş satırlar. Birkaç tıklamayla `git diff -i -w -b` davranışını tekrarlar.

Unified diff dışa aktarma

Üç satır bağlamla temiz bir `---/+++/@@` yamasını kopyalayın. Doğrudan bir PR yorumuna, hata raporuna veya `patch -p1` komutuna düşer.

%100 tarayıcı tabanlı

Girdiler cihazınızdan asla ayrılmaz. Yükleme yok, metin üzerinde analitik yok. Sayfa yüklendikten sonra çevrimdışı çalışır. Özel kodlar ve gizli düzyazılar için güvenlidir.

Unicode + RTL duyarlı

Tokenleri Unicode kelime sınırlarında böler. Arapça, İbranice, CJK içerik temiz karşılaştırılır; satır sonu varyantları (CRLF, LF, CR) hepsi normalleştirilir.

Örnekler

Kod incelemesi — tek değişken yeniden adlandırma

function getUser(id) {
  const u = db.users.find(x => x.id === id);
  return u;
}
function getUser(userId) {
  const u = db.users.find(x => x.id === userId);
  return u;
}

Yan yana görünüm yeniden adlandırmayı içeren her satırı vurgular; satır içi kelime diff'i değişmeyen tokenleri soluklaştırır, böylece inceleyen kişi tam olarak hangi tanımlayıcının değiştiğini görür.

Sözleşme düzenlemesi — bir madde eklendi

1. The service is provided as-is.
2. Either party may terminate with 30 days notice.
3. Disputes are resolved in California courts.
1. The service is provided as-is.
2. Either party may terminate with 30 days notice.
2a. Termination notice must be in writing.
3. Disputes are resolved in California courts.

Tek bir eklenmiş madde (satır 2a) yegane farktır. Çevredeki bağlam satırları temiz kalır — sözleşme veya politika belgelerinde kırmızı çizgi incelemesi için ideal.

Log incelemesi — istek süresi değişti

GET /api/users 200 14ms
POST /api/orders 201 88ms
GET /api/orders/42 200 21ms
GET /api/users 200 14ms
POST /api/orders 201 4200ms
GET /api/orders/42 500 21ms

İki satır değişiyor. Satır içi vurgu 88ms → 4200ms gecikme kayması ile 200 → 500 durum kodunu gösteriyor. Olay zaman çizelgesi için tipik bir durum.

Sondaki boşluk — 'Sondakileri yoksay' seçeneğini açın

  margin: 0;  
  padding: 0;
  border: none;
  margin: 0;
  padding: 0;
  border: none;

Seçenek olmadan 1. satırda fark bildirilir (sondaki boşluklar). 'Sondaki boşluk / sekmeleri yoksay' seçeneğini açın ve fark sıfıra düşer — `git diff -b`'nin yaptığı aynı numara.

Nasıl Kullanılır

  1. 1

    Her iki sürümü yapıştırın

    Orijinal metin solda, değiştirilen metin sağda. Yazdıkça canlı diff işlenir; büyük girdiler (toplam >200 KB) manuel Diff düğmesine geçer.

  2. 2

    İhtiyacınız olan yoksayma seçeneklerini açın

    Büyük/küçük harf yoksay, tüm boşlukları yoksay, sondaki boşlukları yoksay veya boş satırları yoksay — her biri bağımsız, ziyaretler arasında kalıcı.

  3. 3

    Diff'i okuyun veya yamayı alın

    İnsan incelemesi için Yan Yana, `---/+++/@@` yama biçimi için Unified. Unified diff kopyala, kod incelemesi veya `patch -p1` için panonuza temiz bir yama gönderir.

Yaygın Diff Tuzakları

Windows'tan Unix'e kopyaladıktan sonra tüm dosya 'değişmiş'

Windows'taki Notepad'den Unix'te düzenlenmiş bir orijinale yapıştırırsanız her satır `\r` farkı gösterir. CR karakterlerini susturmak için 'Sondaki boşluk / sekmeleri yoksay' seçeneğini açın.

✗ Yanlış
Diff: 200 modifications (all because of trailing \r)
✓ Doğru
Ignore trailing spaces / tabs → 2 real changes

Sadece girintilemeyle ilgili diff bağırıyor

Sekmeleri ↔ boşlukları yeniden biçimlendirmek satır satır diff'leri patlatır. 'Tüm boşlukları yoksay' diff'i gerçek anlamsal değişikliklere indirir.

✗ Yanlış
Diff: 87 modifications (all are indent changes)
✓ Doğru
Ignore all whitespace → 4 actual changes

Bir boş satır yüzünden aynı paragraflar işaretleniyor

Düzyazıya tek bir boş satır eklemek veya kaldırmak tüm bir bölgeyi yanlış hizalayabilir. 'Boş satırları yoksay' içeriğe dokunmadan bunu giderir.

✗ Yanlış
Diff: paragraph 2 'completely changed' (one blank line moved)
✓ Doğru
Ignore blank lines → no changes in paragraph 2

Diff 'aynı' diyor ama dosyalar farklı

Neredeyse her zaman önceki oturumdan açık kalmış bir büyük/küçük harf veya boşluk yoksayma seçeneği vardır. Yoksayma seçenekleri panelini açın — her anahtar orada görünür. Bayt-katı karşılaştırma istiyorsanız hepsini kapatın.

✗ Yanlış
0 differences shown, but `cmp` says the files differ
✓ Doğru
Disable all Ignore options → real diff appears

Yapıştırılan JSON 'her şey değişmiş' gibi görünüyor

Metin diff anahtar sırasını anlamlı sayar; JSON saymaz. JSON yükleri için özel JSON Diff aracını kullanın — anahtar sırasını yoksayar ve tür katılığına saygı duyar.

✗ Yanlış
Text diff on JSON: 100% of lines changed (just a key reorder)
✓ Doğru
<a href="/tr/tools/json-diff">JSON Diff</a>: 0 differences

Diff kırpma uyarısı yoksayıldı

Taraf başına 5.000 satırın üzerinde girdi kırpılır. Uyarı çıkıyorsa komut satırında `diff -u file1 file2` veya `git diff --no-index` komutuna geçin — her ikisi de akış yapar ve gigabaytları kaldırır.

✗ Yanlış
Pasted a 20,000-line log — only first 5,000 lines diffed
✓ Doğru
`diff -u a.log b.log` in terminal handles full file

Yaygın Kullanım Senaryoları

Kod inceleme parçacığı
Bir fonksiyonun iki sürümünü kutulara bırakın; yeniden adlandırma, kaldırılmış bir dal veya yeni bir koruyucu cümle bir bakışta görünür. Tek satırlık bir değişiklik için GitHub diff'ini taramaktan satır içi kelime vurgusu daha hızlıdır.
Sözleşme / politika kırmızı çizgi
Dünkü sözleşmeyi bugünkü revizyonla yapıştırın. Eklenen maddeler göze çarpar; değişmeyen paragraflar griye iner. Hukuki inceleme izi için unified yamayı dışa aktarın.
Log zaman çizelgesi incelemesi
Bir SRE'nin olay öncesi log dilimini olay sırasındaki dilimle karşılaştırın. Gecikme, durum kodu ve sıklık kayması `awk` olmadan hemen yüzeye çıkar.
Düzyazı / taslak revizyonu
Bir taslağı editörünüzün sürümüyle yapıştırın. Satır içi kelime diff'i hangi cümlelerin yeniden yazıldığını tam olarak gösterir — değişiklikleri birer birer kabul veya reddetmek için paha biçilmez.
Çeviri incelemesi
Yeni metnin anlamı, yapıyı ve yer tutucuları koruduğunu doğrulamak için eski bir çeviriyi yeniden çeviriyle karşılaştırın. Çevirmenlerin sıkça soktuğu gürültüyü susturmak için 'Sondaki boşluğu yoksay' seçeneğini açın.
Yapılandırma / .env dosya denetimi
İki `.env`, `docker-compose.yaml` veya shell rc dosyasını karşılaştırın. 'Boş satırları yoksay' açıkken diff biçim gürültüsü yerine işlevsel farklara odaklanır.

Teknik Ayrıntılar

Ön ek/son ek kırpmalı LCS
Ortak başta ve sonda gelen satırlar dinamik programlama LCS'sini çalıştırmadan önce çıkarılır. 'Tek satır değişen iki 2.000 satırlık yapılandırma' diff'i 1×1 DP tablosuna iner ve bir milisaniyenin altında işlenir.
Token düzeyinde satır içi diff
Komşu kaldırma + ekleme parçaları eşleştirilir ve Unicode kelime/kelime-dışı/boşluk öbekleri üzerinden tokenleştirilir. İkinci bir LCS geçişi, değiştirilen satırları okunaklı kılan yeşil/kırmızı token aralıklarını üretir.
Unified diff = git/patch uyumlu
Çıktı, GNU patch için tanımlanan ve Git, GitHub ve her kod inceleme aracının kullandığı `---/+++/@@ -L,C +L,C @@` biçimini izler. `pbpaste | patch -p0` ile uygulayın.
Taraf başına 5.000 satır girdi tavanı
Tavanın üzerinde diff kırpılır ve uyarı verir. Çoklu megabaytlık girdiler için komut satırında `diff -u` veya `git diff --no-index` kullanın — bunlar akış yapar ve gigabaytları kaldırır.

En İyi Uygulamalar

Okumadan önce yoksayma seçeneklerini seçin
Sondaki boşluk, CRLF ve büyük/küçük harf gürültüsü sinyali boğar. Önce doğru seçenekleri açın; diff çok daha kolay okunur ve kendinizi 'sahte' değişiklikleri taramaya alıştırmazsınız.
Paylaşırken Unified, incelerken Yan Yana kullanın
Görsel sütunlar sizin gözleriniz içindir. Unified yamalar herkesin terminali içindir. Kopyalanmış unified diff, çeviri olmadan bir Slack mesajına, bir Jira yorumuna veya `patch -p1` komutuna düşer.
% benzerlik ile mantık denetimi yapın
İki dosya 'neredeyse aynı' ama benzerlik puanı %30 ise satır sonu veya boşluk sorununuz var demektir. Diff'i okumadan önce 'Tüm boşlukları yoksay' seçeneğini açıp yeniden kontrol edin.

Sık Sorulan Sorular

Yapıştırdığım metin sunucunuza gönderiliyor mu?
Hayır. Her karşılaştırma tarayıcınızın içinde JavaScript ile çalışır. Metniniz yüklenmez, kayıt edilmez, diske yazılmaz veya üçüncü taraflara iletilmez. Yalnızca arayüz tercihleriniz (görünüm modu ve yoksayma anahtarları) localStorage'a kaydedilir, böylece sayfa bir sonraki ziyarette bunları hatırlar — metin asla kaydedilmez. DevTools → Network açarak doğrulayabilirsiniz: Diff'e tıkladığınızda sıfır istek gider.
Metin diff ile JSON diff arasındaki fark nedir?
Metin diff satır satır karşılaştırır — düzyazı, kod, log, sözleşme, yapılandırma dosyaları için mükemmeldir. JSON Diff ise JSON'un veri modelini anlar: anahtar sırası önemsizdir, türler katıdır, diziler anahtara göre eşleştirilebilir. JSON'u metin diff'e yapıştırırsanız anahtar yeniden sıralamaları ve boşluk farkları değişiklik olarak işaretlenir; JSON Diff bunları yoksayar. Yapılandırılmamış içerik için metin diff'i, API yanıtları ve yapılandırma yükleri için JSON Diff'i kullanın.
Boşluk, büyük/küçük harf veya boş satırları nasıl yoksayarım?
Diff'in üstündeki 'Yoksayma seçenekleri' panelini açın. 'Büyük/küçük harf yoksay' A ile a'yı eşitler. 'Tüm boşlukları yoksay' karşılaştırmadan önce her boşluk, sekme ve yeni satırı toparlar. 'Sondaki boşluk / sekmeleri yoksay' yalnızca satır sonu boşluğunu kırpar — standart `git diff -b` davranışı. 'Boş satırları yoksay' karşılaştırmadan önce yalnızca boşluk içeren satırları atar. Her seçenek bağımsızdır ve ziyaretler arası kalıcıdır.
Unified diff nedir (ve ne zaman kopyalarım)?
Unified diff, `patch`, `git apply`, GitHub PR'leri ve çoğu kod inceleme aracının kullandığı `---/+++/@@` metin biçimidir. 'Unified diff kopyala'ya tıklayarak her değişiklik etrafında üç satır bağlam içeren bir yama alın — onu bir hata raporuna, kod inceleme yorumuna veya `patch -p1` komutuna yapıştırın, temiz şekilde uygulanır. Yan yana insanlar için, unified diff makineler (ve makineler gibi düşünen kod inceleyenler) içindir.
Yalnızca bir kelime düzenlediğim halde diff neden tüm satırı değişmiş gösteriyor?
Göstermiyor — yakından bakın. Satırın tamamı vurgulanır çünkü içinde bir şey değişti; ama vurgunun içinde yalnızca değişen tokenler parlak arka plan taşır (eklenenler için yeşil, kaldırılanlar için üstü çizili kırmızı). Buna satır içi kelime diff'i denir: satır bağlamı okunabilir kalırken gözünüz tam düzenlemeye iniyor. Birbirini izleyen iki satır değiştirilmişse her ikisi de satır içi vurgu gösterir.
CRLF ve LF satır sonları nasıl işleniyor?
Her ikisi de tanınır. Diff, `\r\n`, `\n` ve yalın `\r` üzerinden bölünür, böylece Windows CRLF, Unix LF ve eski Mac CR metinleri doğru şekilde hizalanır. Özellikle satır sonu değişikliklerini işaretlemek istiyorsanız 'Sondaki boşluk / sekmeleri yoksay' seçeneğini kapalı bırakın — `\r` sondaki karakter olarak görünür. Satır sonu gürültüsünü tamamen silmek için 'Tüm boşlukları yoksay' seçeneğini açın.
İki girdi ne kadar büyük olabilir?
Diff ana iş parçacığında çalışır, dolayısıyla pratik sınırlar her taraf için yaklaşık 5.000 satır veya 1 MB'dır; bu sınırın üzerinde kırpıp uyarı gösteririz. 200 KB toplamın üzerinde canlı diff devre dışı kalır ve manuel Diff düğmesine geçer. Çoklu megabaytlık dosyalar için komut satırında `diff -u` veya `git diff --no-index` kullanın — bunlar akış yapar ve gigabaytları kaldırır.
Peki kod karşılaştırma? Dilimi biliyor mu?
Diff dilden bağımsızdır: söz dizimini değil, satırları ve tokenleri görür. Bu, inceleme parçacıkları, yapılandırma düzenlemeleri ve kopya-yapıştır yamalar için bir özelliktir. Anlamsal kod diff'i (dosyalar arası yeniden adlandırılan fonksiyon, AST düzeyinde) istiyorsanız git'i, GitHub PR görünümünü veya özel bir yapısal diff aracını kullanın. Kod incelemenin %90'ında — bir fonksiyona göz atmak, iki parçacığı karşılaştırmak — satır + kelime diff'i tam olarak istediğinizdir.
Tek bir düzenleme bazen neden kaldırılmış satır artı eklenmiş satır olarak görünür?
Bir satırın çok büyük kısmı değiştiğinde kelime düzeyinde vurgulama yararsız hale gelir; diff bunu ayrı kaldırma + ekleme satırları olarak bildirir, böylece yapı temiz kalır. Aynı sezgisel yöntem, yeniden yazılan düzyazı ve düzenlenmek yerine yeniden yazılmış kod blokları için okunabilir çıktı verir. Yamalarda kullanılan klasik `-`/`+` çiftli biçimi görmek için Unified görünümüne geçin.
% eşleşme benzerliği nasıl hesaplanır?
Değişmeyen satır sayısının (yoksayma seçenekleri uygulandıktan sonra) iki satır sayısının büyüğüne bölünüp %100 ile sınırlandırılmasıyla bulunur. İki aynı girdi %100'dür. 100 satırlık bir dosyaya yeni bir satır eklemek %99 verir. Her satırı değiştirmek %0'dır. Diff'i okumadan önce 'bu küçük bir düzenleme mi yoksa toptan yeniden yazım mı' kararını hızlıca vermek için kullanışlıdır.
Bir diff'i meslektaşımla paylaşabilir miyim?
Evet, iki yolla. (1) 'Unified diff kopyala'ya tıklayıp yamayı sohbete, Slack'e veya bir PR yorumuna yapıştırın — terminali olan herkes `patch < clip` ile uygulayabilir. (2) Görsel inceleme için yan yana panelin ekran görüntüsünü alın. 'URL ile paylaş' düğmesini kasıtlı olarak sunmuyoruz: bu, metninizi yüklemeyi gerektirir ve biz bunu yapmıyoruz.
Diff, Arapça veya İbranice gibi sağdan sola dilleri destekliyor mu?
Metin içeriği için evet — satırlar ve tokenler Unicode duyarlıdır. Arayüz mantıksal CSS yönleri kullanır, böylece RTL yerel ayarlarında oluk ve satır sütunları doğal olarak ters döner. Bir diff hücresi içinde metin yönü içeriğe uyar; Arapça ve İbranice diziler doğru gösterilirken +/- işaretleri oluğa hizalı kalır.

Ücretsiz Regex Tester — İfadeleri Çevrimiçi Sınayın

Metin İşleme

Düzenli ifadeleri herhangi bir metne karşı anında test edin. Canlı eşleşme vurgulama, yakalama grupları, değiştirme önizlemesi, bölme ve desen açıklayıcı. JavaScript lehçesi regex, %100 gizli, çevrimiçi, ücretsiz, kayıt yok.

Ücretsiz Kelime Sayıcı ve Karakter Sayma Aracı

Metin İşleme

Kelime, karakter, cümle, paragraf ve okuma süresini anında sayın. Twitter, meta açıklama ve Instagram sınır denetimleriyle gerçek zamanlı kelime sayıcı. Ücretsiz, gizli, çevrimiçi, kayıt yok.

Sayı Tabanı Dönüştürücü — Binary, Hex, Decimal ve Octal

Dönüştürme Araçları

Binary, hex, decimal, octal ve herhangi bir taban (2-36) arasında anında dönüştürün. Ücretsiz ve gizli — tüm işlem tarayıcınızda yapılır.

Base64 Çözücü ve Kodlayıcı

Kodlama ve Biçimlendirme

Base64'ü ücretsiz çevrimiçi kodlayın ve çözün. Tam UTF-8 ve emoji desteğiyle gerçek zamanlı dönüştürme. %100 tarayıcıda — kayıt gerekmez.

Crontab Oluşturucu ve Cron İfadesi Üretici

Tarih ve Saat

Cron ifadelerini tarayıcıda oluşturun, doğrulayın ve çözümleyin. Yerel saatte veya UTC olarak canlı çalışma önizlemesi. POSIX 5 alanlı söz dizimi, hazır şablonlar ve sade açıklama. Ücretsiz ve gizli.

CSV'den JSON'a Dönüştürücü

Kodlama ve Biçimlendirme

CSV'yi tarayıcınızda JSON'a dönüştürün. RFC 4180, tür çıkarımı, başlık satırı, büyük tam sayı güvenli. %100 gizli, yükleme yok.