Base64 Encoder and Decoder

A free online Base64 encoder and decoder for quick encoding and decoding, with convenient features like UTF-8 support, secure copy, and clear.

رمزگذاری (متن → Base64)

رمزگشایی (Base64 → متن)

راهنمای استفاده

Base64 داده‌های دودویی را به صورت ASCII رمزگذاری می‌کند تا قابل انتقال و ذخیره‌سازی باشند. اندازه حدود 33% افزایش می‌یابد.
رمزگذاری: تبدیل متن ساده به Base64 برای انتقال ایمن‌تر.
رمزگشایی: بازیابی متن اصلی از رشته Base64.

ویژگی‌ها

  • 安全 UTF-8: پشتیبانی صحیح از کاراکترهای غیر ASCII (با پیچیده‌سازی encodeURIComponent/unescape).
  • پشتیبانی URL-safe: تغییر یک‌کلیک + / به - _، و حذف اختیاری پرکننده =.
  • پردازش قبل از رمزگشایی: نادیده گرفتن فضاهای خالی، بازگرداندن خودکار URL-safe و پر کردن اتوماتیک =.
  • تعامل بلادرنگ: پردازش خودکار ورودی، نمایش آمار طول و افزایش حجم.
  • قابلیت استفاده: کپی سریع، پر کردن متقابل نتایج، دسترسی از کیبورد و سازگاری با موبایل.
  • طرح یکپارچه: بدون استفاده از کلاس‌های Tailwind dark:، کاملاً با تم DaisyUI طراحی شده.

مثال‌های سریع

متن اصلی:
Hello, World!
Base64:
SGVsbG8sIFdvcmxkIQ==

Base64 چیست؟

Base64 روشی برای رمزگذاری داده‌های دودویی به صورت متن ASCII است که معمولاً برای انتقال محتوای تصاویر یا فایل‌ها در پروتکل‌های متنی مانند JSON، XML و HTTP استفاده می‌شود.

این روش هر ۳ بایت را به ۴ کاراکتر قابل چاپ تبدیل می‌کند و معمولاً باعث افزایش حجم حدود ۳۳٪ می‌شود.

Base64 استاندارد از کاراکترهای A–Z a–z 0–9 + / و پرکننده = استفاده می‌کند؛ نسخه URL-safe جایگزین‌های - _ را به جای + / به کار می‌برد تا از مشکلات اسکیپ‌کردن در آدرس‌های وب جلوگیری شود.

کاربردهای رایج

  • ضمیمه کردن تصاویر یا فایل‌های کوچک به صورت Data URI.
  • انتقال داده‌های دودویی بین کلاینت و سرور (مانند رمزنگاری‌های کلید یا جریان‌های فشرده).
  • تبدیل متن به نسخه قابل چاپ برای جلوگیری از مشکلات ناسازگاری کدگذاری یا کاراکترهای نامرئی.

سوالات متداول و نکات مهم

  • مجموعه کاراکترها: در محیط وب، ابتدا متن خود را به UTF-8 تبدیل کنید (این ابزار این کار را به صورت پیش‌فرض انجام می‌دهد).
  • URL-safe: برای پارامترها یا مسیرهای URL، از نسخه URL-safe استفاده کنید و در نظر داشته باشید که پرکننده‌ها را حذف کنید.
  • پرکننده‌ها: برخی پیاده‌سازی‌ها اجازه حذف = را می‌دهند؛ هنگام رمزگشایی باید به صورت خودکار به مضرب ۴ تکمیل شوند.
  • شکست خط: Base64 MIME ممکن است شامل شکست خط باشد؛ برای رمزگشایی، گزینه «احراز کاراکترهای سفید» را فعال کنید.

چگونه Base64 را در زبان‌های برنامه‌نویسی رمزگذاری و رمزگشایی کنیم

