Langsung ke alat
ViewCSV
File tidak diunggah

Validasi file CSV

signups.csv· DATA CONTOH7 baris · 6 kolom
Aturan kolom (opsional)
Aturan disimpan sebagai JSON Table Schema (Frictionless Data), jadi alat lain juga bisa membacanya.
4 galat, 2 peringatan
Laporan
BarisKolomMasalahNilai
1nameDiawali atau diakhiri spasi. Muhammad Santoso
2emailBukan Alamat email yang valid.not-an-email
2signup_dateBukan Tanggal (YYYY-MM-DD) yang valid.2026-02-30
6emailBukan Alamat email yang valid.N/A
6signup_dateBukan Tanggal (YYYY-MM-DD) yang valid.11/03/2026
7nameDiawali atau diakhiri spasi.Putri Pratama

Nomor baris menghitung baris data setelah baris judul; baris baru di dalam tanda kutip tidak memulai baris baru.

Buka file CSV untuk memeriksa strukturnya: jumlah field setiap baris data dibandingkan dengan baris judul kolom, nama kolom yang kosong atau ganda, tanda kutip yang nyasar, akhir baris yang bercampur, dan baris kosong. Tambahkan aturan opsional per kolom, misalnya bilangan bulat, tanggal, email, wajib diisi, unik, nilai yang diizinkan, atau ekspresi reguler, dan setiap masalah dicantumkan lengkap dengan baris data, kolom, dan nilainya. Aturan memakai kosakata Frictionless Table Schema. File diperiksa di browser Anda, tidak diunggah.

Cara memvalidasi file CSV

  1. Buka file .csv, .tsv, atau .txt. Pemisah dan BOM UTF-8 atau UTF-16 dikenali otomatis; jika kolomnya tampak keliru, pilih pemisah lain atau pengodean lama di pengaturan impor.
  2. Jika perlu, isi jumlah kolom yang wajib dimiliki setiap baris data. Jika dibiarkan kosong, dipakai jumlah kolom di baris judul.
  3. Jika perlu, tambahkan aturan untuk kolom yang penting bagi Anda: tipe data, apakah nilai wajib diisi atau harus unik, nilai yang diizinkan, nilai minimum dan maksimum, rentang panjang, atau pola.
  4. Jalankan pemeriksaan dan telusuri laporannya: galat lebih dulu, lalu peringatan. Perbaiki nilainya di editor CSV atau rapikan dengan Bersihkan data CSV, lalu validasi ulang.

Untuk melihat tipe, sel kosong, dan nilai unik setiap kolom sebelum menulis aturan, periksa file dengan profil kolom.

Pemeriksaan struktur pada setiap baris data

Jumlah field (galat)Sebuah baris data punya field lebih banyak atau lebih sedikit daripada baris judul kolom, atau daripada angka yang Anda isi. RFC 4180 mengharuskan setiap baris data punya jumlah field yang sama; selisih biasanya berarti ada pemisah yang tidak diberi tanda kutip atau nilai yang hilang.
Judul kolom kosong (galat)Nama kolom kosong atau hanya berisi spasi. Laporan menyebutkan posisinya.
Judul kolom ganda (galat)Dua nama kolom sama setelah spasinya dipangkas. Laporan menyebutkan kedua posisinya.
Tanda kutip nyasar (peringatan)Ada tanda kutip di dalam nilai yang tidak diapit tanda kutip, misalnya 5" screen. Nilainya dibiarkan seperti tertulis; laporan menyebutkan jumlahnya untuk seluruh file.
Teks setelah tanda kutip penutup (peringatan)Ada karakter setelah tanda kutip penutup sebelum pemisah berikutnya, seperti pada "abc"x.
Akhir baris bercampur (peringatan)File mencampur akhir baris CRLF, LF, dan CR. Laporan menghitung masing-masing jenis.
Baris kosong (peringatan)Baris kosong di antara baris data. Baris ini dilewati, dan laporan menghitung jumlahnya.
Spasi di tepi nilai (peringatan)Nilai punya spasi sebelum atau sesudah teksnya. Aktif secara bawaan; nilai yang hanya berisi spasi tidak dilaporkan.

Nilai bertanda kutip yang tidak pernah ditutup menghentikan pemeriksaan dengan galat yang menyebut baris data tempat nilai itu dimulai, karena sisa file tidak lagi bisa dipecah menjadi baris data dengan andal.

Aturan kolom: tipe, wajib diisi, unik, dan pola

