§

Вставьте JSON

§

Минифицированный вывод

text
§

Сэкономлено %

  • Исходный размер
  • Минифицированный размер
  • Сэкономлено
  • Сэкономлено %

Минификация JSON давно стала повседневной задачей российских инженеров: шлюзы API Сбербанка, Тинькофф и ВТБ обмениваются HMAC-подписанными телами JSON, в которых лишний пробел — это лишний оплаченный байт на CloudFront или Yandex Cloud CDN. Платформы Яндекса, VK и Mail.ru сжимают payload-ы из мобильных приложений MTS и Билайн перед отправкой по 4G/5G IoT-сетям. ЦБ РФ опубликовал требования к API национальной системы платежных карт и СБП, где минифицированный JSON ускоряет мгновенные переводы. Госуслуги через ЕСИА возвращают претензии в JSON; storage в PostgreSQL c JSONB-колонками тоже выигрывает от компактных значений. Минификация работает локально — конфиденциальные ИНН, СНИЛС и токены не уходят с устройства.

Что такое минификация JSON?

JSON (JavaScript Object Notation) — это лёгкий текстовый формат обмена данными, определённый в RFC 8259 и ECMA-404. Минификация убирает каждый пробел, табуляцию и перевод строки, находящийся вне строкового литерала — значения сохраняются побайтно, удаляется только косметический пробел. Результат разбирается ровно в то же значение, что и исходный текст.

Как работает минификация JSON?

Ваш ввод обрабатывается целиком в браузере с помощью встроенных функций JSON.parse и JSON.stringify. Основные шаги:

  1. Ввод считывается из текстового поля как есть — каждый байт, который вы вставили, остаётся в памяти локально.
  2. Браузер разбирает его с помощью JSON.parse. Если ввод не является корректным JSON, парсер выбрасывает SyntaxError, который перехватывается и отображается дословно — ваш текст никогда не покидает страницу.
  3. Когда разбор успешен, разобранное значение снова сериализуется через JSON.stringify(value) — без аргумента отступа — что даёт самую короткую корректную форму того же значения.
  4. Длина в байтах исходного и минифицированного текста вычисляется с помощью new TextEncoder().encode(...).byteLength — тот же UTF-8 счётчик байт, который увидит HTTP-сервер на проводе.
  5. Результат записывается в текстовое поле только для чтения, панель метрик показывает разницу в байтах с процентом экономии, а кнопка «Скачать» упаковывает результат в файл .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.