Який розмір файлу JSON може обробити браузер
Головне: Фіксованої межі немає; обмеження — бюджет памʼяті вашої вкладки. Файл на 20 МБ типово стає 60–100 МБ після розбору, а підсвічений DOM може подвоїти це знову.

Коротко: фіксованої стелі немає — оцінюйте за памʼяттю, бо розібраний обʼєкт зазвичай коштує в 3–5 разів більше за розмір тексту, а підсвічений DOM подвоює це знову; понад 50 МБ, або коли кількість записів верхнього рівня сягає сотень тисяч, нарізайте, потоково обробляйте або переходьте на локальний застосунок замість вганяти це у вкладку.
Куди йде памʼять
Текст JSON на 20 МБ існує тричі:
- Сирий рядок: 20 МБ
- Розібраний граф обʼєктів: зазвичай 60–100 МБ (дубльовані рядки, заголовки обʼєктів, хеш-таблиці)
- Підсвічений DOM: один вузол на токен, легко ще 2x
Буфери редактора, стеки скасування й кеші підсвічування — додатково. «Файл на 20 МБ» може перевищити 200 МБ резидентної памʼяті.
Практичні правила
| Розмір | Десктоп | Мобільний |
|---|---|---|
| < 5 МБ | Плавно | Плавно |
| 5–20 МБ | Легка затримка, 1–3 с на форматування | Помітна затримка, може замерзнути |
| 20–50 МБ | Робочо, але важко; вимкніть підсвічування | Імовірний крах |
| > 50 МБ | Не рекомендовано | Непридатно |
Вони зсуваються залежно від пристрою, версії браузера й того, чи ввімкнене підсвічування. Використовуйте їх для порядку величини, а не як гарантії.
Чому більше RAM це не виправляє
Вкладки мають жорсткий ліміт, і його перевищення означає негайний крах, а не поступову деградацію. Мобільні ще строгіші, звільняючи на рівні низьких сотень мегабайт.
Робота з великими файлами
Наріжте.
head -c 1048576 big.json | jq .
jq '.items[0:100]' big.json
Потоково обробляйте. stream-json, ijson, jq --stream обробляють запис за записом із памʼяттю, незалежною від розміру файлу.
Використовуйте локальний застосунок. Без лімітів вкладки, повна памʼять машини: завантаження десктопного застосунку.
Змініть формат. Логи й потоки подій мають бути NDJSON від початку — один запис на рядок, потокові за конструкцією.
Попросіть бекенд скоротити. Якщо UI потрібні три поля, надсилання трьохсот — проблема дизайну API, а не обмеження браузера.
Оцінка розміру файлу
ls -lh data.json
jq 'length' data.json
Якщо length у сотнях тисяч, пагінація або потокова обробка — відповідь незалежно від байтового розміру.
Часті питання
Як зрозуміти, у який діапазон розміру потрапляє мій файл?
Перевірте байти через ls -lh і кількість записів верхнього рівня через jq 'length'. Файли до кількох мегабайт плавні всюди, 20–50 МБ працюють на десктопі, але гальмують, а понад 50 МБ слід потоково обробляти або використовувати інструмент командного рядка.
Що робити з файлом понад 50 МБ?
Наріжте його через head -c або потоково обробляйте через jq, stream-json чи jq --stream, щоб памʼять лишалася незалежною від розміру файлу. Якщо треба оглянути весь документ, використовуйте десктопний застосунок, який не обмежений бюджетом памʼяті вкладки. Логи й потоки подій усе одно належать NDJSON.