Кодирование

Gzip/Deflate ↔ Base64

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

Base64 by itself doesn't compress anything — quite the opposite, it grows the size by about 33%. To send large text compactly through a text-only channel, it's first compressed with Gzip or Deflate, and only then is the result Base64-encoded.

How to use it

Common uses

Things to keep in mind

Compression only pays off on sufficiently large, compressible text — on short strings the Gzip header overhead plus the Base64 expansion can actually make the result bigger.

Deflate skips Gzip's headers, so its output is more compact, but the format is less self-describing: the receiving side needs to know in advance that it's Deflate specifically.

Статья об этом инструменте: 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, без которых документ ломается при парсинге.