Какой размер 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 с самого начала — одна запись на строку, потоковые по построению.
Попросите бэкенд сократить. Если интерфейсу нужны три поля, отправка трёхсот — это проблема дизайна 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.