UTILS.
100% в браузере
🗜️

Сжатие и распаковка Gzip / Zlib / Deflate

Сжимайте или распаковывайте текст в нативных форматах gzip, zlib (deflate) или raw DEFLATE в браузере, с выводом в base64/hex и коэффициентом сжатия.

Введите данные выше, чтобы сжать или распаковать.

Об этом инструменте

Инструмент Gzip / Zlib / Deflate сжимает и распаковывает данные полностью в вашем браузере с помощью нативных API CompressionStream и DecompressionStream. Выберите формат контейнера — gzip (формат .gz с его магическими байтами 0x1F 0x8B), zlib/deflate (данные DEFLATE, обёрнутые в заголовок zlib) или deflate-raw (голый DEFLATE без заголовка) — и направление. Сжатие берёт ваш текст UTF-8 и возвращает сжатые байты, закодированные как base64 или hex; распаковка берёт base64 или hex и возвращает исходный текст.

Поскольку используется встроенное потоковое сжатие браузера, ничего не загружается на сервер и не подгружается внешняя библиотека — ваши данные остаются на вашем устройстве. Три формата не взаимозаменяемы: gzip и zlib добавляют разные заголовки и контрольные суммы (CRC-32 для gzip, Adler-32 для zlib) вокруг одной и той же полезной нагрузки DEFLATE, тогда как deflate-raw опускает оба, поэтому вы должны распаковывать тем же форматом, которым сжимали. После сжатия инструмент сообщает исходный размер, сжатый размер и коэффициент сжатия в процентах (1 − сжатый / исходный) — то есть насколько меньше стал вывод.

Сильно повторяющийся текст сжимается кардинально; короткий или уже сжатый ввод может даже вырасти из-за накладных расходов заголовка и контрольной суммы, что нормально. Если ваш браузер не предоставляет CompressionStream, инструмент сообщает об этом, а не выдаёт неправильный вывод. Обратите внимание, что нативный API использует фиксированный уровень сжатия по умолчанию, поэтому селектора уровня нет. Скопируйте результат одним щелчком.

Часто задаваемые вопросы

В чём разница между gzip, zlib и raw deflate?
Все три используют алгоритм DEFLATE. gzip оборачивает его 10-байтовым заголовком, магическими байтами 0x1F 0x8B и CRC-32; zlib (deflate) оборачивает его коротким заголовком и контрольной суммой Adler-32; deflate-raw не имеет заголовка или контрольной суммы. Распаковывайте тем же форматом, которым сжимали.
Какой ввод ожидает распаковка?
Вставьте сжатые данные как base64 или hex (сопоставьте с селектором кодировки вывода). Инструмент декодирует их в байты и распаковывает выбранным форматом. Если байты обрезаны или формат неправильный, он сообщает, что данные не удалось распаковать.
Почему мой текст стал больше после сжатия?
gzip и zlib добавляют байты заголовка и контрольной суммы, а DEFLATE нужно достаточно повторений, чтобы найти экономию. Для очень короткого или уже случайного/сжатого ввода эти накладные расходы перевешивают любую выгоду, поэтому вывод может быть больше — это ожидаемо.
Могу ли я выбрать уровень сжатия?
Нет. Нативный API CompressionStream не предоставляет параметр уровня, поэтому используется фиксированный уровень по умолчанию. Вывод по-прежнему является полностью валидным потоком gzip/zlib/deflate, который любой стандартный инструмент (gunzip, zlib, pako) может распаковать.

Больше инструментов