JSON Minify
Уберите пробелы из JSON и увидите, сколько байт удалось сэкономить
JSON
Сжатый
JSON Minify
Уберите пробелы из JSON и увидите, сколько байт удалось сэкономить
Возможности
- Минификация одним вызовом JSON.parse + JSON.stringify — проходит через настоящий парсер, поэтому синтаксически неверный ввод быстро падает с точным сообщением движка JavaScript
- Точная по байтам статистика размера: TextEncoder.encode().length измеряет UTF-8-байты (не количество символов), так что многобайтные символы и эмодзи взвешиваются корректно
- Строка экономии показывает абсолютную разницу в байтах и процент от размера входа — соответствует тому, как будет выглядеть minify-затем-gzip-нагрузка по проводу
- Кнопка «Копировать» на 1,5 с переключается на «Скопировано!» после клика, чётко подтверждая успешную запись в буфер обмена — без молчаливых сбоев
- Кнопка «Скачать» выдаёт Blob `minified.json` с MIME application/json, готовый поместить в тело HTTP-запроса или закоммитить в папку фикстур
- Ошибки разбора всплывают с полным сообщением JS-движка (строка/колонка, если парсер их предоставляет), чтобы точно указать сбойный символ, а не угадывать
- Полностью на стороне клиента: ввод не покидает браузер, без телеметрии, без загрузки. Вызов minify — синхронный и мгновенный для типичных конфигов (JSON менее мегабайта)
- Выход сохраняет порядок ключей и точное численное представление — JSON.stringify не перекодирует целые числа в float и не меняет Unicode-эскейпы, так что минифицированный выход байт-эквивалентен тому, что строгий потребитель повторно разберёт
Как использовать
- Вставьте JSON в левую панель ввода.
- Нажмите «Сжать». Инструмент запускает JSON.parse для проверки, затем JSON.stringify без аргумента отступа, удаляя все незначащие пробелы.
- Прочтите строку статистики: байты входа, байты выхода и сэкономленные байты/процент — полезно для решения, стоит ли минификация компромисса с читаемостью.
- Нажмите «Копировать», чтобы положить минифицированную строку в буфер обмена, или «Скачать», чтобы сохранить как `minified.json`.
- Если ввод был неверен, красная строка ошибки покажет сообщение разбора JS-движка — исправьте JSON и снова нажмите «Сжать».
Советы и лучшие практики
- Если минифицируете в основном ради бюджета бандла, включите ещё gzip в CI-пайплайне статических ассетов — gzip'ованный pretty JSON часто меньше несжатого минифицированного.
- Храните оригинальный pretty-print JSON в системе контроля версий; минифицируйте в шаге сборки, а не коммитьте минифицированную версию.
- Для очень большого JSON (10 МБ+) проход TextEncoder всё ещё быстрый, но пара JSON.parse + JSON.stringify кратко расходует память — нормально в вкладке браузера, проблематично в горячем пути service worker.
- Если JSON содержит числа рядом с безопасным целочисленным пределом JS (2^53), помните: JSON.parse преобразует их в double — minify это не меняет, но полезно знать перед отладкой расхождения точности.
- Используйте «Скачать», чтобы положить минифицированный файл в каталог фикстур; позже совмещайте с JSON Diff, если нужно подтвердить, что круговой ход сохранил всё.
Вопросы и ответы
Насколько уменьшится мой JSON?
Полностью зависит от того, сколько пробелов было изначально. Хорошо отформатированный конфиг (отступы 2 пробела, выравнивание ключей, концевые переводы строк) часто сжимается на 30–50 %. JSON, уже в одной строке, сжимается на 0 %. Строка статистики сообщает точное число — попробуйте на своих данных перед фиксацией минифицированной версии.
Стоит ли минифицировать JSON в продакшене?
Обычно нет, потому что сжатие gzip/brotli уже сводит повторяющиеся пробелы к нескольким байтам. Минификация помогает, когда (1) нельзя включить сжатие на транспорте (некоторые встраиваемые цели), (2) вы встраиваете JSON в JS-бандл, где каждый байт идёт в бюджет бандла, или (3) оптимизируете IndexedDB/localStorage, где транспортного сжатия нет.
Меняет ли это мои данные?
Нет. JSON.parse + JSON.stringify — поездка через спецификацию JSON JavaScript, строгое подмножество ECMAScript. Числа, строки, булевы, null, массивы и объекты выходят байт-эквивалентно валидному повторному разбору. Единственная разница — пробелы и порядок ключей (JSON.stringify сохраняет исходный порядок вставки литерала объекта).
Как считаются байты?
Через TextEncoder().encode().length, что даёт длину в UTF-8-байтах. Обычный ASCII — один байт на символ; é — два байта; большинство CJK-символов — три; большинство эмодзи — четыре. Подсчёт длины JavaScript-строки (кодовых единиц) переоценил бы ASCII и недоучёл бы символы дополнительной плоскости; TextEncoder даёт число, соответствующее тому, что идёт по проводу.
Почему Minify падает на моём вводе?
JSON.parse строг: без хвостовых запятых, без комментариев, без одинарных кавычек вокруг строк, без неквотированных ключей. Если вы работаете с расслабленным JSON (JSON5, JSONC), парсер выбросит — предварительно обработайте расслабленным парсером или используйте режим JSONC в JSON Formatter. Строка ошибки показывает сообщение движка, часто включая сломавшую строку/колонку.
Отправляется ли что-нибудь на сервер?
Нет. Обе панели остаются в вашем браузере; минификация выполняется синхронно в том же JavaScript-контексте, что отрендерил страницу. Вкладка «Сеть» DevTools не показывает запросов при нажатии «Сжать». Страница работает офлайн после первой загрузки.
Будет ли минифицированный JSON по-прежнему дружить с diff?
Хуже. Pretty-print JSON-файл диффится построчно, и ревьюеры видят, какой именно ключ изменился. Минифицированный JSON-файл — одна гигантская строка; правка одного символа выглядит как замена всей строки в `git diff`. Держите исходники pretty-print; минифицируйте только для транспорта или хранения.
Чем это отличается от JSON Formatter?
У JSON Formatter есть кнопка Minify рядом с Pretty-Print плюс дерево, JSONPath, JSONC, валидация схемы и diff. Этот инструмент — одна задача, лёгкий: вставить, сжать, скопировать, скачать — без панелей, без режимов, только сэкономленные байты.