Кодирование

Gzip/Deflate ↔ Base64

Сжатие текста в Gzip или Deflate с последующим Base64-кодированием результата — и обратно. Работает через Compression Streams API прямо в браузере.

Base64 сам по себе не сжимает данные — наоборот, увеличивает размер примерно на 33%. Чтобы передавать большой текст в текстовом канале компактно, его сначала сжимают Gzip или Deflate, а уже результат кодируют в Base64.

Как пользоваться

Типичные сценарии

Что стоит помнить

Выигрыш от сжатия заметен только на достаточно больших и сжимаемых текстах — на коротких строках накладные расходы Gzip-заголовка и расширение Base64 могут даже увеличить итоговый размер.

Deflate — это сжатие без заголовков Gzip, поэтому результат компактнее, но формат менее самодостаточен: принимающая сторона должна точно знать, что это именно Deflate.

Статья об этом инструменте: Gzip + Base64: сжатие данных для передачи текстом

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

В чём разница между Gzip и Deflate?

Deflate — это сам алгоритм сжатия, а Gzip — обёртка вокруг него с дополнительным заголовком и контрольной суммой CRC. Из-за этого «сырые» Deflate-данные немного компактнее, но для декодирования важно точно знать, какой формат использовался при сжатии — они не взаимозаменяемы.

Зачем поверх сжатия ещё и Base64?

Результат сжатия — это бинарные данные, а Base64 превращает их в безопасный для копирования текст, который можно вставить в URL, JSON или переменную окружения без риска повредить байты.

Почему инструмент может не работать в некоторых браузерах?

Сжатие и распаковка выполняются через Compression Streams API — в старых или нестандартных браузерах он может отсутствовать, и тогда инструмент не сработает. Обработка при этом всегда происходит локально, без отправки данных на сервер.

Почему распаковка иногда даёт ошибку «invalid header»?

Самая частая причина — перепутанный формат: данные сжаты как «сырой» Deflate без заголовка, а распаковываются как Gzip (который ожидает собственный заголовок и CRC-32), или наоборот. Попробуйте переключить формат в настройках инструмента.

Всегда ли сжатие уменьшает итоговый размер?

Нет. На очень коротких строках накладные расходы заголовков Gzip и увеличение от Base64 могут перевесить выигрыш от сжатия — подход имеет смысл только для достаточно больших и сжимаемых текстовых данных.

Статьи: Кодирование

Base64: зачем нужно кодирование и как оно работает

Как Base64 превращает бинарные данные в текст ASCII и где это реально нужно.

Base32: чем отличается от Base64 и когда удобнее

Регистронезависимый алфавит Base32 и сценарии, где он удобнее Base64.

URL Encode/Decode: percent-encoding в ссылках

Как спецсимволы в адресной строке и query-параметрах превращаются в %XX-последовательности.

HTML Entities: как безопасно выводить спецсимволы на странице

Почему символы < > & нужно экранировать и как это предотвращает поломку разметки.

JWT: структура токена и что значит «декодировать» JWT

Header, payload и signature JWT-токена и почему декодирование — не то же самое, что проверка подписи.

Unicode Escape: что означают последовательности \uXXXX

Откуда в JSON и JS-строках берутся последовательности вида \u0041 и что они означают.

ROT13 и шифр Цезаря: простая замена символов

Почему сдвиг на 13 букв делает ROT13 симметричным и зачем его вообще используют сегодня.

Punycode: как домены с кириллицей работают в DNS

Как домен вроде «пример.рф» превращается в ASCII-запись с префиксом xn--.

Азбука Морзе: как текст превращается в точки и тире

Принцип кодирования букв точками и тире и где азбука Морзе применяется сейчас.

Data URI: когда встраивать изображения прямо в код

Как data:-URI встраивает содержимое файла прямо в HTML или CSS и когда это оправдано.

XML Entities: экранирование символов в XML-документах

Пять обязательных XML-entity, без которых документ ломается при парсинге.