Base64 ফাইল এনকোডার
যেকোনো ফাইলকে Base64-এ এনকোড করুন: PDF, ZIP, ইমেজ ও আরও
এখানে যেকোনো ফাইল ড্রপ করুন বা আপলোড করতে ক্লিক করুন
যেকোনো ফাইল টাইপ: PDF, ZIP, ইমেজ, বাইনারি ফাইল
Base64 ফাইল এনকোডিং কী?
Base64 ফাইল এনকোডিং বাইনারি ফাইল — PDF, ZIP, ইমেজ, এক্সিকিউটেবল, ফন্ট, অডিও — কে RFC 4648-এ সংজ্ঞায়িত অ্যালফাবেট ব্যবহার করে সরল ASCII টেক্সটে রূপান্তরিত করে। বাইনারি ইনপুটের প্রতিটি তিনটি বাইট চারটি Base64 অক্ষরে পরিণত হয়, যা এমন একটি টেক্সট উপস্থাপনা তৈরি করে যা শুধুমাত্র টেক্সটের জন্য ডিজাইন করা চ্যানেলের মাধ্যমে পাঠানো যায়: JSON API পেলোড, XML ডকুমেন্ট, ইমেইল বডি, HTML অ্যাট্রিবিউট এবং পরিবেশ চলক।
টেক্সট-থেকে-Base64 এনকোডিংয়ের বিপরীতে (যা স্ট্রিংয়ে কাজ করে), ফাইল-থেকে-Base64 এনকোডিং ফর্ম্যাট নির্বিশেষে যেকোনো ফাইলের কাঁচা বাইট স্ট্রিম পড়ে। একটি PDF-এর বাইনারি হেডার, একটি ZIP-এর সংকুচিত ব্লক এবং একটি PNG-এর পিক্সেল ডেটা সবকিছুকে একইভাবে বিবেচনা করা হয়: অক্টেটের ধারাবাহিকতা হিসেবে পুনরায় এনকোড করতে হবে। ফলাফল সর্বদা বৈধ ASCII, যেকোনো জায়গায় নিরাপদে এম্বেড করা যায় যেখানে প্রিন্টযোগ্য অক্ষর গ্রহণযোগ্য।
এই পদ্ধতির একটি অসুবিধা হলো আকার: Base64 আউটপুট মূল বাইনারির চেয়ে প্রায় ৩৩% বড়। ১ MB PDF-এর জন্য এর মানে প্রায় ১.৩৩ MB Base64 টেক্সট। এই অতিরিক্ত আকার ৮-বিট বাইটকে ৬-বিট অক্ষরে উপস্থাপন করার মূল্য এবং এটি এনকোডিংয়ের সহজাত — কোনো বাস্তবায়নই এটি এড়াতে পারে না। তবুও, Base64 ফাইল এনকোডিং MIME (RFC 2045), ডেটা URI (RFC 2397) এবং JSON Web Token (RFC 7519)-এ নির্দিষ্ট করা টেক্সট-ওনলি ফরম্যাটে বাইনারি ডেটা এম্বেড করার মানক পদ্ধতি হিসেবে রয়ে গেছে।
এই Base64 ফাইল এনকোডার কেন ব্যবহার করবেন?
এই টুলটি FileReader API ব্যবহার করে সরাসরি আপনার ব্রাউজারে ফাইল Base64-এ এনকোড করে। কোনো ফাইল সার্ভারে আপলোড হয় না — সম্পূর্ণ রূপান্তর ক্লায়েন্ট-সাইডে JavaScript-এ সম্পন্ন হয়।
Base64 ফাইল এনকোডিংয়ের ব্যবহারের ক্ষেত্র
Base64 ফাইল সাইজের অতিরিক্ত আকার
Base64 এনকোডিং ডেটার আকার ঠিক এক-তৃতীয়াংশ বৃদ্ধি করে। প্রতিটি ৩টি ইনপুট বাইট ৪টি আউটপুট অক্ষর তৈরি করে (প্রতিটি ৬ বিট প্রতিনিধিত্ব করে)। ইনপুটের দৈর্ঘ্য ৩-এর গুণিতক না হলে প্যাডিং অক্ষর (=) যোগ করা হয়। নিচের সারণিটি মূল ফাইল সাইজ এবং এনকোড করা আউটপুট সাইজের মধ্যে সম্পর্ক দেখায়।
| ফাইল সাইজ | কাঁচা বাইট | Base64 বাইট | অতিরিক্ত আকার |
|---|---|---|---|
| 1 KB | 1,024 B | 1,368 B | +33.3% |
| 10 KB | 10,240 B | 13,656 B | +33.4% |
| 100 KB | 102,400 B | 136,536 B | +33.3% |
| 1 MB | 1,048,576 B | 1,398,104 B | +33.3% |
| 5 MB | 5,242,880 B | 6,990,508 B | +33.3% |
| 10 MB | 10,485,760 B | 13,981,016 B | +33.3% |
Data URI এবং MIME Type রেফারেন্স
একটি data URI সরাসরি HTML, CSS বা JavaScript-এ ফাইল বিষয়বস্তু এম্বেড করে data:[MIME type];base64,[encoded data] ফরম্যাটে। MIME টাইপ ব্রাউজারকে বলে কিভাবে ডিকোড করা বাইট ব্যাখ্যা করতে হবে। নিচে সাধারণ ফাইল এক্সটেনশন, তাদের MIME টাইপ এবং সংশ্লিষ্ট data URI প্রিফিক্স দেওয়া হলো।
| এক্সটেনশন | MIME Type | Data URI প্রিফিক্স |
|---|---|---|
| application/pdf | data:application/pdf;base64,... | |
| .zip | application/zip | data:application/zip;base64,... |
| .png | image/png | data:image/png;base64,... |
| .jpg | image/jpeg | data:image/jpeg;base64,... |
| .gif | image/gif | data:image/gif;base64,... |
| .svg | image/svg+xml | data:image/svg+xml;base64,... |
| .woff2 | font/woff2 | data:font/woff2;base64,... |
| .mp3 | audio/mpeg | data:audio/mpeg;base64,... |
| .wasm | application/wasm | data:application/wasm;base64,... |
| .bin | application/octet-stream | data:application/octet-stream;base64,... |
কোড উদাহরণ
এই কার্যকর উদাহরণগুলো দেখায় কিভাবে JavaScript, Python, Node.js, bash এবং Go-তে একটি বাইনারি ফাইল পড়ে Base64-এ এনকোড করতে হয়। প্রতিটি স্নিপেট প্যাডিং সহ মানক Base64 (RFC 4648 Section 4) তৈরি করে।
// Read a file from an <input> element and encode to Base64
const input = document.querySelector('input[type="file"]')
input.addEventListener('change', (e) => {
const file = e.target.files[0]
const reader = new FileReader()
reader.onload = () => {
const base64 = reader.result.split(',')[1]
console.log(base64) // → "JVBERi0xLjQK..." (raw Base64, no data URI prefix)
}
reader.readAsDataURL(file)
})
// Convert a Blob to Base64 with async/await
async function blobToBase64(blob) {
const buffer = await blob.arrayBuffer()
const bytes = new Uint8Array(buffer)
let binary = ''
bytes.forEach(b => binary += String.fromCharCode(b))
return btoa(binary) // → standard Base64 string
}import base64
from pathlib import Path
# Encode a file to Base64
file_bytes = Path('document.pdf').read_bytes()
encoded = base64.b64encode(file_bytes).decode('ascii')
print(encoded[:40]) # → "JVBERi0xLjQKJeLjz9MKMSAwIG9iago8PA..."
# Write encoded output to a text file
Path('document.b64.txt').write_text(encoded)
# Build a data URI from a file
mime_type = 'application/pdf'
data_uri = f'data:{mime_type};base64,{encoded}'
print(data_uri[:60]) # → "data:application/pdf;base64,JVBERi0xLj..."import { readFileSync, writeFileSync } from 'fs'
// Encode a file to Base64
const buffer = readFileSync('archive.zip')
const base64 = buffer.toString('base64')
console.log(base64.length) // → 1398104 (for a ~1 MB file)
// Save Base64 output to a file
writeFileSync('archive.b64.txt', base64)
// Build a data URI
const mime = 'application/zip'
const dataUri = `data:${mime};base64,${base64}`# Encode a file to Base64 (macOS / Linux) base64 < document.pdf > document.b64.txt # Encode with no line wrapping (GNU coreutils) base64 -w 0 < document.pdf > document.b64.txt # Encode and copy to clipboard (macOS) base64 < image.png | pbcopy # Encode with OpenSSL (available everywhere) openssl base64 -in archive.zip -out archive.b64.txt # Pipe directly into curl for API upload base64 -w 0 < photo.jpg | curl -X POST -d @- https://api.example.com/upload
package main
import (
"encoding/base64"
"fmt"
"os"
)
func main() {
data, err := os.ReadFile("document.pdf")
if err != nil {
panic(err)
}
encoded := base64.StdEncoding.EncodeToString(data)
fmt.Println(len(encoded)) // → 1398104 (for a ~1 MB file)
// Write to file
os.WriteFile("document.b64.txt", []byte(encoded), 0644)
}