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 كملفوفات).
  • دعم آمن للرابط: تبديل واحد بين + / → - _، مع خيار إزالة التعبئة =.
  • معالجة قبل فك التشفير: يمكن تجاهل المسافات البيضاء، واستعادة التشفير الآمن للرابط تلقائيًا، ومليء = تلقائيًا.
  • تفاعل مباشر: معالجة تلقائية عند الإدخال، مع عرض إحصائيات الطول ونسبة الزيادة.
  • سهولة الاستخدام: نسخ سريع، تعبئة متبادلة للنتائج، قابلية الوصول عبر لوحة المفاتيح، ومتوافق مع الأجهزة المحمولة.
  • تصميم موحد: لا يستخدم فئات Tailwind dark:، بل يعتمد بالكامل على موضوع DaisyUI.

أمثلة سريعة

النص الأصلي:
Hello, World!
Base64:
SGVsbG8sIFdvcmxkIQ==

ما هو Base64؟

Base64 هي طريقة لترميز البيانات الثنائية كنص ASCII، وتُستخدم غالبًا لنقل محتوى الصور أو الملفات عبر بروتوكولات نصية مثل JSON وXML وHTTP.

إنها تُحول كل 3 بايتات إلى 4 أحرف قابلة للطباعة، مما يؤدي عادةً إلى زيادة في الحجم بنسبة حوالي 33%.

يستخدم Base64 القياسي الأحرف A–Z وa–z و0–9 و+ و/ ورمز التعبئة =؛ بينما يحلّ البديل الآمن لـURL + و/ بـ- و_ لتجنب مشاكل التهريب في روابط URL.

الاستخدامات الشائعة

  • تضمين الصور أو الملفات الصغيرة كـ Data URI.
  • نقل البيانات الثنائية بين العميل والخادم (مثل النصوص المشفرة أو تدفقات الضغط).
  • جعل النص قابلاً للطباعة لتجنب مشاكل عدم اتساق الترميز أو الأحرف غير المرئية.

الأسئلة الشائعة والنقاط المهمة

  • مجموعة الأحرف: في بيئة الويب، يُفضل معالجة النص أولاً باستخدام UTF-8 (مدمج في هذه الأداة).
  • آمن لـURL: يُوصى باستخدام الإصدار الآمن لـURL للمعلمات أو المسارات، مع مراعاة إزالة رموز التعبئة.
  • رموز التعبئة: بعض التنفيذات تسمح بإهمال الرمز =، ويجب عند فك الترميز تكميله تلقائيًا ليصبح مضاعفًا لـ4.
  • فترات السطر: قد تحتوي MIME Base64 على فترات سطر، ويمكن تفعيل خيار "تجاهل الأحرف البيضاء" أثناء فك الترميز.

كيفية تنفيذ تشفير وفك تشفير Base64 عبر لغات البرمجة

JavaScript
نص → Base64 (آمن لـUTF-8)
const encoded = btoa(unescape(encodeURIComponent(text)));
// آمن لـURL
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
$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 (بدون تعبئة)
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 (بدون تعبئة)
urlEnc := base64.RawURLEncoding.EncodeToString([]byte(text))
فك الترميز (Base64 → نص)
import (
    "encoding/base64"
)

decBytes, err := base64.StdEncoding.DecodeString(enc)
// فك ترميز آمن لـURL (بدون تعبئة)
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 (بدون تعبئة)
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 (بدون تعبئة)
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 وتؤثر على الأداء.