Cách mã hóa ảnh thành Base64 online
Tháng 6, 2026 · 9 phút đọc
Base64 là phương pháp mã hóa phổ biến trong lập trình web, giúp nhúng trực tiếp ảnh vào HTML hoặc CSS mà không cần file riêng. Bài viết này sẽ giải thích Base64 là gì, khi nào nên sử dụng, và hướng dẫn cách mã hóa ảnh thành Base64 online miễn phí.
Base64 là gì?
Base64 là phương pháp mã hóa dữ liệu nhị phân (binary) thành chuỗi ký tự ASCII. Tên "Base64" xuất phát từ việc sử dụng 64 ký tự để biểu diễn dữ liệu:
- A-Z (26 ký tự in hoa)
- a-z (26 ký tự thường)
- 0-9 (10 chữ số)
- + và / (2 ký tự đặc biệt)
- = (ký tự padding ở cuối)
Khi bạn mã hóa một file ảnh sang Base64, dữ liệu nhị phân của ảnh sẽ được chuyển thành một chuỗi ký tự dài. Chuỗi này có thể được nhúng trực tiếp vào HTML, CSS, JSON, hoặc bất kỳ định dạng văn bản nào.
Cách Base64 hoạt động
Quy trình mã hóa Base64 khá đơn giản:
- Lấy dữ liệu nhị phân (binary) của file
- Chia thành các nhóm 3 byte (24 bit)
- Chia mỗi nhóm thành 4 phần, mỗi phần 6 bit
- Mỗi phần 6 bit được ánh xạ thành 1 ký tự trong bảng Base64
- Nếu số byte không chia hết cho 3, thêm ký tự "=" ở cuối
Kết quả: Dữ liệu Base64 lớn hơn dữ liệu gốc khoảng 33%. Đây là nhược điểm lớn khi mã hóa file lớn.
Khi nào nên dùng Base64 cho ảnh?
Nên dùng Base64 khi:
- Icon, logo nhỏ: Dưới 10KB, giúp giảm số lượng HTTP request
- Ảnh nền nhỏ: Pattern, texture nhỏ lặp lại
- Email HTML: Nhúng ảnh trực tiếp vào email không cần file đính kèm
- API response: Truyền ảnh qua API dạng JSON
- Data URI trong CSS: Nhúng ảnh nhỏ vào stylesheet
- Ứng dụng offline: Khi không muốn phụ thuộc vào file bên ngoài
Không nên dùng Base64 khi:
- Ảnh lớn (trên 10KB): Kích thước tăng 33%, tốn băng thông
- Ảnh cần cache: Ảnh Base64 không được cache riêng biệt bởi trình duyệt
- Nhiều ảnh: Tạo HTML/CSS rất lớn, ảnh hưởng hiệu suất
- SEO: Ảnh Base64 không được index bởi công cụ tìm kiếm
Cách mã hóa ảnh thành Base64 online
Sử dụng công cụ Base64 của ToolHub để mã hóa ảnh nhanh chóng:
- Truy cập ToolHub Base64 Encoder
- Chọn tab "Image to Base64"
- Kéo thả ảnh vào vùng upload hoặc nhấn "Chọn tệp"
- Công cụ sẽ tự động mã hóa ảnh thành chuỗi Base64
- Nhấn "Copy" để sao chép chuỗi Base64
- Sử dụng chuỗi này trong HTML, CSS, hoặc code của bạn
Cách nhúng ảnh Base64 vào HTML
Sử dụng Data URI để nhúng ảnh Base64 trực tiếp vào thẻ <img>:
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUA
AAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO
9TXL0Y4OHwAAAABJRU5ErkJggg==" alt="Red dot">
Định dạng Data URI:
data:[<mediatype>][;base64],<data>
image/png- Loại MIME của ảnhbase64- Phương thức mã hóaiVBORw0KGgo...- Dữ liệu ảnh đã mã hóa
Cách nhúng ảnh Base64 vào CSS
Nhúng ảnh nhỏ vào CSS để giảm HTTP request:
/* Icon nhỏ */
.icon-check {
background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTEzIDVMNiAxMkwzIDkiIHN0cm9rZT0iIzEwYjk4MSIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPC9zdmc+");
width: 16px;
height: 16px;
}
/* Pattern nền nhỏ */
.bg-pattern {
background-image: url("data:image/png;base64,iVBORw0KGgo...");
background-repeat: repeat;
}
Cách nhúng ảnh Base64 vào Email HTML
Khi gửi HTML email, nhúng ảnh Base64 giúp ảnh hiển thị mà không cần file đính kèm:
<html>
<body>
<h1>Xin chào</h1>
<img src="data:image/png;base64,iVBORw0KGgo..."
alt="Logo"
width="200">
<p>Nội dung email...</p>
</body>
</html>
Lưu ý: Một số client email (như Outlook) có thể không hiển thị ảnh Base64. Hãy test trước khi gửi.
Base64 trong JavaScript
Chuyển file ảnh sang Base64:
function fileToBase64(file) {
return new Promise((resolve, reject) => {
const reader = new FileReader();
reader.onload = () => resolve(reader.result);
reader.onerror = error => reject(error);
reader.readAsDataURL(file);
});
}
// Sử dụng
const fileInput = document.querySelector('input[type="file"]');
fileInput.addEventListener('change', async (e) => {
const file = e.target.files[0];
const base64 = await fileToBase64(file);
console.log(base64); // data:image/png;base64,iVBORw0KGgo...
});
Chuyển Base64 sang Blob (để tải về):
function base64ToBlob(base64, mimeType) {
const byteString = atob(base64.split(',')[1]);
const ab = new ArrayBuffer(byteString.length);
const ia = new Uint8Array(ab);
for (let i = 0; i < byteString.length; i++) {
ia[i] = byteString.charCodeAt(i);
}
return new Blob([ab], { type: mimeType });
}
Base64 trong Python
import base64
# Mã hóa file ảnh sang Base64
with open("anh.png", "rb") as f:
encoded = base64.b64encode(f.read()).decode("utf-8")
print(f"data:image/png;base64,{encoded}")
# Giải mã Base64 sang file ảnh
base64_string = "iVBORw0KGgo..."
with open("anh_output.png", "wb") as f:
f.write(base64.b64decode(base64_string))
So sánh Base64 vs URL ảnh
| Tiêu chí | Base64 (Data URI) | URL ảnh (src) |
|---|---|---|
| HTTP Request | Không cần (nhúng trong HTML) | Cần request riêng |
| Kích thước | Lớn hơn 33% | Kích thước gốc |
| Cache | Không cache riêng | Cache bởi trình duyệt |
| Tải ban đầu | Chậm hơn (HTML lớn) | Nhanh hơn (tải song song) |
| Phù hợp cho | Ảnh nhỏ dưới 10KB | Mọi kích thước ảnh |
| SEO | Không index được | Index được |
Những lỗi thường gặp với Base64
- Quên tiền tố data URI: Phải có
data:image/png;base64,trước chuỗi Base64 - Sai loại MIME: PNG là
image/png, JPG làimage/jpeg, GIF làimage/gif - Dùng cho ảnh lớn: Ảnh trên 10KB sẽ khiến HTML/CSS rất lớn, ảnh hưởng hiệu suất
- Nhầm Base64 là mã hóa bảo mật: Base64 chỉ là encoding, ai cũng có thể decode
- Không tối ưu ảnh trước: Hãy nén ảnh trước khi mã hóa để giảm kích thước
Mẹo sử dụng Base64 hiệu quả
- Chỉ dùng cho ảnh nhỏ: Dưới 10KB là lý tưởng, tối đa 20KB
- Nén ảnh trước: Sử dụng công cụ nén ảnh trước khi mã hóa
- Chuyển sang WebP: WebP nhỏ hơn JPG/PNG, giúp chuỗi Base64 ngắn hơn
- Sử dụng SVG cho icon: SVG Base64 thường nhỏ hơn bitmap rất nhiều
- Kiểm tra kích thước: Nếu chuỗi Base64 quá dài, có thể bạn nên dùng URL thay vì Base64
Câu hỏi thường gặp
Mã hóa ảnh thành Base64 ngay
Sử dụng công cụ Base64 miễn phí của ToolHub - encode và decode nhanh chóng.
Mở Base64 Encoder →