Tipe: bilangan bulatHanya tanda plus/minus opsional dan digit, misalnya -12 atau 007. Nilai di luar ±9.007.199.254.740.991 dilaporkan, jadi untuk ID panjang seperti NIK atau nomor rekening, gunakan aturan teks dengan pola.
Tipe: angkaNotasi desimal biasa dengan titik, misalnya 3.5, -0.25, atau 1e3. Tanpa pemisah ribuan, mata uang, atau spasi di tepinya.
Tipe: boolean (true / false)true atau false dengan huruf besar/kecil apa pun. 1, 0, yes, dan no dilaporkan.
Tipe: tanggal, tanggal dan waktuTanggal kalender yang benar-benar ada dan ditulis YYYY-MM-DD, jadi 2024-02-30 dilaporkan. Tanggal dan waktu menambahkan jam (2024-03-05T09:30, dengan detik serta offset Z atau +02:00 yang opsional).
Tipe: teks dengan formatEmail (pemeriksaan bentuk sederhana name@domain.tld, bukan uji apakah alamat bisa menerima surel), URI (URL absolut dengan skema), atau UUID (versi 1–8).
Wajib diisiNilai tidak boleh kosong. Tanpa aturan ini, nilai kosong lolos dari semua aturan lain.
UnikTidak boleh ada nilai yang berulang di kolom tersebut. Laporan menyebutkan baris tempat nilai itu pertama kali muncul. Nilai kosong tidak dibandingkan.
Nilai yang diizinkanNilai harus sama persis dengan salah satu nilai di daftar, termasuk huruf besar/kecil dan spasinya.
Minimum, maksimumBatas inklusif untuk kolom bilangan bulat dan angka, atau tanggal ISO untuk kolom tanggal dan tanggal-waktu.
Panjang minimum dan maksimumDihitung dalam karakter Unicode, jadi é dan 日 masing-masing dihitung satu.
PolaEkspresi reguler yang harus cocok dengan seluruh nilai, sesuai ketentuan Table Schema; misalnya [A-Z]{2}\d{4}. Pencocokannya membedakan huruf besar/kecil.

Aturan berlaku untuk kolom yang judulnya sama persis dengan nama aturan; aturan untuk kolom yang tidak ada di file dilewati. Aturan bisa disimpan sebagai file JSON Table Schema dan dimuat lagi untuk ekspor berikutnya; tipe dan kunci yang tidak dikenal dalam skema yang dimuat akan diabaikan.

Membaca laporan

  • Nomor baris menghitung baris data setelah baris judul kolom (baris judul adalah baris 0). Nilai dengan baris baru di dalam tanda kutip tetap dihitung satu baris data, jadi nomor baris bisa berbeda dari nomor baris di editor teks.
  • Setiap masalah menyebutkan kolomnya dan mengutip nilainya, sehingga Anda bisa mencarinya di penampil CSV atau di editor.
  • Galat merusak struktur atau melanggar aturan; peringatan menunjuk data yang sebenarnya CSV valid, tetapi sering menimbulkan masalah saat diimpor.
  • Hingga 5.000 masalah dicantumkan. Selebihnya tetap dihitung per jenis masalah, dan daftarnya ditandai terpotong.

Batas dan privasi validasi

Validator membaca satu baris data dalam satu waktu, jadi file di atas batas interaktif 25 MB diperiksa dalam mode streaming di worker latar belakang, lengkap dengan progres dan opsi pembatalan. Dalam mode streaming, baris data yang field-nya lebih sedikit dari baris judul kolom saat ini dilengkapi dulu sebelum diperiksa, sehingga hanya baris data dengan field berlebih yang dilaporkan sebagai galat jumlah field.

Validasi berjalan di browser Anda. File CSV tidak diunggah ke server.

Contoh: memeriksa ekspor pendaftaran dengan empat aturan

Ekspor data pendaftaran diperiksa dengan empat aturan: id wajib diisi, unik, dan berupa bilangan bulat; email wajib diisi dan berformat email; signup_date berupa tanggal; plan hanya mengizinkan basic, pro, dan team. Hasilnya adalah laporan validator, satu masalah per baris setelah ringkasan: tanggal yang mustahil, email tanpa akhiran domain, Pro dengan huruf besar yang keliru, id yang berulang, email yang kosong, serta team dengan spasi di akhir, yang sekaligus memicu peringatan dan bukan nilai yang diizinkan.

CSV
id,email,signup_date,plan
1,ana@example.com,2024-02-30,pro
2,kim@example,2024-03-01,Pro
2,bao@example.com,2024-03-04,basic
4,,2024-03-05,team 
Laporan validasi
{"rows":4,"errors":6,"warnings":1,"truncated":false}
{"code":"type","row":1,"column":"signup_date","value":"2024-02-30","params":{"type":"date"}}
{"code":"format","row":2,"column":"email","value":"kim@example","params":{"format":"email"}}
{"code":"enum","row":2,"column":"plan","value":"Pro","params":{"allowed":"basic, pro, team"}}
{"code":"unique","row":3,"column":"id","value":"2","params":{"first":2}}
{"code":"whitespace","row":4,"column":"plan","value":"team ","params":{}}
{"code":"required","row":4,"column":"email","value":"","params":{}}
{"code":"enum","row":4,"column":"plan","value":"team ","params":{"allowed":"basic, pro, team"}}

Tanya jawab

Mengapa nilai yang mengandung spasi dilaporkan tidak cocok dengan daftar nilai yang diizinkan?

Aturan membandingkan nilai persis seperti tertulis, tanpa memangkas spasi, jadi team tidak sama dengan team. Pangkas spasi di kolom itu dengan Bersihkan data CSV atau perbaiki ekspornya.

Apakah validasi mengubah file saya?

Tidak. Alat ini hanya membaca file dan melaporkan temuannya. Perbaiki masalahnya di editor atau di sistem asal data.

Bisakah aturan yang sama dipakai untuk setiap ekspor bulanan?

Bisa. Simpan aturannya sebagai file JSON Table Schema dan muat lagi lain kali; aturan dicocokkan ke kolom berdasarkan nama.

Standar dan referensi