Base64 Encoder/Decoder

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

Mã hóa (văn bản → Base64)

Giải mã (Base64 → văn bản)

Hướng dẫn sử dụng

Base64 mã hóa dữ liệu nhị phân thành ASCII để truyền tải và lưu trữ. Kích thước tăng khoảng 33%.
Mã hóa: Chuyển đổi văn bản thuần thành Base64 để truyền tải an toàn hơn.
Giải mã: Phục hồi văn bản gốc từ chuỗi Base64.

Tính năng

  • An toàn với UTF-8: Xử lý chính xác các ký tự không ASCII (sử dụng encodeURIComponent/unescape bao quanh).
  • Hỗ trợ URL-safe: Chuyển đổi + / → - _ chỉ với một cú nhấp, tùy chọn loại bỏ dấu = đệm.
  • Xử lý trước khi giải mã: Bỏ qua khoảng trắng, tự động phục hồi URL-safe và thêm = nếu thiếu.
  • Tương tác thời gian thực: Nhập tự động xử lý, hiển thị độ dài và thống kê tỷ lệ tăng trưởng.
  • Tính dễ dùng: Sao chép nhanh, điền kết quả lẫn nhau, hỗ trợ phím tắt và thân thiện với thiết bị di động.
  • Giao diện đồng nhất: Không dùng lớp dark: của Tailwind, hoàn toàn dựa trên chủ đề DaisyUI.

Ví dụ nhanh

Văn bản gốc:
Hello, World!
Base64:
SGVsbG8sIFdvcmxkIQ==

Base64 là gì?

Base64 là một phương pháp mã hóa dữ liệu nhị phân thành văn bản ASCII, thường được sử dụng để truyền nội dung hình ảnh hoặc tệp trong các giao thức văn bản như JSON, XML, HTTP.

Nó ánh xạ mỗi 3 byte thành 4 ký tự có thể in, thường làm tăng kích thước khoảng 33%.

Base64 chuẩn sử dụng A–Z a–z 0–9 + / và ký tự đệm =; biến thể an toàn URL thay thế + / bằng - _, nhằm tránh vấn đề trốn thoát trong URL.

Ứng dụng phổ biến

  • Nhúng hình ảnh hoặc tệp nhỏ dưới dạng Data URI.
  • Truyền dữ liệu nhị phân giữa máy chủ và client (ví dụ: văn bản mã hóa, luồng nén).
  • Chuyển đổi văn bản thành dạng có thể in, tránh các vấn đề về không nhất quán mã hóa hoặc ký tự không hiển thị.

Câu hỏi thường gặp & Lưu ý

  • Bộ ký tự: Trong môi trường web, hãy xử lý văn bản trước ở định dạng UTF-8 (công cụ này đã tích hợp sẵn).
  • An toàn URL: Đối với tham số hoặc đường dẫn URL, nên dùng biến thể an toàn URL và cân nhắc loại bỏ ký tự đệm.
  • Ký tự đệm: Một số triển khai cho phép bỏ qua =, nhưng khi giải mã cần tự động bổ sung để đạt bội số của 4.
  • Dòng mới: Base64 theo chuẩn MIME có thể chứa dòng mới; khi giải mã, hãy chọn “Bỏ qua ký tự trắng”.

Cách thực hiện mã hóa/giải mã Base64 bằng ngôn ngữ lập trình

JavaScript
Văn bản → Base64 (an toàn UTF-8)
const encoded = btoa(unescape(encodeURIComponent(text)));
// An toàn URL
const urlSafe = encoded.replace(/\+/g, '-').replace(/\//g, '_').replace(/=+$/g, '');
Giải mã (Base64 → văn bản)
// Tiền xử lý: Có thể thay thế -_ bằng +/
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
Mã hóa (văn bản → Base64)
$encoded = base64_encode($text);
// An toàn URL
$urlSafe = rtrim(strtr($encoded, '+/', '-_'), '=');
Giải mã (Base64 → văn bản)
$b64 = strtr($input, '-_', '+/');
// Tự động bổ sung '='
if (strlen($b64) % 4 !== 0) $b64 .= str_repeat('=', 4 - (strlen($b64) % 4));
$text = base64_decode($b64);
Python
Mã hóa (văn bản → Base64)
import base64

encoded = base64.b64encode(text.encode('utf-8')).decode('ascii')
# Mã hóa an toàn URL (loại bỏ ký tự đệm)
url_safe = encoded.replace('+','-').replace('/','_').rstrip('=')
Giải mã (Base64 → văn bản)
import base64

def b64_decode(s: str) -> str:
    s = s.replace('-','+').replace('_','/')
    s += '=' * (-len(s) % 4)  # Tự động bổ sung '='
    return base64.b64decode(s).decode('utf-8')
Go
Mã hóa (văn bản → Base64)
import (
    "encoding/base64"
)

enc := base64.StdEncoding.EncodeToString([]byte(text))
// Mã hóa an toàn URL (không có ký tự đệm)
urlEnc := base64.RawURLEncoding.EncodeToString([]byte(text))
Giải mã (Base64 → văn bản)
import (
    "encoding/base64"
)

decBytes, err := base64.StdEncoding.DecodeString(enc)
// Giải mã an toàn URL (không có ký tự đệm)
decURL, err2 := base64.RawURLEncoding.DecodeString(urlEnc)
Rust
Mã hóa (văn bản → Base64)
use base64::{engine::general_purpose, Engine as _};

let enc = general_purpose::STANDARD.encode(text.as_bytes());
// Mã hóa an toàn URL (không có ký tự đệm)
let url_enc = general_purpose::URL_SAFE_NO_PAD.encode(text.as_bytes());
Giải mã (Base64 → văn bản)
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();
Phụ thuộc Cargo: base64 = "0.22"
Java
Mã hóa (văn bản → Base64)
import java.nio.charset.StandardCharsets;
import java.util.Base64;

String enc = Base64.getEncoder().encodeToString(text.getBytes(StandardCharsets.UTF_8));
// Mã hóa an toàn URL (không có ký tự đệm)
String urlEnc = Base64.getUrlEncoder().withoutPadding().encodeToString(text.getBytes(StandardCharsets.UTF_8));
Giải mã (Base64 → văn bản)
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);

Ví dụ Data URI

Nhúng hình ảnh hoặc tệp nhỏ dưới dạng Data URI:

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

Lưu ý: Không nên dùng Data URI cho tệp lớn vì sẽ làm tăng đáng kể kích thước HTML/JSON và ảnh hưởng đến hiệu năng.