Base64 là một sơ đồ mã hóa nhị phân sang văn bản, biểu diễn dữ liệu nhị phân bằng cách sử dụng một tập hợp 64 ký tự ASCII có thể in. Nó được thiết kế để truyền an toàn dữ liệu nhị phân qua các hệ thống chỉ xử lý văn bản — như email (MIME), header HTTP và XML. Tên "Base64" bắt nguồn từ 64 ký tự được sử dụng trong bảng chữ cái mã hóa.
Quá trình mã hóa hoạt động bằng cách lấy ba byte đầu vào (24 bit) và chia thành bốn nhóm 6-bit. Mỗi giá trị 6-bit được ánh xạ tới một ký tự trong bảng chữ cái Base64. Nếu độ dài đầu vào không phải là bội số của ba, các ký tự đệm (=) sẽ được thêm vào để đạt bội số của bốn ký tự đầu ra. Kết quả là một chuỗi lớn hơn dữ liệu gốc khoảng 33% nhưng an toàn để truyền tải dưới dạng văn bản thuần.
Tại sao sử dụng công cụ này?
Bộ mã hóa này xử lý văn bản Unicode chính xác, hỗ trợ cả biến thể chuẩn và URL-safe, và mã hóa hoàn toàn trong trình duyệt của bạn — dữ liệu của bạn không bao giờ rời khỏi máy của bạn.
⚡
Mã hóa tức thì
Kết quả xuất hiện khi bạn gõ. Không có nút nào để nhấp, không cần chờ phản hồi từ máy chủ.
🔗
Chuyển đổi URL-safe
Chuyển đổi giữa mã hóa chuẩn (+/) và URL-safe (-_) với một lần nhấp. Phần đệm được tự động xóa cho biến thể URL-safe.
🔒
Hoàn toàn phía máy khách
Toàn bộ quá trình mã hóa diễn ra cục bộ trong trình duyệt của bạn bằng API btoa gốc và TextEncoder. Không có gì được gửi đến bất kỳ máy chủ nào.
🎛️
Hỗ trợ Unicode
Xử lý chính xác Unicode đầy đủ bao gồm emoji, ký tự CJK và bất kỳ văn bản UTF-8 nào bằng cách sử dụng encodeURIComponent trước khi mã hóa.
Cách sử dụng công cụ mã hóa Base64 trực tuyến này
Không cần tài khoản, không cần cài đặt, không cần tải lên — dán văn bản và kết quả mã hóa xuất hiện ngay lập tức.
1
Dán hoặc nhập văn bản của bạn
Nhấp vào trường nhập và dán bất kỳ văn bản nào — chuỗi thuần, payload JSON, khóa API, địa chỉ email, hoặc bất kỳ nội dung UTF-8 nào. Mã hóa được cập nhật trực tiếp khi bạn gõ.
2
Chọn biến thể của bạn
Chọn Standard (RFC 4648) cho MIME, HTTP Basic Auth và sử dụng chung. Chọn URL-safe cho JWT token, tham số query string, tên tệp và bất kỳ ngữ cảnh nào mà + hoặc / sẽ phá vỡ việc phân tích URL.
3
Sao chép kết quả
Nhấp Sao chép để gửi chuỗi Base64 vào bộ nhớ tạm với một cú nhấp. Kết quả sẵn sàng để dán trực tiếp vào mã, tệp cấu hình hoặc yêu cầu API của bạn.
4
Sử dụng trong ứng dụng của bạn
Dán chuỗi đã mã hóa vào bất kỳ đâu cần thiết — header Authorization, data URI, trường JSON, biến môi trường hoặc secret Kubernetes. Đối với đầu ra URL-safe, padding đã được loại bỏ sẵn.
Bảng chữ cái Base64
Base64 sử dụng 64 ký tự: chữ hoa A–Z (giá trị 0–25), chữ thường a–z (26–51), chữ số 0–9 (52–61) và hai ký tự đặc biệt cho giá trị 62 và 63. Biến thể chuẩn RFC 4648 sử dụng + và /; biến thể URL-safe thay thế chúng bằng - và _ để tránh xung đột trong URL và tên tệp.
A–Z
0–25
ABCDEFGHIJKLMNOPQRSTUVWXYZ
a–z
26–51
abcdefghijklmnopqrstuvwxyz
0–9
52–61
0123456789
+, /
62–63
RFC 4648 chuẩn — tránh dùng trong URL và tên tệp
-, _
62–63
Biến thể URL-safe (RFC 4648 §5) — an toàn trong URL và tên tệp
Base64 chuẩn so với URL-safe
Bảng chữ cái Base64 chuẩn sử dụng + và / là các ký tự đặc biệt trong URL và đường dẫn tệp. Biến thể URL-safe thay thế chúng bằng - và _ và thường bỏ qua các ký tự đệm =. Sử dụng mã hóa URL-safe cho token JWT, dữ liệu trong chuỗi truy vấn, tên tệp và bất kỳ ngữ cảnh nào mà + hoặc / có thể bị hiểu nhầm.
Đầu vào
Chuẩn
URL-safe
Man
TWFu
TWFu
Hello
SGVsbG8=
SGVsbG8
A
QQ==
QQ
1+1=2
MSsxPTI=
MSsxPTI
Các trường hợp sử dụng phổ biến
Tệp đính kèm email (MIME)
SMTP được thiết kế cho văn bản ASCII 7-bit. Mã hóa Base64 được tiêu chuẩn MIME sử dụng để nhúng an toàn các tệp đính kèm nhị phân (hình ảnh, PDF, tệp thực thi) trong các tin nhắn email.
URI dữ liệu
Nhúng hình ảnh, phông chữ và các tài nguyên khác trực tiếp vào HTML hoặc CSS bằng URI dữ liệu: data:image/png;base64,... — loại bỏ các yêu cầu HTTP thêm cho tài nguyên nhỏ.
Tải trọng API
Các API REST thường yêu cầu các trường nhị phân (tải lên tệp, khóa mật mã, chứng chỉ) được mã hóa Base64 khi nhúng vào JSON, vì JSON không có kiểu nhị phân.
Tệp cấu hình
Các bí mật Kubernetes, biến môi trường và cấu hình CI/CD thường lưu trữ các bí mật nhị phân và chứng chỉ dưới dạng chuỗi Base64 để tránh các vấn đề thoát ký tự.
HTTP Basic Auth
Header HTTP Authorization: Basic mã hóa thông tin xác thực dưới dạng Base64(tên_người_dùng:mật_khẩu). Đây không phải là mã hóa — nó chỉ cung cấp mã hóa để truyền trong các header.
Token JWT
JSON Web Token sử dụng URL-safe Base64 (base64url) để mã hóa các phần header và tải trọng, làm cho token an toàn khi sử dụng trong URL và header HTTP mà không cần thoát ký tự.
Khi nào KHÔNG nên dùng Base64
Base64 là mã hóa truyền tải, không phải cơ chế bảo mật. Đây là những lỗi sử dụng phổ biến nhất gây ra vấn đề thực tế trong môi trường production:
✕
Không dùng cho bảo mật hoặc mã hóa
Base64 có thể đảo ngược một cách tầm thường — không cần khóa hay mật khẩu để giải mã. Bất kỳ ai nhìn thấy chuỗi Base64 đều có thể giải mã trong vài giây. Đừng bao giờ dùng Base64 thay thế cho mã hóa, băm hoặc kiểm soát truy cập.
✕
Không dùng để nén
Base64 tăng kích thước đầu ra khoảng 33%. Đây là điều ngược lại của nén. Đừng dùng để giảm kích thước payload — hãy dùng gzip, Brotli hoặc zstd.
✕
Không dùng để lưu trữ tệp nhị phân
Lưu các tệp nhị phân lớn dưới dạng Base64 trong cơ sở dữ liệu hoặc JSON API lãng phí đáng kể dung lượng lưu trữ và bộ nhớ. Hãy dùng object storage (S3, R2, Cloudflare) và phục vụ nhị phân trực tiếp.
Ví dụ mã
Cách mã hóa một chuỗi sang Base64 trong các ngôn ngữ và môi trường phổ biến:
JavaScript (browser)
// Standard Base64
const encoded = btoa(unescape(encodeURIComponent(text)))
// URL-safe Base64 (no padding)
const urlSafe = btoa(unescape(encodeURIComponent(text)))
.replace(/\+/g, '-').replace(/\//g, '_').replace(/=/g, '')
Có nhiều bộ mã hóa Base64 trực tuyến. Các điểm khác biệt chính cho sử dụng hàng ngày của nhà phát triển là quyền riêng tư, độ chính xác và hỗ trợ biến thể.
Hoàn toàn riêng tư — Không có máy chủ
Bộ mã hóa này chạy hoàn toàn trong trình duyệt của bạn bằng API btoa gốc và TextEncoder. Văn bản của bạn không bao giờ được truyền đến bất kỳ máy chủ nào — an toàn cho khóa API, token và bí mật.
Mã hóa Unicode chính xác
Nhiều công cụ Base64 trực tuyến lặng lẽ làm hỏng đầu vào không phải ASCII. Công cụ này xử lý chính xác toàn bộ Unicode — emoji, CJK, tiếng Ả Rập và tất cả văn bản UTF-8 — bằng cách mã hóa sang byte UTF-8 trước.
Cả hai biến thể ở một nơi
Hầu hết các công cụ chỉ cung cấp Base64 tiêu chuẩn. Bộ mã hóa này cung cấp cả biến thể tiêu chuẩn (+/) và URL-safe (-_) với xử lý padding tự động — không cần thay thế ký tự thủ công.
Câu hỏi thường gặp
Base64 có giống với mã hóa không?
Không. Base64 là một sơ đồ mã hóa, không phải mã hóa. Bất kỳ ai cũng có thể đảo ngược nó một cách tầm thường — không cần khóa hay mật khẩu để giải mã nó. Đừng bao giờ sử dụng Base64 để bảo vệ dữ liệu nhạy cảm. Sử dụng mã hóa thích hợp (AES, RSA) cho mục đích đó.
Tại sao đầu ra Base64 kết thúc bằng = hoặc ==?
Base64 hoạt động theo nhóm 3 byte (24 bit), tạo ra 4 ký tự Base64. Nếu độ dài đầu vào không phải là bội số của 3, các ký tự đệm (=) được thêm vào để độ dài đầu ra là bội số của 4. Một = có nghĩa là nhóm cuối cùng có 2 byte; hai = có nghĩa là nó có 1 byte.
URL-safe Base64 là gì?
URL-safe Base64 (được định nghĩa trong RFC 4648 §5) thay thế + bằng - và / bằng _ để chuỗi được mã hóa có thể được sử dụng trong URL, tên tệp và header HTTP mà không cần mã hóa phần trăm. Nó cũng thường bỏ qua các ký tự đệm =.
Base64 tăng kích thước tệp lên bao nhiêu?
Mã hóa Base64 tăng kích thước lên khoảng 33%. Cứ 3 byte đầu vào trở thành 4 ký tự đầu ra. Đối với tệp 1 MB, đầu ra Base64 sẽ khoảng 1,37 MB.
Tôi có thể mã hóa tệp nhị phân với công cụ này không?
Công cụ này mã hóa các chuỗi văn bản (sau đó được xử lý như byte UTF-8). Để mã hóa các tệp nhị phân tùy ý (hình ảnh, PDF, tệp thực thi), hãy sử dụng thư viện ngôn ngữ hoặc công cụ CLI đọc byte thô.
Sự khác biệt giữa btoa() và Buffer.from().toString('base64') là gì?
btoa() là hàm tích hợp trình duyệt hoạt động trên chuỗi Latin-1; nó sẽ ném lỗi cho các ký tự không phải ASCII trừ khi bạn mã hóa chúng sang byte UTF-8 trước (sử dụng encodeURIComponent). Buffer.from(văn_bản).toString('base64') trong Node.js xử lý chuỗi UTF-8 trực tiếp và là phương pháp được ưa thích phía máy chủ.
Base64 có hoạt động với tệp nhị phân không?
Công cụ này mã hóa chuỗi văn bản dưới dạng byte UTF-8 vào Base64. Đối với tệp nhị phân (hình ảnh, PDF, tệp thực thi), hãy dùng công cụ CLI hoặc thư viện ngôn ngữ đọc byte thô. Trong trình duyệt, hãy dùng FileReader.readAsDataURL() trả về data URI với nội dung nhị phân mã hóa Base64.
Có giới hạn kích thước để mã hóa không?
Công cụ này chạy hoàn toàn trong trình duyệt mà không có giới hạn phía máy chủ. Giới hạn thực tế phụ thuộc vào bộ nhớ trình duyệt của bạn. Đối với đầu vào rất lớn (trên vài MB), công cụ CLI như base64 (Linux/macOS) hoặc certutil -encode (Windows) hiệu quả hơn.