TextDiff adalah alat diff online gratis untuk menemukan perbedaan antara dua teks. Letakkan berdampingan dua tulisan yang mirip tetapi sedikit berbeda — draf dan revisi dokumen, kontrak yang Anda kirim dan yang dikembalikan, versi lama dan baru sebuah kode — lalu alat ini menandai dengan warna baris mana yang ditambah, dihapus, atau diubah, serta kata atau karakter mana tepatnya yang berubah di dalam baris.
Seluruh perbandingan berlangsung di dalam browser. Teks yang dimasukkan dan file yang dibuka tidak dikirim ke server, sehingga dokumen internal atau kontrak yang tidak boleh keluar pun tetap bisa dibandingkan. Perhitungan berjalan di Web Worker, jadi layar tidak macet meskipun masukannya puluhan ribu baris.
Fitur utama
Sorotan baris dan isi baris
Setelah menemukan baris yang berubah, alat ini menyorot sekali lagi bagian yang berubah di dalam baris itu per kata, potongan, atau karakter.
Tampilan berdampingan dan gabungan
Beralih antara tampilan berdampingan (side-by-side) dan tampilan gabungan (unified) yang dibaca dari atas ke bawah seperti di git.
Opsi pengabaian
Perbandingan dapat mengabaikan spasi di akhir baris, jumlah spasi, semua spasi, huruf besar/kecil, dan baris kosong.
Normalisasi akhir baris
Perbedaan baris baru Windows (CRLF) dan macOS/Linux (LF), serta ada tidaknya baris baru terakhir, dianggap sama.
Bandingkan JSON dengan kunci diurutkan
Kedua JSON di-parse, kunci objek diurutkan, dan indentasi diseragamkan sebelum dibandingkan. Perbedaan urutan kunci saja tidak dihitung sebagai perbedaan.
Statistik dan navigasi perubahan
Menampilkan jumlah baris yang ditambah, dihapus, dan diubah serta tingkat kemiripan (%), dan langsung melompat ke perubahan sebelumnya atau berikutnya.
Perubahan saja
Bagian panjang yang tidak berubah dilipat, hanya menyisakan 3 baris di sekitar setiap perubahan. Bagian yang dilipat dapat dibuka dengan mengkliknya.
Seret file
Seret .txt, .md, .json, .csv, dan berbagai file kode ke kolom, atau lepaskan dua file sekaligus untuk langsung membandingkannya.
Ekspor patch dan HTML
Salin atau simpan hasil sebagai teks unified diff (patch), atau salin sebagai tabel HTML berwarna untuk ditempel di email atau dokumen.
Cara pakai
- Tempel teks acuan di kolom kiri (asli) dan teks pembanding di kolom kanan (perubahan). Anda juga bisa menyeret file ke kolom atau memakai tombol buka di atasnya.
- Jika 'Bandingkan saat mengetik' aktif, hasil muncul begitu Anda berhenti mengetik. Jika tidak, tekan [Bandingkan] atau Ctrl+Enter.
- Bila perlu, pilih abaikan spasi, huruf besar/kecil, atau baris kosong, satuan perbandingan dalam baris (kata/potongan/karakter), dan pengurutan kunci JSON. Perbandingan langsung diulang setiap kali opsi diubah.
- Di bilah hasil, pilih tampilan berdampingan atau gabungan, lalu berpindah antarperubahan dengan tombol panah atas/bawah (atau Alt+↑/↓).
- Untuk berbagi, salin atau simpan patch, atau salin hasil sebagai HTML.
Penjelasan opsi perbandingan
| Spasi: bandingkan apa adanya | Spasi dan tab diperlakukan sama seperti karakter lain. Beda satu indentasi saja sudah membuat baris berbeda. |
|---|---|
| Spasi: abaikan spasi di akhir baris | Hanya spasi dan tab yang tersisa di akhir baris yang diabaikan. Menyaring perbedaan akibat spasi yang dihapus atau ditinggalkan otomatis oleh editor. (Mirip -Z pada GNU diff) |
| Spasi: abaikan jumlah spasi | Satu spasi dan banyak spasi dianggap sama. Namun, tempat yang ada spasinya tetap berbeda dari tempat tanpa spasi: 'a b' dan 'a b' sama, tetapi 'a b' dan 'ab' berbeda. (diff -b) |
| Spasi: abaikan semua spasi | Semua spasi dihapus sebelum dibandingkan, sehingga 'a b' dan 'ab' pun dianggap baris yang sama. (diff -w) |
| Dalam baris: kata | Menandai perubahan per kelompok huruf dan angka serta per simbol. Cocok untuk kode dan teks bahasa Inggris. |
| Dalam baris: potongan antarspasi | Satuannya adalah segala sesuatu di antara spasi, termasuk tanda baca yang menempel. Nyaman untuk membaca kalimat biasa. |
| Dalam baris: karakter | Membandingkan per karakter. Dipakai untuk menunjuk dengan tepat tempat yang hanya berubah satu-dua karakter, seperti nominal, tanggal, dan nomor pasal. |
| Abaikan huruf besar/kecil | Huruf kapital dan huruf kecil dianggap huruf yang sama. |
| Abaikan baris kosong | Baris yang kosong atau hanya berisi spasi dikeluarkan dari perbandingan. Baris kosong ditampilkan pudar dan tidak masuk hitungan perubahan. (Mirip diff -B) |
| Normalkan akhir baris | CRLF, CR, dan LF semuanya dianggap baris baru yang sama, dan ada tidaknya baris baru di akhir file juga diabaikan. Jika dimatikan, CR di akhir baris ditampilkan sebagai ␍ dan baris tanpa baris baru terakhir ditampilkan sebagai ∅. |
| Urutkan kunci JSON | Kedua sisi di-parse sebagai JSON, kunci objek diurutkan secara alfabetis, lalu ditulis ulang dengan indentasi 2 spasi sebelum dibandingkan. Urutan array tidak diubah. Jika parse gagal, posisi galatnya ditampilkan. |
Perbedaan akhir baris (seperti CRLF) hanya dibandingkan secara tepat untuk teks yang dimuat dari berkas. Pada teks yang ditempel ke kotak input, browser mengubah jeda baris menjadi LF sehingga perbedaan CR tidak terlihat.
Pintasan keyboard
Ctrl+Enter / ⌘+Enter | Bandingkan sekarang |
Alt+↓ / Alt+↑ | Ke perubahan berikutnya / sebelumnya |
n / p (di luar kolom masukan) | Ke perubahan berikutnya / sebelumnya |
Tab (di dalam kolom masukan) | Mengetik karakter tab |
Isi masukan Anda tidak dikirim ke mana pun
Mesin perbandingan adalah JavaScript (diff-core.js) yang diunduh bersama halaman ini, dan teks serta file hanya diproses di memori browser. Isi masukan tidak disimpan; browser hanya mengingat tema dan pilihan opsi. Begitu halaman ditutup, isi masukan hilang.
Pertanyaan yang sering diajukan
Apakah teks yang saya bandingkan disimpan di server?
Tidak. Perbandingan dilakukan hanya dengan JavaScript di dalam browser, dan isi masukan tidak dikirim ke server mana pun. Pada halaman yang sudah terbuka, perbandingan tetap berjalan meskipun koneksi jaringan diputus.
Seberapa besar teks yang bisa dibandingkan?
Satu file dapat dimuat hingga 30 MB, dan perbandingan berukuran puluhan ribu baris diproses di thread terpisah (Web Worker) sehingga layar tidak macet. Jika perbedaannya sangat banyak, demi kecepatan hasilnya bisa berupa perkiraan, bukan yang paling minimal. Jika hasil melebihi 4.000 baris, bagian yang berubah ditampilkan lebih dulu.
Algoritma apa yang dipakai?
Perbandingan per baris memakai algoritma selisih O(ND) dari Myers (1986) yang diimplementasikan dengan ruang memori linear. Jika biayanya menjadi terlalu besar, alat ini beralih ke pembagian perkiraan seperti GNU diff. Di dalam baris yang berubah, kata, potongan, atau karakter dibandingkan ulang dengan algoritma yang sama.
Bagaimana 'diubah' dibedakan dari 'ditambah/dihapus'?
Di dalam bagian yang berubah, jika isi baris yang dihapus dan baris yang ditambah cukup mirip, keduanya dipasangkan dan dihitung sebagai satu baris yang diubah. Baris yang tidak mendapat pasangan dihitung sebagai 'ditambah' atau 'dihapus'.
Bagaimana kemiripan (%) dihitung?
Yaitu proporsi karakter yang tidak berubah dari seluruh karakter di kedua sisi (termasuk baris baru). Baris yang sama dihitung seluruhnya, sedangkan pada baris yang diubah hanya bagian yang tetap sama yang dihitung.
Apa bedanya abaikan jumlah spasi dan abaikan semua spasi?
Abaikan jumlah spasi hanya mengabaikan berapa banyak spasinya, sehingga 'a b' dan 'ab' dianggap berbeda. Abaikan semua spasi menghapus seluruh spasi sebelum membandingkan, sehingga keduanya dianggap sama. Pada kode yang indentasinya bermakna seperti Python, gunakan abaikan semua spasi dengan hati-hati.
Bisakah patch yang dibuat dengan opsi pengabaian aktif diterapkan?
Patch dibuat berdasarkan perbedaan yang tampil di layar, dan baris konteks diambil dari teks asli. Perbedaan yang diabaikan tidak masuk ke patch, jadi untuk membuat file yang persis sama, matikan semua opsi sebelum membuat patch.
Bisakah membandingkan dokumen Word, PDF, atau HWP?
File tersebut tidak dapat dibaca langsung, tetapi Anda bisa menyalin teks dari dokumen lalu menempelkannya untuk dibandingkan. Tabel, catatan kaki, dan format bisa hilang saat itu. Tips lengkapnya ada di panduan membandingkan dokumen.
Apakah bisa dipakai di ponsel?
Bisa. Di layar sempit, kolom masukan ditumpuk atas-bawah dan hasil dimulai dalam tampilan gabungan. Anda juga dapat beralih ke tampilan berdampingan.
Panduan
- Bagaimana diff Menemukan Perbedaan — LCS dan Algoritma Myers
- Myers, Patience, Histogram — Perbandingan Algoritma diff
- Cara Membaca unified diff (patch) — Panduan untuk Tinjauan Kode
- Perbedaan Opsi Abaikan Spasi — diff -b, -w, -B, -Z dan Padanannya di git
- Koreksi Dokumen dan Perbandingan Kontrak — Cara Menemukan Semua Perbedaan Dua Versi
- Cara Membandingkan JSON — Mengurutkan Kunci dan Normalisasi
- Karakter Akhir Baris (CRLF dan LF) dan Perbedaan Tak Terlihat — Saat Semua Baris Dianggap Berubah