UTF-8 को Base64URL में बदलने के लिए, 4 चरणों का पालन करें: (1) पाठ को UTF-8 बाइट्स में एनकोड करें, (2) स्टैंडर्ड Base64 लागू करें, (3) + → - और / → _ स्वैप करें, (4) अंत में = पैडिंग हटाएं। यह RFC 4648 के अनुसार एक URL-सुरक्षित स्ट्रिंग उत्पन्न करता है, जिसका उपयोग JWTs और API हेडर में किया जाता है।
स्टैंडर्ड Base64 बनाम Base64URL
| वर्ण | स्टैंडर्ड Base64 | Base64URL | कारण |
|---|---|---|---|
| 62वां वर्ण | + |
- |
URLs में + का अर्थ स्पेस है |
| 63वां वर्ण | / |
_ |
URLs में / पाथ सेपरेटर है |
| पैडिंग | = आवश्यक |
हटाया गया | URLs में = %3D बन जाता है |
| URL-सुरक्षित | नहीं | हाँ | क्वेरी स्ट्रिंग्स और फ़ाइल नामों में सीधे उपयोग |
RFC 4648 §5 के अनुसार, यह “URL और फ़ाइलनाम सुरक्षित वर्णमाला” क्रॉस-सिस्टम संगतता सुनिश्चित करती है।

4-चरण रूपांतरण प्रक्रिया
| चरण | ऑपरेशन | उदाहरण (“Hello”) |
|---|---|---|
| 1 | UTF-8 पाठ → बाइट्स | H e l l o → बाइट ऐरे |
| 2 | बाइट्स → स्टैंडर्ड Base64 | SGVsbG8= |
| 3 | + → -, / → _ स्वैप करें |
यहाँ कोई बदलाव आवश्यक नहीं |
| 4 | अंतिम = पैडिंग हटाएं |
SGVsbG8 |
Base64 एनकोडिंग डेटा के आकार को ~33% तक बढ़ाती है, विकिपीडिया के अनुसार।

Unicode और इमोजी हैंडलिंग
NextUtils के अनुसार, Base64 एनकोडिंग है, एन्क्रिप्शन नहीं — यह डेटा को केवल-टेक्स्ट चैनलों के माध्यम से ले जाता है। Unicode/इमोजी को बिना किसी समस्या (“Mojibake”) के हैंडल करने के लिए, हमेशा पहले UTF-8 बाइट्स में बदलने के लिए TextEncoder का उपयोग करें।
| इनपुट | TextEncoder के बिना | TextEncoder के साथ |
|---|---|---|
Hello 世界! 🌍 |
Mojibake / TypeError | सही Base64URL |
कोड उदाहरण
JavaScript (ब्राउज़र) — Unicode-सुरक्षित
function toBase64Url(str) {
const bytes = new TextEncoder().encode(str);
const base64 = btoa(String.fromCharCode(...bytes));
return base64.replace(/\+/g, '-').replace(/\//g, '_').replace(/=+$/, '');
}
Python 3 — स्टैंडर्ड लाइब्रेरी
AskPython के अनुसार:
import base64
data = "Hello 世界! 🌍"
encoded = base64.urlsafe_b64encode(data.encode('utf-8')).decode('utf-8').rstrip('=')
print(encoded)
Node.js — Buffer रूपांतरण
const str = "API_Payload_Data";
const base64url = Buffer.from(str, 'utf8')
.toString('base64')
.replace(/\+/g, '-')
.replace(/\//g, '_')
.replace(/=/g, '');
समस्या निवारण: पैडिंग त्रुटियाँ
| त्रुटि | कारण | समाधान |
|---|---|---|
binascii.Error: Incorrect padding |
= पैडिंग गायब है |
= तब तक जोड़ें जब तक लंबाई 4 का गुणज न हो |
TypeError atob() के साथ |
गैर-ASCII वर्ण | पहले TextEncoder का उपयोग करें |
| गड़बड़ आउटपुट | UTF-8 एनकोडिंग छोड़ दी गई | Base64 से पहले हमेशा बाइट्स में एनकोड करें |
AskPython के अनुसार, गायब पैडिंग की गणना करें: padding_needed = (4 - len(data) % 4) % 4, फिर उतने ही = वर्ण जोड़ें।
उपयोग के मामले: JWT और Data URIs
JWT (JSON Web Token) संरचना
| भाग | विषय | एनकोडिंग |
|---|---|---|
| हेडर | एल्गोरिदम + टोकन प्रकार | Base64URL |
| पेलोड | दावे (उपयोगकर्ता डेटा, समाप्ति) | Base64URL |
| हस्ताक्षर | HMAC या RSA हस्ताक्षर | Base64URL |
JWTs अक्सर eyJ से शुरू होते हैं — यह { (JSON का शुरुआती ब्रैकेट) का Base64URL एनकोडिंग है।

उपयोग के मामले के अनुसार Base64 बनाम Base64URL
| उपयोग का मामला | एनकोडिंग | पैडिंग |
|---|---|---|
| JWT टोकन | Base64URL | हटाया गया |
| Data URIs (एम्बेडेड छवियाँ) | स्टैंडर्ड Base64 | आवश्यक |
| HTTP Basic Auth | स्टैंडर्ड Base64 | आवश्यक |
| URL क्वेरी पैरामीटर | Base64URL | हटाया गया |
निष्कर्ष
4 चरण: UTF-8 बाइट्स → Base64 → +/ को -_ में बदलें → पैडिंग हटाएं। JavaScript में TextEncoder का उपयोग करें, Python में base64.urlsafe_b64encode(), Node.js में Buffer। क्रॉस-सिस्टम संगतता के लिए RFC 4648 का पालन करें। Base64URL एनकोडिंग है, एन्क्रिप्शन नहीं — सुरक्षा के लिए AES-256 या TLS का उपयोग करें।
अक्सर पूछे जाने वाले प्रश्न
क्या Base64URL एन्क्रिप्शन के समान है?
नहीं। Base64URL एक प्रतिवर्ती एनकोडिंग है — कोई भी बिना कुंजी के इसे डिकोड कर सकता है। संवेदनशील डेटा को सुरक्षित करने के लिए AES-256 या TLS/SSL का उपयोग करें।
Base64URL स्टैंडर्ड Base64 डिकोडर में विफल क्यों होता है?
स्टैंडर्ड डिकोडर +, / और = पैडिंग की अपेक्षा करते हैं। Base64URL -, _ का उपयोग करता है और पैडिंग को छोड़ देता है। डिकोड करने से पहले वर्ण स्वैप को उल्टा करें और पैडिंग पुनर्स्थापित करें।
JWTs में पैडिंग क्यों हटाई जाती है?
= वर्ण URLs में %3D बन जाता है, जिससे स्ट्रिंग्स लंबी और पढ़ने में कठिन हो जाती हैं। RFC 4648 इसे हटाने की अनुमति देता है क्योंकि डिकोडर पैडिंग मार्कर के बिना मूल लंबाई का पुनर्निर्माण कर सकते हैं।

प्रातिक्रिया दे