JavaScript
متن → Base64 (امن UTF-8)
const encoded = btoa(unescape(encodeURIComponent(text)));
// URL-safe
const urlSafe = encoded.replace(/\+/g, '-').replace(/\//g, '_').replace(/=+$/g, '');
رمزگشایی (Base64 → متن)
// پیش‌پردازش: می‌توانید -_ را به +/ جایگزین کنید
let b64 = input.replace(/-/g, '+').replace(/_/g, '/');
if (b64.length % 4 !== 0) b64 = b64.padEnd(b64.length + (4 - (b64.length % 4)), '=');
const text = decodeURIComponent(escape(atob(b64)));
PHP
رمزگذاری (متن → Base64)
$encoded = base64_encode($text);
// URL-safe
$urlSafe = rtrim(strtr($encoded, '+/', '-_'), '=');
رمزگشایی (Base64 → متن)
$b64 = strtr($input, '-_', '+/');
// تکمیل خودکار '='
if (strlen($b64) % 4 !== 0) $b64 .= str_repeat('=', 4 - (strlen($b64) % 4));
$text = base64_decode($b64);
Python
رمزگذاری (متن → Base64)
import base64

encoded = base64.b64encode(text.encode('utf-8')).decode('ascii')
# رمزگذاری URL-safe (حذف پرکننده)
url_safe = encoded.replace('+','-').replace('/','_').rstrip('=')
رمزگشایی (Base64 → متن)
import base64

def b64_decode(s: str) -> str:
    s = s.replace('-','+').replace('_','/')
    s += '=' * (-len(s) % 4)  # تکمیل خودکار '='
    return base64.b64decode(s).decode('utf-8')
Go
رمزگذاری (متن → Base64)
import (
    "encoding/base64"
)

enc := base64.StdEncoding.EncodeToString([]byte(text))
// رمزگذاری URL-safe (بدون پرکننده)
urlEnc := base64.RawURLEncoding.EncodeToString([]byte(text))
رمزگشایی (Base64 → متن)
import (
    "encoding/base64"
)

decBytes, err := base64.StdEncoding.DecodeString(enc)
// رمزگشایی URL-safe (بدون پرکننده)
decURL, err2 := base64.RawURLEncoding.DecodeString(urlEnc)
Rust
رمزگذاری (متن → Base64)
use base64::{engine::general_purpose, Engine as _};

let enc = general_purpose::STANDARD.encode(text.as_bytes());
// رمزگذاری URL-safe (بدون پرکننده)
let url_enc = general_purpose::URL_SAFE_NO_PAD.encode(text.as_bytes());
رمزگشایی (Base64 → متن)
use base64::{engine::general_purpose, Engine as _};

let dec_bytes = general_purpose::STANDARD.decode(&enc).unwrap();
let dec = String::from_utf8(dec_bytes).unwrap();

let url_dec = String::from_utf8(
    general_purpose::URL_SAFE_NO_PAD.decode(&url_enc).unwrap()
).unwrap();
وابستگی Cargo: base64 = "0.22"
Java
رمزگذاری (متن → Base64)
import java.nio.charset.StandardCharsets;
import java.util.Base64;

String enc = Base64.getEncoder().encodeToString(text.getBytes(StandardCharsets.UTF_8));
// رمزگذاری URL-safe (بدون پرکننده)
String urlEnc = Base64.getUrlEncoder().withoutPadding().encodeToString(text.getBytes(StandardCharsets.UTF_8));
رمزگشایی (Base64 → متن)
import java.nio.charset.StandardCharsets;
import java.util.Base64;

String dec = new String(Base64.getDecoder().decode(enc), StandardCharsets.UTF_8);
String urlDec = new String(Base64.getUrlDecoder().decode(urlEnc), StandardCharsets.UTF_8);

مثال‌های Data URI

ضمیمه کردن تصاویر یا فایل‌های کوچک به صورت Data URI:

data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA...

توجه: استفاده از Data URI برای فایل‌های بزرگ توصیه نمی‌شود، زیرا باعث افزایش قابل توجه حجم HTML/JSON و کاهش عملکرد می‌شود.