एन्कोडिंग

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 रॉ (बिना रैपर वाला) डेटा होता है — इसलिए गलत फ़ॉर्मेट चुनने पर डिकंप्रेशन फेल हो सकता है।

डिकोड करते वक़्त एरर क्यों आती है?

अक्सर यह इसलिए होता है क्योंकि एन्कोड करते वक़्त इस्तेमाल किया गया फ़ॉर्मेट (Gzip या Deflate) डिकोड के वक़्त चुने गए फ़ॉर्मेट से मेल नहीं खाता, या Base64 स्ट्रिंग अधूरी/करप्ट है।

क्या टेक्स्ट कहीं सर्वर पर भेजा जाता है?

नहीं, कंप्रेशन और एन्कोडिंग ब्राउज़र के नेटिव Compression Streams API से लोकली होती है, कुछ भी अपलोड नहीं होता।

अनपैक करते वक़्त कभी-कभी "invalid header" एरर क्यों आती है?

सबसे आम वजह है फ़ॉर्मेट का उलझ जाना: डेटा "रॉ" Deflate के रूप में बिना हेडर के कंप्रेस किया गया है, लेकिन अनपैक Gzip के रूप में किया जा रहा है (जो अपना हेडर और CRC-32 चाहता है), या इसका उल्टा। टूल की सेटिंग में फ़ॉर्मेट बदलकर देखें।

क्या कंप्रेशन हमेशा फ़ाइनल साइज़ घटा देता है?

नहीं। बहुत छोटी स्ट्रिंग्स पर Gzip हेडर और Base64 से बढ़ने वाला साइज़, कंप्रेशन के फ़ायदे से ज़्यादा हो सकता है — यह तरीका सिर्फ़ पर्याप्त बड़े और अच्छी तरह कंप्रेस होने वाले टेक्स्ट डेटा के लिए ही समझदारी भरा है।

लेख: एन्कोडिंग

Base64: एन्कोडिंग किस लिए है और यह कैसे काम करता है

Base64 बाइनरी डेटा को ASCII टेक्स्ट में कैसे बदलता है और यह वास्तव में कब ज़रूरी होता है।

Base32: यह Base64 से कैसे अलग है और कब ज़्यादा सुविधाजनक है

Base32 की केस-असंवेदनशील वर्णमाला और वे मामले जहाँ यह Base64 से ज़्यादा सुविधाजनक है।

URL Encode/Decode: लिंक में percent-encoding

पतों और पैरामीटर में विशेष वर्ण %XX अनुक्रमों में कैसे बदलते हैं।

HTML Entities: विशेष वर्णों को सुरक्षित रूप से कैसे दिखाएँ

< > & वर्णों को एस्केप करना क्यों ज़रूरी है और यह मार्कअप को टूटने से कैसे बचाता है।

JWT: टोकन की संरचना और JWT को "डिकोड" करने का क्या मतलब है

JWT के header, payload और signature, और डिकोड करना सिग्नेचर सत्यापन जैसा क्यों नहीं है।

Unicode Escape: \uXXXX अनुक्रमों का क्या मतलब है

JSON और JS स्ट्रिंग में \u0041 जैसे अनुक्रम कहाँ से आते हैं और इनका क्या मतलब है।

ROT13 और सीज़र सिफर: वर्णों की सरल अदला-बदली

13 अक्षरों का शिफ्ट ROT13 को स्व-व्युत्क्रम क्यों बनाता है, और आज इसे क्यों इस्तेमाल किया जाता है।

Punycode: DNS में अंतरराष्ट्रीय डोमेन कैसे काम करते हैं

गैर-लैटिन वर्णों वाला डोमेन xn-- उपसर्ग वाले ASCII रूप में कैसे बदलता है।

मोर्स कोड: टेक्स्ट बिंदुओं और डैश में कैसे बदलता है

अक्षरों को बिंदुओं और डैश में एन्कोड करने का सिद्धांत, और आज मोर्स कोड कहाँ इस्तेमाल होता है।

Data URI: छवियों को सीधे कोड में कब एम्बेड करें

Data URI किसी फ़ाइल की सामग्री को सीधे HTML या CSS में कैसे एम्बेड करता है, और यह कब उचित है।

XML Entities: XML दस्तावेज़ों में वर्णों को एस्केप करना

पाँच अनिवार्य XML एंटिटी, जिनके बिना दस्तावेज़ पार्सिंग के दौरान टूट जाता है।