Кодування
Gzip/Deflate ↔ Base64
Стиснення тексту в Gzip або Deflate з подальшим Base64-кодуванням результату — і назад. Працює через Compression Streams API прямо в браузері.
Base64 сам по собі не стискає дані — навпаки, збільшує розмір приблизно на 33%. Щоб передавати великий текст у текстовому каналі компактно, його спершу стискають Gzip чи Deflate, а вже результат кодують у Base64.
Як користуватися
- Стиснення: вставте текст — інструмент стисне його Gzip або Deflate (Compression Streams API браузера) і закодує результат у Base64.
- Розпакування: вставте Base64-рядок стисненого вмісту, щоб отримати оригінальний текст назад.
- Оберіть Gzip чи Deflate залежно від того, який формат очікує система, що прийматиме дані.
Типові сценарії
- Компактне вбудовування великого текстового значення (наприклад, SVG чи конфігу) у URL-параметр чи cookie з обмеженням розміру.
- Підготовка стисненого payload для API, що приймає Base64-encoded Gzip-дані.
- Розпакування даних, отриманих у такому форматі від іншої системи, для читання вручну.
Що варто памʼятати
Виграш від стиснення помітний лише на достатньо великих і стисливих текстах — на коротких рядках накладні витрати Gzip-заголовка й розширення Base64 можуть навіть збільшити підсумковий розмір.
Deflate — це стиснення без заголовків Gzip, тому результат компактніший, але формат менш самодостатній: приймаюча сторона повинна точно знати, що це саме Deflate.
Стаття про цей інструмент: Gzip + Base64: стиснення даних для передачі текстом
Часті запитання
Чим Gzip відрізняється від Deflate?
Deflate — це сирий алгоритм стиснення без додаткової обгортки. Gzip додає до нього заголовок і контрольну суму CRC-32 наприкінці, що дозволяє перевірити цілісність даних і зберегти метадані. Тому дані, стиснені в Gzip, не декодуються як Deflate, і навпаки.
Навіщо тут ще й Base64?
Результат стиснення Gzip/Deflate — бінарні дані, які незручно передавати в текстових форматах (JSON, URL, конфіги). Base64-кодування перетворює їх у безпечний для копіювання текстовий рядок ціною збільшення розміру приблизно на третину.
Чому інструмент може не працювати в моєму браузері?
Стиснення виконується через Compression Streams API (CompressionStream/DecompressionStream), який підтримують не всі браузери та їхні старі версії. Якщо API недоступне, кодування та декодування працювати не будуть.
Чому розпакування іноді дає помилку «invalid header»?
Найчастіша причина — переплутаний формат: дані стиснено як «сирий» Deflate без заголовка, а розпаковуються як Gzip (який очікує власний заголовок і CRC-32), або навпаки. Спробуйте перемкнути формат у налаштуваннях інструмента.
Чи завжди стиснення зменшує підсумковий розмір?
Ні. На дуже коротких рядках накладні витрати заголовків Gzip і збільшення від Base64 можуть переважити виграш від стиснення — підхід має сенс лише для достатньо великих і стисливих текстових даних.