Seberapa besar file JSON yang bisa ditangani browser
Intinya: Tidak ada batas tetap; kendalanya adalah anggaran memori tab Anda. File 20MB biasanya menjadi 60–100MB setelah di-parse, dan DOM yang di-highlight bisa menggandakannya lagi.

Intinya: tidak ada batas atas tetap — perkirakan dari memori, karena objek hasil parse biasanya memakan 3–5 kali ukuran teks dan DOM yang di-highlight menggandakannya lagi; di atas 50MB, atau ketika jumlah record tingkat atas mencapai ratusan ribu, potong, stream atau beralih ke aplikasi lokal alih-alih memaksanya di tab.
Ke mana memori pergi
Teks JSON 20MB ada tiga kali:
- String mentah: 20MB
- Graf objek hasil parse: biasanya 60–100MB (string terduplikasi, header objek, hash table)
- DOM yang di-highlight: satu node per token, mudah bertambah 2x lagi
Buffer editor, undo stack dan cache syntax-highlight adalah tambahan. "File 20MB" bisa melebihi 200MB resident.
Aturan praktis
| Ukuran | Desktop | Mobile |
|---|---|---|
| < 5MB | Lancar | Lancar |
| 5–20MB | Sedikit lag, 1–3 detik untuk format | Lag terasa, bisa membeku |
| 20–50MB | Bisa dipakai tetapi berat; matikan highlighting | Kemungkinan crash |
| > 50MB | Tidak disarankan | Tidak dapat dipakai |
Angka ini bergeser tergantung perangkat, versi browser dan apakah highlighting aktif. Gunakan sebagai orde besaran, bukan jaminan.
Mengapa RAM lebih besar tidak memperbaikinya
Tab punya batas keras, dan melewatinya berarti crash langsung alih-alih degradasi bertahap. Mobile bahkan lebih ketat, merebut kembali memori di kisaran ratusan megabyte rendah.
Bekerja dengan file besar
Potong.
head -c 1048576 big.json | jq .
jq '.items[0:100]' big.json
Stream. stream-json, ijson, jq --stream memproses catatan per catatan dengan memori yang independen dari ukuran file.
Gunakan aplikasi lokal. Tanpa batas tab, memori mesin penuh: unduh desktop.
Ubah formatnya. Log dan event stream sebaiknya NDJSON sejak awal — satu record per baris, bisa di-stream secara bawaan.
Minta backend memangkas. Jika UI butuh tiga field, mengirim tiga ratus adalah masalah desain API, bukan keterbatasan browser.
Mengukur ukuran file Anda
ls -lh data.json
jq 'length' data.json
Jika length berada di ratusan ribu, pagination atau streaming adalah jawabannya terlepas dari ukuran byte.
FAQ
Bagaimana cara mengetahui rentang ukuran file saya?
Periksa byte dengan ls -lh dan jumlah record tingkat atas dengan jq 'length'. File di bawah beberapa megabyte lancar di mana saja, 20–50MB berfungsi di desktop tetapi tersendat, dan di atas 50MB sebaiknya streaming atau gunakan alat command line.
Apa yang harus saya lakukan dengan file di atas 50MB?
Potong dengan head -c, atau stream dengan jq, stream-json atau jq --stream agar memori tetap independen dari ukuran file. Jika perlu memeriksa seluruh dokumen, gunakan aplikasi desktop, yang tidak dibatasi anggaran memori tab. Log dan event stream memang sebaiknya dalam NDJSON.