Chuyển đổi Base64 sang tệp

Dán chuỗi Base64 hoặc data URI để dựng lại tệp gốc. Công cụ nhận dạng định dạng từ những byte đầu tiên, hiển thị bản xem trước khi có thể và lưu tệp với phần mở rộng phù hợp.

Chạy hoàn toàn trong trình duyệt của bạn. Không có gì được tải lên.

Cách sử dụng

  1. Dán chuỗi Base64 hoặc toàn bộ data URI vào ô đầu vào. Dấu cách và dấu xuống dòng không ảnh hưởng gì.
  2. Kiểm tra loại tệp phát hiện được và dung lượng. Ảnh, PDF, âm thanh, video và văn bản sẽ hiển thị trong bản xem trước.
  3. Tải tệp xuống. Tệp được lưu với tên và phần mở rộng khớp với loại đã phát hiện.

Cách nhận dạng loại tệp

Văn bản Base64 chỉ mang các byte, không mang tên tệp. Trừ khi bạn dán data URI có kiểu MIME, không có gì trong chuỗi cho biết nó chứa PDF, tệp nén ZIP hay một đoạn âm thanh. Vì vậy, công cụ giải mã dữ liệu rồi kiểm tra vài byte đầu tiên, tức chữ ký tệp hay "magic byte" mà hầu hết định dạng đặt ngay ở đầu tệp. Do các byte này cố định, văn bản Base64 của mỗi định dạng cũng bắt đầu theo cách dễ nhận ra:

Định dạngCác byte đầuBase64 bắt đầu bằng
PDF%PDFJVBER
PNG89 50 4E 47iVBORw0KGgo
JPEGFF D8 FF/9j/
GIFGIF8R0lGOD
ZIP (cả DOCX, XLSX, JAR)PK 03 04UEsDB
MP3 có thẻ ID3ID3SUQz
WAV, WebP, AVI (RIFF)RIFFUklGR

Khi tệp đã giải mã không mở được

Giải mã Base64 không làm mất dữ liệu, nên tệp bị hỏng gần như luôn có nghĩa là đầu vào không đúng như bạn nghĩ. Hãy lần lượt kiểm tra các nguyên nhân sau:

  • Đầu vào bị cắt cụt. Tệp nhật ký, terminal, ô bảng tính và ứng dụng nhắn tin thường cắt bớt các chuỗi dài. Thiếu văn bản ở cuối sẽ tạo ra tệp quá ngắn, và khi đó hầu hết định dạng đều không mở được. Nếu biết dung lượng gốc, hãy so sánh với dung lượng sau giải mã.
  • Ký tự thừa. Dấu ngoặc kép, dấu phẩy hoặc tên trường bị sao chép kèm theo giá trị, hay các chuỗi thoát như \/ và \n từ chuỗi JSON, đều không thuộc Base64. Chỉ sao chép đúng phần giá trị.
  • Một kiểu mã hóa hoặc biến thể khác. Hex, Base32, Base85 hoặc bảng ký tự tùy chỉnh thoạt nhìn có thể trông giống nhau nhưng sẽ thành dữ liệu rác khi giải mã như Base64. Công cụ nhận dạng mã hóa thử mọi bộ giải mã và cho biết bộ nào phù hợp.
  • Hoàn toàn không phải tệp. Nếu kết quả được nhận dạng là văn bản thuần, chuỗi đó là Base64 của văn bản: JSON, một token hoặc thêm một lớp Base64 nữa. Hãy đọc nó bằng bộ giải mã Base64, và giải mã thêm một lần nếu đầu ra vẫn là Base64.

Công cụ kiểm tra Base64 liệt kê các ký tự không hợp lệ kèm vị trí và báo lỗi phần đệm, giúp bạn khoanh vùng đoạn dữ liệu bị hỏng.

Giải mã Base64 thành tệp bằng mã

# Python
import base64
with open('output.bin', 'wb') as f:
    f.write(base64.b64decode(data))

// Node.js
fs.writeFileSync('output.bin', Buffer.from(data, 'base64'));

# Linux
base64 -d input.txt > output.bin

# macOS
base64 -D -i input.txt -o output.bin

# Windows PowerShell
[IO.File]::WriteAllBytes("C:\files\output.bin", [Convert]::FromBase64String((Get-Content input.txt -Raw)))

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

Có thể nhận dạng những loại tệp nào?

Các định dạng phổ biến có chữ ký rõ ràng: PDF; tệp nén ZIP, GZIP, 7z và RAR; ảnh PNG, JPEG, GIF, WebP và các định dạng ảnh khác; âm thanh MP3, WAV, OGG, FLAC và M4A; video MP4 và WebM; phông chữ WOFF, WOFF2, TTF và OTF; WebAssembly và nhiều định dạng khác. JSON, XML, HTML và văn bản thuần cũng được nhận dạng. Các định dạng không có chữ ký thì không thể xác định, nên nếu biết loại thật, hãy đổi tên tệp đã tải xuống.

Vì sao tệp Word hoặc Excel của tôi bị nhận dạng là ZIP?

Tệp DOCX, XLSX và PPTX, cũng như EPUB và JAR, thực chất là tệp nén ZIP với một cấu trúc thư mục riêng bên trong, và chúng bắt đầu bằng cùng magic byte như mọi tệp ZIP. Các byte đã giải mã vẫn chính xác: chỉ cần đổi tên tệp đã tải xuống thành .docx, .xlsx hoặc phần mở rộng bạn cần là tệp sẽ mở bình thường.

Tôi có thể dán data URI không?
Có. Hãy dán toàn bộ chuỗi, gồm cả tiền tố data:...;base64,, hoặc chỉ dán phần Base64. Dù theo cách nào, loại tệp cũng được kiểm tra dựa trên các byte đã giải mã.
Vì sao tệp đã giải mã nhỏ hơn văn bản Base64?

Base64 dùng 4 ký tự cho mỗi 3 byte, nên dung lượng tệp chỉ bằng khoảng ba phần tư độ dài văn bản. Nếu tệp nhỏ hơn nhiều so với tệp bạn mong đợi, có lẽ đầu vào đã bị cắt mất một phần.

Dữ liệu của tôi có bị gửi đi đâu không?

Không. Việc giải mã, nhận dạng loại tệp và xem trước đều chạy trong trình duyệt của bạn, và tệp tải xuống được tạo ngay trên thiết bị của bạn. Không có gì được tải lên.