> base64 encoder | टेक्स्ट | फ़ाइल <
// टेक्स्ट, UTF-8, JSON, इमेज या किसी भी फ़ाइल को Base64 में एन्कोड करें — स्टैंडर्ड, URL-सुरक्षित, पैडिंग के साथ या बिना। 100% क्लाइंट-साइड। 100 MB तक की फ़ाइल को ड्रैग-एंड-ड्रॉप करें।
टेक्स्ट और UTF-8 एन्कोडिंग
सादा टेक्स्ट, UTF-8 मल्टी-बाइट अक्षर, इमोजी, JSON, XML और HTML को एन्कोड करता है। सटीक बाइट-स्तरीय UTF-8 के लिए नेटिव TextEncoder का उपयोग करता है।
फ़ाइल से Base64
100 MB तक की किसी भी फ़ाइल (PNG, JPG, PDF, ZIP, बाइनरी) को अपलोड करने के लिए ड्रैग-एंड-ड्रॉप करें या क्लिक करें। शुद्ध Base64 देता है — सीधे Data URI, JSON API या HTML में कॉपी करें।
URL-सुरक्षित + बिना-पैडिंग
<code>-_</code> वर्णमाला का उपयोग करके JWT/OAuth-संगत Base64 बनाने के लिए <code>--url-safe</code> चालू करें। अंतिम <code>=</code> हटाने के लिए <code>--no-padding</code> चालू करें।
// BASE64 एन्कोडिंग कैसे काम करती है
Base64 एन्कोडिंग एल्गोरिथम:
Base64 3 इनपुट बाइट (24 बिट) लेता है, उन्हें चार 6-बिट समूहों में विभाजित करता है, और प्रत्येक समूह को 64-अक्षर वर्णमाला (A-Z a-z 0-9 + /) के एक अक्षर पर मैप करता है। जब इनपुट की लंबाई 3 का गुणक नहीं होती, तो = पैडिंग जोड़ी जाती है ताकि आउटपुट की लंबाई 4 का गुणक हो। URL-सुरक्षित Base64 + और / के स्थान पर - और _ का उपयोग करता है — अतिरिक्त परसेंट-एन्कोडिंग के बिना URL, फ़ाइलनाम और JWT में सुरक्षित।
एन्कोडिंग उदाहरण:
Text : Hi!
Bytes : 72 105 33
Bits : 01001000 01101001 00100001
010010 000110 100100 100001
B64 : S G k h
Output : SGkh
सामान्य एन्कोडिंग परिदृश्य:
- >HTML/CSS में इमेज को इनलाइन एम्बेड करना (Data URI)
- >MIME ईमेल अटैचमेंट बनाना (RFC 2045 §6.8)
- >HTTP Basic Auth हेडर बनाना (Authorization: Basic ...)
- >JWT हेडर/पेलोड बनाना (URL-सुरक्षित, बिना पैडिंग)
- >JSON API के लिए बाइनरी पेलोड एन्कोड करना जो कच्चे बाइट नहीं ले जा सकते
- >OAuth 2.0 कोड वेरिफायर और S3 प्रीसाइन्ड URL बनाना
// अक्सर पूछे जाने वाले प्रश्न
मैं टेक्स्ट को ऑनलाइन Base64 में कैसे एन्कोड करूँ?
ऊपर इनपुट क्षेत्र में अपना टेक्स्ट टाइप या पेस्ट करें। ऑटो-एन्कोड डिफ़ॉल्ट रूप से चालू है — जैसे ही आप टाइप करते हैं, Base64 परिणाम आउटपुट बॉक्स में दिखाई देता है। मैन्युअल रूप से एन्कोडिंग ट्रिगर करने के लिए [ENCODE] पर क्लिक करें या Ctrl/Cmd + Enter दबाएँ। Base64 का उपयोग कहाँ होगा इसके आधार पर --url-safe या --no-padding चालू करें (JWT, OAuth, URL → दोनों चालू)। सब कुछ आपके ब्राउज़र में स्थानीय रूप से चलता है: कोई अपलोड नहीं, कोई लॉग नहीं, आपके इनपुट से जुड़ा कोई नेटवर्क अनुरोध नहीं।
मैं किसी फ़ाइल (PNG, JPG, PDF, ZIP, बाइनरी) को Base64 में कैसे एन्कोड करूँ?
इनपुट क्षेत्र के नीचे [upload file] बटन पर क्लिक करें और 100 MB तक की फ़ाइल चुनें। एन्कोडर इसे FileReader.readAsArrayBuffer से पढ़ता है, बाइट्स को 32 KB चंक में btoa के माध्यम से स्ट्रीम करता है (ताकि बड़ी फ़ाइलें ब्राउज़र को क्रैश न करें), और पूरा Base64 आउटपुट बॉक्स में लिखता है। बड़ी फ़ाइलों के लिए कमांड-लाइन एन्कोडर का उपयोग करें: base64 < input.bin > output.txt (macOS/Linux), या PowerShell: [Convert]::ToBase64String([IO.File]::ReadAllBytes('input.bin')).
यदि आप Base64 को Data URI के रूप में स्वरूपित चाहते हैं (जैसे data:image/png;base64,...), तो आउटपुट के आगे MIME प्रकार और ;base64, जोड़ें, या हमारे समर्पित इमेज से Base64 टूल का उपयोग करें, जो PNG, JPG, GIF, WebP और SVG के लिए तैयार-से-पेस्ट Data URI देता है।
स्टैंडर्ड, URL-सुरक्षित और बिना-पैडिंग वाले Base64 में क्या अंतर है?
तीनों RFC 4648 में परिभाषित हैं:
• स्टैंडर्ड Base64 (§4) = पैडिंग के साथ A-Z a-z 0-9 + / वर्णमाला का उपयोग करता है। आउटपुट की लंबाई हमेशा 4 का गुणक होती है। MIME, HTTP Basic Auth और JSON स्ट्रिंग मानों के लिए सुरक्षित।
• URL-सुरक्षित Base64 (§5) + को - से और / को _ से बदलता है। जब Base64 को URL पथ, क्वेरी पैरामीटर, फ़ाइलनाम या JWT सेगमेंट में रखा जाता है तो आवश्यक — अन्यथा मानक +/ अक्षरों को परसेंट-एन्कोड करना पड़ता।
• बिना-पैडिंग (§4 और §5 दोनों, base64url बिना पैडिंग) अंतिम = अक्षर हटा देता है। लंबाई अब 4 का गुणक नहीं रहती, लेकिन डिकोडर शेष मॉड्यूलो 4 से मूल लंबाई की गणना कर सकते हैं। JWT (base64url RFC 7515 के अनुसार), WebAuthn और कुछ CBOR/COSE कार्यान्वयनों द्वारा उपयोग किया जाता है।
डिकोडर को बताना होगा कि किस वैरिएंट की अपेक्षा करनी है — हमारा Base64 डिकोडर तीनों का स्वतः पता लगाता है।
मैं कोड में Base64 कैसे एन्कोड करूँ (JavaScript, Python, PHP, Go, Java)?
हर प्रमुख भाषा और रनटाइम Base64 एन्कोडिंग के साथ आता है। कॉपी-पेस्ट-तैयार स्निपेट:
JavaScript (browser):btoa('Hello') // SGVsbG8=
// UTF-8 के लिए:
btoa(String.fromCharCode(...new TextEncoder().encode(s))) // UTF-8 सुरक्षित
Node.js:Buffer.from('Hello', 'utf-8').toString('base64') // SGVsbG8=
Buffer.from(bytes).toString('base64url') // URL-सुरक्षित, बिना पैडिंग
Python:import base64
base64.b64encode(b'Hello').decode() # SGVsbG8=
base64.urlsafe_b64encode(b'Hello').decode().rstrip('=') # URL-सुरक्षित बिना पैडिंग
PHP: base64_encode('Hello')
Ruby: Base64.strict_encode64('Hello') / Base64.urlsafe_encode64('Hello')
Go: base64.StdEncoding.EncodeToString([]byte("Hello")) / base64.URLEncoding.EncodeToString(...) / base64.RawURLEncoding.EncodeToString(...) (बिना पैडिंग)
Java: Base64.getEncoder().encodeToString("Hello".getBytes(StandardCharsets.UTF_8))
C#: Convert.ToBase64String(Encoding.UTF8.GetBytes("Hello"))
Rust: base64::engine::general_purpose::STANDARD.encode("Hello")
Shell (macOS/Linux): echo -n 'Hello' | base64 → SGVsbG8=। 76-कॉलम लाइन रैपिंग को दबाने के लिए Linux पर base64 -w 0 का उपयोग करें।
इनपुट की तुलना में Base64 आउटपुट कितना बड़ा होता है? मुझे Base64 का उपयोग कब नहीं करना चाहिए?
Base64 आउटपुट इनपुट से ~33% बड़ा होता है: हर 3 इनपुट बाइट 4 आउटपुट अक्षर बन जाते हैं। सटीक सूत्र: पैडिंग सहित ceil(n / 3) × 4, या बिना ceil(n × 4 / 3)। यदि आप 76 कॉलम (MIME) या 64 कॉलम (PEM) पर लाइन-रैप करते हैं तो कुछ अतिरिक्त बाइट ओवरहेड।
उदाहरण:
• 1 KB बाइनरी → ~1.37 KB Base64
• 100 KB इमेज → ~137 KB Data URI
• 1 MB PDF → JSON में ~1.37 MB Base64
Base64 से कब बचें:
• बड़े फ़ाइल स्थानांतरण: HTML में Base64 के रूप में एम्बेड की गई 10 MB इमेज 13.7 MB पार्स किया गया टेक्स्ट बन जाती है, मुख्य थ्रेड को ब्लॉक करती है, और अलग से कैश नहीं की जा सकती। <img src="/assets/photo.png"> को प्राथमिकता दें।
• प्रदर्शन-महत्वपूर्ण API: JSON में 500 KB Base64 पेलोड समकक्ष बाइनरी एंडपॉइंट की तुलना में ~2-3× धीमी पार्स होती है।
• सुरक्षा उपाय के रूप में: Base64 एन्क्रिप्शन नहीं है — कोई भी इसे डिकोड कर सकता है। गोपनीयता के लिए AES-GCM या समान का उपयोग करें।
• डेटाबेस BLOB: 33% स्टोरेज बचाने और एन्कोड/डिकोड राउंड-ट्रिप से बचने के लिए कच्चे बाइट को BLOB/BYTEA के रूप में संग्रहीत करें, Base64 टेक्स्ट के रूप में नहीं।
मैं JWT या OAuth पैरामीटर के लिए टेक्स्ट को URL-सुरक्षित Base64 में कैसे एन्कोड करूँ?
JWT (RFC 7515) और OAuth PKCE (RFC 7636) दोनों बिना पैडिंग के URL-सुरक्षित Base64 का उपयोग करते हैं, जिसे अक्सर base64url कहा जाता है। इसे इस टूल में बनाने के लिए: --url-safe और --no-padding दोनों चेकबॉक्स सक्षम करें, फिर अपना टेक्स्ट एन्कोड करें।
प्रोग्रामेटिक समकक्ष:
• JavaScript: btoa(s).replace(/\+/g, '-').replace(/\//g, '_').replace(/=+$/, '')
• Node.js: Buffer.from(s).toString('base64url')
• Python: base64.urlsafe_b64encode(s.encode()).decode().rstrip('=')
• Go: base64.RawURLEncoding.EncodeToString([]byte(s))
• Java: Base64.getUrlEncoder().withoutPadding().encodeToString(bytes)
सामान्य JWT फ़ील्ड जिन्हें base64url की आवश्यकता होती है: तीन डॉट-पृथक खंड (हेडर, पेलोड, हस्ताक्षर), OAuth PKCE code_verifier/code_challenge, WebAuthn चुनौतियाँ, Web Push p256dh/auth कुंजियाँ, और Google के Request.state पैरामीटर।
एक सामान्य बग है मानक Base64 (+/) के साथ JWT भेजना — API इसे विकृत के रूप में अस्वीकार करते हैं क्योंकि + ट्रांजिट में URL-डिकोड होकर एक स्पेस बन जाता है।
क्या मैं इस टूल से Data URI (data:image/png;base64,...) एन्कोड कर सकता हूँ?
हाँ, एक चेतावनी के साथ। यह एन्कोडर Data URI का Base64 भाग बनाता है — ;base64, के बाद वाला भाग। एक पूर्ण Data URI बनाने के लिए, आगे जोड़ें:data:<mime-type>;base64,<encoded-output>
सामान्य MIME प्रकार:
• data:image/png;base64,... — PNG इमेज
• data:image/jpeg;base64,... — JPEG इमेज
• data:image/svg+xml;base64,... — SVG (या Base64 के बिना data:image/svg+xml;utf8, का उपयोग करें — आमतौर पर छोटा)
• data:application/pdf;base64,... — PDF फ़ाइल
• data:application/font-woff2;base64,... — फ़ॉन्ट एम्बेड
• data:text/plain;charset=utf-8;base64,... — Base64-रैप किया गया टेक्स्ट
इमेज और SVG के लिए, इमेज से Base64 टूल पूर्ण Data URI देता है जो CSS background-image, इनलाइन <img src="...">, या <object data="..."> टैग में पेस्ट करने के लिए तैयार है।
आकार चेतावनी: 20-30 KB से बड़े Data URI LCP (Largest Contentful Paint) को नुकसान पहुँचाते हैं क्योंकि ब्राउज़र उन्हें प्रीलोड नहीं कर सकता — इनलाइन Base64 इमेज छोटी रखें, और बड़ी संपत्तियों के लिए loading="lazy" के साथ नियमित <img> को प्राथमिकता दें।
क्या यह Base64 एन्कोडर संवेदनशील टेक्स्ट और API कुंजियों के लिए सुरक्षित है?
हाँ — कुछ भी आपके ब्राउज़र से बाहर नहीं जाता। एन्कोडर पूरी तरह से JavaScript में नेटिव btoa(), TextEncoder और FileReader API का उपयोग करके चलता है। इनपुट सामग्री पर कोई नेटवर्क कॉल नहीं, कोई टेलीमेट्री नहीं, कोई लॉगिंग नहीं, आप जो एन्कोड करते हैं उस पर कोई तृतीय-पक्ष एनालिटिक्स नहीं। आप एन्कोडिंग के दौरान DevTools में नेटवर्क टैब खोल सकते हैं और शून्य संबंधित अनुरोध देख सकते हैं।
हालाँकि, Base64 एन्क्रिप्शन नहीं है — यह एक प्रतिवर्ती एन्कोडिंग है, और आउटपुट वाला कोई भी इसे डिकोड कर सकता है। इसलिए:
• एन्कोडेड रूप में भी उत्पादन रहस्यों को चैट, स्क्रीनशॉट या लॉग में पेस्ट न करें।
• HTTP Basic Auth के लिए, Base64 Authorization: Basic हेडर केवल TLS (HTTPS) पर सुरक्षित है। प्लेनटेक्स्ट HTTP पर, यह तुच्छ रूप से सूँघा जा सकता है।
• वास्तविक गोपनीयता के लिए, AES-GCM, age, sops या एक KMS का उपयोग करें — फिर आवश्यकता पड़ने पर ट्रांसपोर्ट के लिए सिफरटेक्स्ट को Base64-एन्कोड करें।
सख्त डेटा-एक्सफ़िल्ट्रेशन नीतियों के लिए, इस पेज को ऑफ़लाइन सहेजें (Cmd/Ctrl + S)। एक बार लोड होने के बाद एन्कोडर पूरी तरह से एयर-गैप्ड काम करता है क्योंकि कोई सर्वर निर्भरता नहीं है।
क्या मैं बहुत बड़ी फ़ाइलों को Base64 में एन्कोड कर सकता हूँ? ब्राउज़र की सीमाएँ क्या हैं?
एन्कोडर फ़ाइल हैंडलर में हार्ड लिमिट के माध्यम से 100 MB तक की फ़ाइलों का समर्थन करता है — अधिकांश इमेज, PDF, ZIP संग्रह और यहाँ तक कि छोटे वीडियो के लिए पर्याप्त। प्रदर्शन लक्ष्य:
• < 1 MB: एन्कोडिंग <50 ms में पूर्ण, कोई UI फ़्रीज़ नहीं।
• 1 – 10 MB: CPU के आधार पर 100-500 ms। ब्राउज़र उत्तरदायी रहता है क्योंकि हम 32 KB चंक में एन्कोड करते हैं।
• 10 – 100 MB: 2-15 सेकंड। ऐसे विशाल Base64 स्ट्रिंग पेस्ट/स्क्रॉल करते समय आउटपुट टेक्स्टएरिया थोड़ा लैग कर सकता है। आवश्यकता पड़ने पर DevTools से आउटपुट को .txt फ़ाइल के रूप में डाउनलोड करने पर विचार करें।
• > 100 MB: अवरुद्ध — ब्राउज़र मेमोरी ओवरहेड (इनपुट बाइट + बाइनरी स्ट्रिंग + Base64 स्ट्रिंग ≈ फ़ाइल आकार का 3-4×) टैब क्रैश का जोखिम पैदा करता है। उपयोग करें:# macOS / Linux
base64 -i huge.bin -o huge.b64
# Windows PowerShell
$bytes = [IO.File]::ReadAllBytes('huge.bin')
[IO.File]::WriteAllText('huge.b64', [Convert]::ToBase64String($bytes))
स्ट्रीमिंग/मल्टी-GB वर्कफ़्लो के लिए, मेमोरी में सब कुछ लोड किए बिना Node.js/Python के साथ चंक्ड दृष्टिकोण के लिए बड़ी फ़ाइलों को Base64 में एन्कोड करना देखें।
यह Base64 एन्कोडर टेक्स्ट इनपुट के लिए किस वर्ण एन्कोडिंग का उपयोग करता है?
यह एन्कोडर UTF-8 का उपयोग करता है, वही एन्कोडिंग जिसका उपयोग आधुनिक वेब, JSON, Linux, macOS और लगभग सभी प्रोग्रामिंग भाषाएँ डिफ़ॉल्ट रूप से करती हैं। पर्दे के पीछे, टेक्स्ट को new TextEncoder().encode(input) के माध्यम से पास किया जाता है, जो हमेशा UTF-8 बाइट उत्पन्न करता है, और उसके बाद ही Base64-एन्कोड किया जाता है।
यह क्यों महत्वपूर्ण है: पुराना JavaScript btoa() फ़ंक्शन केवल Latin-1 संभालता है और é, 中, या 😀 जैसे अक्षरों पर InvalidCharacterError फेंकता है। हमारा रैपर आपके लिए UTF-8 रूपांतरण संभालता है, ताकि इमोजी, चीनी, जापानी, कोरियाई, अरबी, सिरिलिक और कोई भी Unicode कोड पॉइंट सही ढंग से एन्कोड हो।
यदि आपको एक अलग एन्कोडिंग की आवश्यकता है:
• UTF-16 LE (Windows-नेटिव): दुर्लभ — आमतौर पर लीगेसी इंटरऑप का संकेत। फिर भी new TextEncoder({ fatal: true }).encode(s) का उपयोग करें और अपस्ट्रीम रूपांतरित करें।
• ISO-8859-1 / Latin-1: एन्कोडिंग से पहले कोड पॉइंट 0-255 को मैन्युअल रूप से बाइट पर मैप करें।
• GB18030, Shift_JIS, EUC-KR: पहले ट्रांसकोड करने के लिए Node.js में iconv-lite जैसी लाइब्रेरी का उपयोग करें।
एक सूक्ष्म पेच: यदि आपका स्रोत डेटा पहले से ही गैर-UTF-8 एन्कोडिंग में है (जैसे एक लीगेसी MySQL डंप पढ़ना), तो पहले सही कोडेक से इसे डिकोड करें, फिर Base64 लागू करने से पहले UTF-8 में फिर से एन्कोड करें — अन्यथा डिकोड किया गया Base64 मोजिबेक को बनाए रखेगा।