Что такое минификация JSON?
JSON (JavaScript Object Notation) — это лёгкий текстовый формат обмена данными, определённый в RFC 8259 и ECMA-404. Минификация убирает каждый пробел, табуляцию и перевод строки, находящийся вне строкового литерала — значения сохраняются побайтно, удаляется только косметический пробел. Результат разбирается ровно в то же значение, что и исходный текст.
Как работает минификация JSON?
Ваш ввод обрабатывается целиком в браузере с помощью встроенных функций JSON.parse и JSON.stringify. Основные шаги:
- Ввод считывается из текстового поля как есть — каждый байт, который вы вставили, остаётся в памяти локально.
- Браузер разбирает его с помощью
JSON.parse. Если ввод не является корректным JSON, парсер выбрасываетSyntaxError, который перехватывается и отображается дословно — ваш текст никогда не покидает страницу. - Когда разбор успешен, разобранное значение снова сериализуется через
JSON.stringify(value)— без аргумента отступа — что даёт самую короткую корректную форму того же значения. - Длина в байтах исходного и минифицированного текста вычисляется с помощью
new TextEncoder().encode(...).byteLength— тот же UTF-8 счётчик байт, который увидит HTTP-сервер на проводе. - Результат записывается в текстовое поле только для чтения, панель метрик показывает разницу в байтах с процентом экономии, а кнопка «Скачать» упаковывает результат в файл
.min.json, который можно отгрузить.
Зачем минифицировать JSON этим инструментом?
- Конфиденциальность: каждый разбор, минификация и подсчёт метрик происходят в вашем браузере. JSON никогда не попадает на наши серверы — без загрузки, телеметрии и аккаунта.
- Реальные байты: исходный размер, минифицированный размер и экономия вычисляются через TextEncoder, поэтому вы видите ту же UTF-8 разницу в байтах, за которую вам выставит счёт CDN или API-шлюз.
- Нулевая потеря данных: минификация чисто косметическая — каждое значение разбирается в то же дерево JSON, поэтому это безопасно для продакшен-payload’ов, манифестов и встроенных фикстур.
- Быстро: чистые
JSON.parse+JSON.stringifyобрабатывают типичные payload’ы из буфера обмена мгновенно, без подгрузки внешних библиотек.
Каковы распространённые применения минификации JSON?
Удаление незначащих пробелов из JSON встречается в веб-разработке, дата-инженерии и встраиваемых системах:
- Сокращение payload’ов API: уменьшайте тело запроса и ответа перед прохождением через тарифицируемый API-шлюз, платный канал egress или спутниковый линк.
- Встраивание в HTML: упаковывайте JSON-блоб в атрибут
data-*или тег<script type="application/json">, не утекая пробелы pretty-принтера в отрендеренную страницу. - Меньший localStorage: сокращайте квоту localStorage / IndexedDB, записывая минифицированный JSON вместо красиво отформатированного, что особенно ценно в мобильных браузерах со строгими ограничениями по origin.
Как выглядит пример минификации JSON?
Если вставить красиво отформатированный конфиг-файл размером 1,2 КБ (около 1225 байт с отступами в два пробела) и нажать Минифицировать, он обычно сжимается до меньше чем 0,4 КБ — экономия 66% — с сохранением каждого ключа и значения. Загружаемый файл output.min.json побайтно идентичен тому, что HTTP-сервер отдал бы с Content-Type: application/json без форматирующей прослойки.
Это работает в моём браузере?
Да. Конвейер минификации — это чистые JSON.parse + JSON.stringify, исполняющиеся внутри вкладки браузера. Ничего не загружается, ни один сервис-воркер не проксирует ваш ввод, и страница не делает ни одного сетевого запроса для самой минификации. Единственный исходящий трафик — стандартные ресурсы загрузки страницы (CSS, шрифты, аналитика) — ваш JSON никогда не достигает Ultim8Soft.
Зачем минифицировать JSON?
Минифицированный JSON разбирается в то же самое значение, что и красиво отформатированный исходник, но меньше в передаче и хранении. Меньшие payload’ы означают меньшие счета за CDN egress, более быструю мобильную загрузку, меньшее давление на память внутри сервис-воркеров и более плотное размещение в фикс-размерных контейнерах вроде payload’ов JWT, встроенных атрибутов data-* в HTML и квот localStorage. Для высоконагруженных API байт-экономия складывается — сокращение на 30% для endpoint’а на 1 ГБ/день экономит примерно 9 ГБ в месяц.
Теряются ли данные при минификации?
Нет. Минификация JSON удаляет только пробелы, находящиеся вне строковых литералов — пробелы, табуляции и переводы строк, которые спецификация уже классифицирует как незначащие. Каждый ключ, значение, число, escape-последовательность и символ строки сохраняются побайтно. Результат разбирается в значение, которое deepEqual исходному. Исчезают только косметические отступы.
В чём разница между форматтером и минификатором?
Парный JSON-форматтер идёт в обратную сторону: он расширяет пробелы, чтобы люди могли читать вложенные структуры. Минификатор убирает эти пробелы для передачи и хранения. Эти два инструмента — обратные друг другу: пропуск JSON-документа через Форматтер → Минификатор даёт ту же байт-строку, с которой вы начали минификатор, потому что оба работают с разобранным значением, а не с косметической разметкой.
Этот JSON-минификатор использует тот же парсер, который использует ваш Node.js, Deno или браузерный рантайм, и выдаёт результат, побайтно идентичный тому, что отдал бы простой HTTP-сервер. Вставьте любой JSON выше, скопируйте результат или скачайте его как .min.json.