JSON Toolkit

Какой размер JSON-файла может обработать браузер

Главное: Фиксированного лимита нет; ограничение — бюджет памяти вашей вкладки. Файл в 20 МБ обычно становится 60–100 МБ после парсинга, а подсвеченный DOM может снова удвоить это.

Начинающий~3 мин чтенияОпубликовано 2026-10-30Обновлено 2026-10-30
Лимиты памяти браузера при работе с большим JSON

Главное: фиксированного потолка нет — оценивайте по памяти, поскольку разобранный объект обычно стоит в 3–5 раз больше размера текста, а подсвеченный DOM удваивает это снова; выше 50 МБ или когда число записей верхнего уровня достигает сотен тысяч, нарезайте, используйте потоковую обработку или переходите на локальное приложение, а не форсируйте это во вкладке.

Куда уходит память

Текст JSON в 20 МБ существует трижды:

  1. Сырая строка: 20 МБ
  2. Граф разобранных объектов: обычно 60–100 МБ (дублирующиеся строки, заголовки объектов, хеш-таблицы)
  3. Подсвеченный 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.

Дополнительное чтение