Загрузить файл
  1. base64hub
  2. Веб и токены
  3. gzip + Base64

Сжатие gzip и кодирование в Base64

Введите текст или перетащите файл: он сожмётся gzip, а результат закодируется в Base64. Метрики сразу показывают, стала ли строка короче обычного Base64.

Бесплатно без регистрации и ограничений Локально ничего не загружается Степень сжатия сравнение с обычным Base64 для любого ввода Обновлено 27 окт. 2026 г.
Ввод –Сжато –Результат –Степень сжатия –

Обработка идёт в браузере. Эта страница не может никуда отправить ваши данные – откуда мы это знаем

Как сжать gzip и закодировать в Base64

  1. Введите или вставьте текст в поле ввода либо перетащите файл. На лету включено, так что результат обновляется по ходу ввода.
  2. Оставьте в поле Формат значение gzip. В том же списке есть zlib, raw deflate и, если браузер поддерживает, Brotli.
  3. Отметьте URL-safe (- _), если строка пойдёт в URL или имя файла, или Перенос по 76 для почты и длины строк в стиле PEM.
  4. Нажмите Скопировать результат, Скачать, чтобы сохранить Base64 файлом .txt, или Скачать сжатый файл, чтобы сохранить двоичный .gz.

В строке с метриками видны размер входа, размер после сжатия, размер Base64 и степень сжатия, а статус сообщает, насколько результат короче или длиннее обычного Base64 от того же входа.

Когда сжимать заранее имеет смысл

Base64 всегда увеличивает данные на треть. Gzip может отыграть это с запасом, но только на данных с повторами.

ВводОбычный Base64Gzip + Base64
Hello, world! (13 байт)20 символов44 символа
Массив JSON из 100 записей о товарах, 9 281 байт12 376 символов1 096 символов
Фотография JPEGоколо 4/3 файлачуть длиннее обычного Base64

Цифры получены с gzip -6. Компрессор браузера может отличаться на несколько байт, а точные значения для вашего ввода показывает строка с метриками. Грубое правило: ввод короче примерно 100 байт и всё, что уже сжато, выгоднее кодировать обычным Base64.

Где используются строки gzip + Base64

  • Cloud-init и user data виртуальных машин: cloud-init распознаёт user data, сжатые gzip, и это помогает уложиться в ограничения размера облачных сервисов метаданных.
  • Подписки AWS CloudWatch Logs передают пачки логов в Lambda как Base64 от gzip в поле awslogs.data.
  • Helm 3 кладёт каждый релиз в Kubernetes Secret в виде JSON, сжатого gzip и закодированного в Base64.
  • Переменные окружения и поля JSON, в которых должен лежать конфигурационный файл или большой кусок текста.
  • Query-строки и диплинки с объектом состояния. Там используйте URL-safe вывод.

Получатель должен знать, что данные сжаты gzip, ведь в самом Base64 на это указывает только префикс H4sI. Отразите это в имени поля или документации API, а при передаче по HTTP лучше отправьте двоичное тело с Content-Encoding: gzip вместо Base64.

Gzip + Base64 в коде

import base64, gzip

data = open("products.json", "rb").read()
packed = base64.b64encode(gzip.compress(data, mtime=0)).decode()
// Node.js
const zlib = require("zlib");
const packed = zlib.gzipSync(Buffer.from(text)).toString("base64");

В браузерах сжимает new CompressionStream("gzip"), его же использует эта страница. Больше примеров на страницах про Python и Node.js.

Частые проблемы

  • Получатель видит мусор: он декодировал Base64, но не распаковал gzip. Проверьте префикс H4sI и распакуйте декодером gzip из Base64.
  • «incorrect header check» на другой стороне: получатель ждёт zlib, а не gzip. Переключите Формат на zlib (deflate); страница про zlib объясняет, какая библиотека что ожидает.
  • Brotli неактивен: встроенный API сжатия браузера не предлагает Brotli, и страница сообщает об этом под параметрами.
  • Результат отличается от другого инструмента: в заголовках gzip есть метка времени и байт ОС, а компрессоры выбирают разные уровни сжатия. Разные байты могут распаковываться в одно и то же содержимое.

Вопросы и ответы

Становится ли строка короче, если сжать её gzip перед Base64?

Обычно намного короче, если это текст, JSON, XML или логи больше нескольких сотен байт. Для коротких строк и уже сжатых данных (JPEG, PNG, ZIP, MP4) результат получается длиннее, потому что gzip добавляет 18 байт заголовка и концевика.

Почему каждая строка gzip в Base64 начинается с H4sI?

Данные gzip начинаются с байтов 1F 8B 08, а в Base64 эти три байта записываются как H4sI. Следующие символы зависят от флагов и метки времени: H4sIAAAAAAAA означает, что нет ни имени файла, ни времени изменения.

Как сжать gzip и закодировать в Base64 в терминале?

В Linux: gzip -nc file.json | base64 -w0. В macOS, где у base64 нет -w, используйте gzip -nc file.json | base64 | tr -d '\n'. Флаг -n не записывает имя файла и время, так что одинаковый вход даёт одинаковый результат.