Bandingkan Teks & Text Diff
Bandingkan dua teks langsung di browser. Tampilan berdampingan, sorotan per kata, ekspor diff terpadu, opsi abaikan kapitalisasi/spasi/baris kosong. 100 % di browser — tanpa upload.
Opsi abaikan
Apa itu Text Diff?
Text diff adalah perbandingan terstruktur antara dua dokumen teks yang mencari himpunan terkecil dari penyisipan dan penghapusan untuk mengubah satu menjadi yang lain. Keluarannya membuat perubahan terlihat: hijau untuk baris ditambahkan, merah untuk yang dihapus, side-by-side atau dalam bentuk unified-patch (format `---/+++/@@` yang dipakai `git`, GitHub, dan perintah `patch` di Unix).
Di balik layar, setiap diff modern adalah algoritma Longest Common Subsequence (LCS). Makalah Eugene Myers 1986 dengan kompleksitas O((N+M)D) adalah implementasi efisien yang kanonik; dynamic programming klasik (yang dipakai di sini, dengan pemotongan prefix/suffix yang sama) lebih sederhana dan bekerja sempurna untuk input web tipikal. Setelah baris-baris berbaris, pasangan hapus + tambah yang bertetangga dilewatkan ke LCS kedua di level token sehingga renderer dapat menyorot hanya kata yang benar-benar berubah di dalam baris — itulah yang reviewer sebut intra-line atau word-level diff.
Kenapa tidak sekadar membandingkan string karakter demi karakter? Karena editan jarang datar: menyisipkan satu baris di tengah file 200 baris akan menggeser setiap baris di bawahnya. `===` naif akan menganggap 199 baris berbeda. LCS memberi tahu kebenarannya: satu baris ditambahkan, 199 baris tidak berubah.
Alat ini menjalankan seluruh perbandingan di browser Anda. Tanpa upload, tanpa file sementara, tanpa log. Aman untuk kode proprietary, kontrak yang sedang di-redline, log privat, atau apa pun yang tidak nyaman Anda tempel ke server pihak ketiga. Butuh diff JSON? Gunakan JSON Diff struktural agar urutan kunci dan spasi berhenti menjadi noise. Membandingkan dua konfigurasi dalam YAML atau CSV? Konversi dulu dengan YAML to JSON atau JSON to CSV, lalu diff dengan alat yang tepat untuk formatnya.
// 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!
Fitur Utama
Side-by-Side + Unified
Beralih antara tampilan visual dua kolom (untuk review manusia) dan format patch unified-diff kanonik (untuk `git apply`, alat code review, laporan bug).
Sorot kata di dalam baris
Saat dua baris dipasangkan sebagai dimodifikasi, hanya token yang berubah membawa latar berwarna. Mata Anda menemukan editan secara instan, bukan menyapu 80 karakter.
Abaikan huruf besar-kecil / spasi / baris kosong
Empat toggle independen: huruf besar-kecil, semua spasi, hanya spasi trailing, baris kosong. Mereplikasi `git diff -i -w -b` dalam dua klik.
Ekspor unified diff
Salin patch `---/+++/@@` yang bersih dengan tiga baris konteks. Langsung jatuh ke komentar PR, laporan bug, atau `patch -p1`.
100% berbasis browser
Input tidak pernah meninggalkan perangkat Anda. Tanpa upload, tanpa analitik atas teks. Bekerja offline setelah halaman dimuat. Aman untuk kode proprietary dan prosa rahasia.
Sadar Unicode + RTL
Memecah token pada batas kata Unicode. Konten Arab, Ibrani, CJK dibandingkan dengan rapi; varian line-ending (CRLF, LF, CR) semua dinormalkan.
Contoh
Code review — satu rename variabel
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;
} Tampilan side-by-side menyorot setiap baris yang mengandung rename, sementara diff kata di dalam baris meredupkan token yang tidak berubah sehingga reviewer langsung melihat identifier mana yang berubah.
Edit kontrak — satu klausa ditambahkan
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.
Satu klausa sisipan (baris 2a) adalah satu-satunya perbedaan. Baris konteks di sekitarnya tetap bersih — berguna untuk redlining kontrak atau dokumen kebijakan.
Investigasi log — waktu request berubah
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
Dua baris berubah. Sorot di dalam baris menunjukkan pergeseran latensi 88ms → 4200ms dan kode status 200 → 500. Khas untuk timeline insiden.
Spasi di ujung baris — aktifkan 'Abaikan trailing'
margin: 0; padding: 0; border: none;
margin: 0; padding: 0; border: none;
Tanpa opsi tersebut, baris 1 dilaporkan berbeda (ada spasi trailing). Aktifkan 'Abaikan spasi / tab trailing' dan diff menjadi nol — trik yang sama dengan `git diff -b`.
Cara Menggunakan
- 1
Tempel kedua versi
Teks asli di kiri, teks yang dimodifikasi di kanan. Diff live merender saat Anda mengetik; input besar (>200 KB gabungan) beralih ke tombol Diff manual.
- 2
Aktifkan opsi abaikan yang Anda butuhkan
Abaikan huruf besar-kecil, abaikan semua spasi, abaikan spasi trailing, atau abaikan baris kosong — masing-masing independen, persist antar kunjungan.
- 3
Baca diff atau ambil patchnya
Side-by-Side untuk review manusia, Unified untuk format patch `---/+++/@@`. Salin unified diff mengirim patch bersih ke clipboard Anda untuk code review atau `patch -p1`.
Jebakan Diff yang Umum
Seluruh file 'berubah' setelah copy Windows-vs-Unix
Jika Anda menempel dari Notepad di Windows ke original yang diedit di Unix, setiap baris akan menampilkan perbedaan `\r`. Aktifkan 'Abaikan spasi / tab trailing' untuk membungkam karakter CR.
Diff: 200 modifications (all because of trailing \r)
Ignore trailing spaces / tabs → 2 real changes
Diff indentasi-saja sedang berteriak
Memformat ulang tab ↔ spasi meledakkan diff baris demi baris. 'Abaikan semua spasi' menciutkan diff ke perubahan semantik yang sesungguhnya.
Diff: 87 modifications (all are indent changes)
Ignore all whitespace → 4 actual changes
Paragraf identik ditandai karena satu baris kosong
Menambah atau menghapus satu baris kosong di prosa bisa menggeser-luruskan seluruh wilayah. 'Abaikan baris kosong' memperbaikinya tanpa menyentuh konten.
Diff: paragraph 2 'completely changed' (one blank line moved)
Ignore blank lines → no changes in paragraph 2
Diff bilang 'identik' tapi file-nya berbeda
Hampir selalu karena opsi abaikan huruf besar-kecil atau spasi yang tertinggal aktif dari sesi sebelumnya. Buka panel Opsi abaikan — setiap toggle ditampilkan di sana. Matikan semuanya jika Anda ingin perbandingan byte-strict.
0 differences shown, but `cmp` says the files differ
Disable all Ignore options → real diff appears
JSON yang ditempel tampak seperti 'semuanya berubah'
Text diff menganggap urutan kunci signifikan; JSON tidak. Untuk payload JSON gunakan alat JSON Diff khusus — ia mengabaikan urutan kunci dan menghormati keketatan tipe.
Text diff on JSON: 100% of lines changed (just a key reorder)
<a href="/id/tools/json-diff">JSON Diff</a>: 0 differences
Peringatan diff terpotong diabaikan
Di atas 5.000 baris per sisi, input dipotong. Jika peringatan muncul, beralih ke command line `diff -u file1 file2` atau `git diff --no-index` — keduanya streaming dan menangani gigabyte.
Pasted a 20,000-line log — only first 5,000 lines diffed
`diff -u a.log b.log` in terminal handles full file
Skenario Penggunaan Umum
- Cuplikan code review
- Letakkan dua versi sebuah fungsi ke dalam kotak untuk melihat rename, branch yang dihapus, atau guard clause baru sekilas mata. Sorot kata inline lebih cepat daripada menyapu diff GitHub untuk perubahan satu baris.
- Redline kontrak / kebijakan
- Tempel kontrak kemarin vs revisi hari ini. Klausa sisipan langsung melompat keluar; paragraf yang tidak berubah menciut jadi abu-abu. Ekspor unified patch untuk jejak review legal.
- Investigasi timeline log
- Bandingkan irisan log pra-insiden SRE dengan irisan saat insiden. Pergeseran latensi, kode status, dan frekuensi langsung muncul ke permukaan tanpa `awk`.
- Revisi draft / prosa
- Tempel draft Anda dan versi editor Anda. Diff kata inline menunjukkan persis kalimat mana yang ditulis ulang — tak ternilai untuk menerima atau menolak perubahan satu per satu.
- Review terjemahan
- Diff terjemahan lama dengan terjemahan ulang untuk memastikan teks baru mempertahankan makna, struktur, dan placeholder. Aktifkan 'Abaikan spasi trailing' untuk membungkam noise yang sering diperkenalkan penerjemah.
- Audit file konfigurasi / .env
- Bandingkan dua `.env`, `docker-compose.yaml`, atau file shell rc. Dengan 'Abaikan baris kosong' aktif, diff fokus pada perbedaan fungsional ketimbang churn pemformatan.
Detail Teknis
- LCS dengan pemotongan prefix/suffix
- Baris awal dan akhir yang sama dilepas sebelum menjalankan LCS dynamic programming. Diff 'dua konfigurasi 2.000 baris dengan satu baris berubah' menciut ke tabel DP 1×1 dan dirender di bawah satu milidetik.
- Diff intra-baris level token
- Hunk hapus + tambah yang bertetangga dipasangkan dan ditokenkan via run kata/non-kata/spasi Unicode. Pass LCS kedua menghasilkan span token hijau/merah yang membuat baris dimodifikasi terbaca.
- Unified diff = kompatibel git/patch
- Output mengikuti format `---/+++/@@ -L,C +L,C @@` yang didefinisikan untuk GNU patch dan dipakai Git, GitHub, dan setiap alat code review. Terapkan dengan `pbpaste | patch -p0`.
- Batas input 5.000 baris per sisi
- Di atas batas, diff dipotong dan memberi peringatan. Untuk input multi-megabyte gunakan command line `diff -u` atau `git diff --no-index` — keduanya streaming dan menangani gigabyte.
Praktik Terbaik
- Pilih opsi abaikan sebelum membaca
- Noise dari trailing space, CRLF, dan huruf besar-kecil menenggelamkan sinyal. Aktifkan opsi yang tepat dulu; diff jauh lebih mudah dibaca dan Anda berhenti melatih diri untuk menyapu lewat perubahan 'palsu'.
- Pakai Unified untuk berbagi, Side-by-Side untuk meninjau
- Kolom visual untuk mata Anda. Patch unified untuk terminal semua orang. Unified diff yang disalin jatuh ke pesan Slack, komentar Jira, atau `patch -p1` tanpa terjemahan.
- Cek kewarasan dengan % kemiripan
- Jika dua file 'hampir sama' tapi skor kemiripan 30%, Anda punya masalah line-ending atau spasi. Aktifkan 'Abaikan semua spasi' dan cek ulang sebelum membaca diff.
Pertanyaan yang Sering Diajukan
Apakah teks yang saya tempel dikirim ke server Anda?
Apa beda text diff dengan JSON diff?
Bagaimana cara mengabaikan spasi, huruf besar-kecil, atau baris kosong?
Apa itu unified diff (dan kapan saya menyalinnya)?
Kenapa diff menampilkan seluruh baris berubah padahal saya hanya mengedit satu kata?
Bagaimana penanganan line ending CRLF vs LF?
Seberapa besar kedua input bisa?
Bagaimana dengan diff kode? Apakah tool ini tahu bahasa saya?
Kenapa satu editan kadang muncul sebagai baris dihapus plus baris ditambahkan?
Bagaimana % kemiripan dihitung?
Bisakah saya membagikan diff ke kolega?
Apakah diff mendukung bahasa kanan-ke-kiri seperti Arab atau Ibrani?
Alat Terkait
Lihat semua alat →Penguji Regex Gratis — Debug & Cocokkan Pola Online
Pemrosesan Teks
Uji pola regex secara langsung terhadap teks apa pun. Penyorotan kecocokan waktu nyata, grup tangkap, pratinjau ganti, pemisah, dan penjelas pola. Ekspresi reguler rasa JavaScript, 100% privat, tanpa daftar.
Alat Penghitung Kata & Karakter Gratis
Pemrosesan Teks
Hitung kata, karakter, kalimat, paragraf, dan waktu baca secara langsung. Penghitung kata waktu nyata dengan pemeriksaan batas Twitter, meta description, dan Instagram. Gratis, privat, tanpa daftar.
Konverter Basis Bilangan — Biner, Hex, Desimal & Oktal
Alat Konversi
Konversi antara biner, hex, desimal, oktal, dan basis apa pun (2-36) secara instan. Presisi BigInt, output siap kode. Gratis, privat — tanpa pendaftaran.
Decode & Encode Base64 Online — Konversi Instan di Browser
Encoding & Pemformatan
Decode dan encode Base64 online gratis. Konversi real-time dengan dukungan UTF-8 dan emoji. 100% privat di browser Anda. Tanpa pendaftaran.
Generator Crontab & Pembuat Ekspresi Cron
Tanggal & Waktu
Bangun, validasi, dan dekode ekspresi cron di peramban Anda. Pratinjau langsung jadwal berikutnya dalam waktu lokal atau UTC. Sintaksis POSIX 5 kolom, preset, deskripsi bahasa biasa. Gratis, privat, tanpa daftar.
Konverter CSV ke JSON
Encoding & Pemformatan
Konversi CSV ke JSON di browser. RFC 4180, infer tipe, baris header, aman big-int. 100% privat, tanpa unggah.