Định dạng Base64

Nhập messy Base64
0 ký tự

Định dạng chuỗi Base64 trực tuyến, hỗ trợ chiều rộng ký tự tùy chỉnh (64/76/80/100 ký tự) và thụt lề (0/2/4 khoảng trắng) phân dòng hiển thị, phù hợp đọc chuỗi dài, so sánh ảnh chụp và bố cục tài liệu. Chỉ thay đổi định dạng hiển thị, không thay đổi dữ liệu mã hóa Base64 gốc.

Đề xuất Liên quan

Định dạng Base64 là gì?

Định dạng Base64 là việc phân tách một chuỗi Base64 dài thành nhiều dòng theo chiều rộng ký tự chỉ định (như 64/76/80/100) ở cấp độ hiển thị, với hỗ trợ thụt lề 0/2/4 khoảng trắng. Kết quả định dạng dễ đọc hơn về mặt trực quan, phù hợp để chụp ảnh, in ấn và bố cục tài liệu, nhưng **không thay đổi nội dung byte gốc** — loại bỏ tất cả xuống dòng và thụt lề có thể khôi phục thành Base64 một dòng gốc.

**Tại sao cần định dạng?** Base64 tiêu chuẩn RFC 4648 không bắt buộc xuống dòng, nhưng trong thực tế sử dụng: ①Chuỗi Base64 dài trong hệ thống vé, công cụ chat, tài liệu Markdown dễ bị tràn gây cuộn ngang; ②Giao thức MIME (RFC 2045) quy định gập dòng mỗi 76 ký tự (dùng cho tệp đính kèm email); ③Khi xem xét mã code, hiển thị nhiều dòng dễ dàng xác định vị trí ký tự bất thường; ④Bố cục ảnh chụp tài liệu cần căn chỉnh đẹp mắt.

**Các tình huống sử dụng phổ biến:** ①Bố cục tài liệu kỹ thuật: Nhúng Base64 dài trong Markdown / Confluence / Notion; ②So sánh ảnh chụp: Trong ảnh chụp PR / báo cáo Bug thuận tiện cho nhóm xem chuỗi Base64 hoàn chỉnh; ③Kiểm tra thủ công: Trong Code Review nhanh chóng xác định ký tự bất hợp pháp (như xuống dòng, khoảng trắng trộn lẫn); ④Tệp đính kèm email: Gập dòng theo tiêu chuẩn MIME 76 ký tự thuận tiện truyền SMTP; ⑤Hiển thị nhật ký màn hình lớn: Hiển thị theo nhiều dòng trên màn hình giám sát thuận tiện xem.

**Khác biệt với MIME Base64:** MIME Base64 (RFC 2045) cố định gập dòng mỗi 76 ký tự, là yêu cầu bắt buộc cấp giao thức. Định dạng của công cụ này linh hoạt hơn, hỗ trợ nhiều chiều rộng 64/76/80/100 ký tự + thụt lề 0/2/4 khoảng trắng, phù hợp các tình huống tài liệu khác nhau. Gập dòng MIME có thể tái tạo bằng cách chọn chiều rộng 76 ký tự.

**An toàn định dạng:** Công cụ chỉ chèn ký tự xuống dòng và thụt lề ở cấp độ hiển thị, **không bao giờ thay đổi nội dung byte của Base64 gốc**. Kết quả định dạng sau khi loại bỏ tất cả ký tự trắng có thể khôi phục thành chuỗi Base64 gốc hoàn toàn giống hệt. Khi giải mã, hầu hết bộ giải mã Base64 sẽ tự động bỏ qua ký tự trắng, vì vậy kết quả định dạng có thể giải mã trực tiếp.

Trường hợp sử dụng

  • Phân dòng chuỗi Base64 siêu dài theo chiều rộng tùy chỉnh thuận tiện đọc và chụp ảnh
  • Định dạng Base64 dùng cho tài liệu kỹ thuật, bản ghi vé hoặc hiển thị email
  • Tối ưu bố cục Base64 khi in ấn hoặc lưu trữ
  • Phối hợp công cụ tách, hợp nhất thực hiện điều chỉnh cấu trúc Base64
  • Gập dòng Base64 theo tiêu chuẩn MIME (76 ký tự) dùng cho tệp đính kèm email
  • Hiển thị Base64 nhiều dòng khi xem xét code thuận tiện xác định ký tự bất thường
  • Khi nhúng Base64 vào Markdown thụt lề 4 khoảng trắng duy trì phong cách code
  • Hiển thị nhật ký màn hình lớn: Hiển thị payload Base64 dài nhiều dòng trong hệ thống giám sát

Cách Sử dụng

  1. Dán chuỗi Base64 cần định dạng (có thể chứa hoặc không chứa xuống dòng)
  2. Chọn chiều rộng ký tự mỗi dòng: 64 / 76 / 80 / 100
  3. Chọn thụt lề: 0 / 2 / 4 khoảng trắng
  4. Công cụ định dạng hiển thị thời gian thực theo chiều rộng và thụt lề chỉ định
  5. Sao chép kết quả định dạng dùng cho tài liệu, hoặc nhấp khôi phục loại bỏ xuống dòng

Tính năng

  • Chiều rộng ký tự tùy chỉnh: Hỗ trợ 64 / 76 / 80 / 100 ký tự mỗi dòng, linh hoạt thích ứng các nhu cầu bố cục khác nhau
  • Thụt lề cấu hình được: Hỗ trợ thụt lề 0 / 2 / 4 khoảng trắng, thuận tiện căn chỉnh trong khối code hoặc Markdown
  • Tối ưu hiển thị thuần túy: Chỉ điều chỉnh cách hiển thị, không thay đổi dữ liệu mã hóa Base64 gốc
  • Định dạng thời gian thực: Chống rung 200ms, nhập ngay lập tức định dạng, không độ trễ
  • Khôi phục một cú nhấp: Loại bỏ tất cả xuống dòng và thụt lề, khôi phục thành Base64 một dòng
  • Thống kê ký tự và số dòng: Hiển thị thời gian thực số ký tự nhập, tổng số dòng xuất
  • Sao chép một cú nhấp: Kết quả định dạng có thể sao chép trực tiếp vào bảng tạm, dùng cho tài liệu hoặc bản ghi vé
  • Không tải lên cục bộ trình duyệt: Tất cả định dạng hoàn thành trong trình duyệt, không đi qua bất kỳ máy chủ nào

Ví dụ mã

JavaScript: Thực hiện định dạng Base64 thủ công (hiểu nguyên lý)

javascript

Hiểu logic lớp dưới của định dạng Base64 — phân tách theo chiều rộng ký tự và chèn ký tự xuống dòng.

// Hàm định dạng Base64 (nhất quán với logic công cụ này)
function formatBase64(input, lineLength = 76, indent = 0) {
  // 1. Loại bỏ tất cả ký tự trắng
  const clean = input.replace(/\s/g, '');
  if (!clean) return '';

  // 2. Phân tách theo chiều rộng chỉ định
  const lines = [];
  for (let i = 0; i < clean.length; i += lineLength) {
    const line = clean.slice(i, i + lineLength);
    lines.push(' '.repeat(indent) + line);
  }

  // 3. Nối bằng ký tự xuống dòng
  return lines.join('\n');
}

// Ví dụ sử dụng
const b64 = 'a'.repeat(200);
console.log(formatBase64(b64, 76, 0));
// Xuất ra: Base64 mỗi dòng 76 ký tự

// Hủy định dạng (dùng cho giải mã hoặc truyền)
function unformatBase64(input) {
  return input.replace(/\s/g, '');
}

console.log(unformatBase64(formatBase64(b64, 76, 0)).length); // 200

Python: Định dạng Base64 + gập dòng MIME

python

Python thực hiện gập dòng theo 76 ký tự (tiêu chuẩn MIME) và có thể chỉ định thụt lề.

import textwrap

def format_base64(b64_str: str, width: int = 76, indent: int = 0) -> str:
    """Định dạng chuỗi Base64 thành nhiều dòng"""
    # Loại bỏ tất cả khoảng trắng
    clean = ''.join(b64_str.split())
    if not clean:
        return ''

    # Sử dụng textwrap phân tách theo chiều rộng
    lines = textwrap.wrap(clean, width=width)

    # Thêm thụt lề
    if indent > 0:
        lines = [' ' * indent + line for line in lines]

    return '\n'.join(lines)


# Ví dụ sử dụng
b64 = 'aGVsbG8gd29ybGQ=' * 10
print(format_base64(b64, 76, 0))

# Tái tạo MIME Base64 (RFC 2045)
mime_format = format_base64(b64, 76)
print(f'Số dòng MIME Base64: {len(mime_format.splitlines())}')

# Khôi phục thành một dòng
single_line = b64.replace('\n', '').replace(' ', '')
print(f'Chiều dài một dòng: {len(single_line)}')

Dòng lệnh: Công cụ fold + gập dòng MIME Base64

bash

Công cụ fold có sẵn trên hệ thống Linux/macOS có thể nhanh chóng thực hiện định dạng Base64 trên dòng lệnh.

# 1. Nhập Base64 → gập dòng theo 76 ký tự (tiêu chuẩn MIME)
echo "aGVsbG8gd29ybGQ=" | base64 | base64 | fold -w 76

# 2. Định dạng tệp Base64 dài → xuất ra tệp mới
fold -w 76 encoded.txt > formatted.txt

# 3. Gập dòng theo 64 ký tự (hiển thị nhỏ gọn)
fold -w 64 encoded.txt > compact.txt

# 4. Đồng thời loại bỏ tất cả xuống dòng (hủy định dạng)
tr -d '\n' < formatted.txt > single-line.txt

# 5. Xác minh: Chiều dài Base64 + số dòng
wc -c encoded.txt | awk '{print "Số ký tự:", $1}'
wc -l formatted.txt | awk '{print "Số dòng:", $1}'

# 6. Kết hợp openssl thực hiện mã hóa base64 hoàn chỉnh + định dạng
echo "Xin chào" | openssl base64 -A | fold -w 76 > hello.b64.txt
cat hello.b64.txt

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

Định dạng có thay đổi nội dung thực tế của Base64 không?

Không. Định dạng chỉ chèn ký tự xuống dòng và khoảng trắng thụt lề ở cấp độ hiển thị, không thay đổi bản thân mã hóa. Loại bỏ tất cả ký tự trắng khỏi nội dung đã định dạng có thể khôi phục thành Base64 một dòng gốc. Tất cả bộ giải mã Base64 (atob gốc trình duyệt / Node.js Buffer / Python base64) đều tự động bỏ qua ký tự trắng, vì vậy kết quả định dạng có thể dùng trực tiếp để giải mã.

Định dạng Base64 và MIME Base64 có gì khác biệt?

MIME Base64 gập dòng nghiêm ngặt theo chiều rộng 76 ký tự của RFC 2045, là tiêu chuẩn truyền tệp đính kèm email. Định dạng của công cụ này linh hoạt hơn, cho phép tùy chỉnh chiều rộng 64/76/80/100 ký tự + thụt lề 0/2/4 khoảng trắng, phù hợp hơn các nhu cầu hiển thị khác nhau như tài liệu, ảnh chụp. Chọn chiều rộng 76 ký tự có thể tái tạo gập dòng MIME.

Phù hợp xem nhật ký và ghi vé không?

Rất phù hợp. Chuỗi Base64 dài trong hệ thống vé (Jira / Zendesk), công cụ chat (Slack / Teams) hoặc tài liệu Markdown dễ bị tràn gây cuộn ngang. Sau khi định dạng hiển thị nhiều dòng rõ ràng dễ đọc, có thể dán trực tiếp vào tệp đính kèm vé hoặc cửa sổ chat.

Sau khi định dạng có thể dùng trực tiếp để giải mã không?

Có thể. Tất cả bộ giải mã Base64 chính đều tự động bỏ qua xuống dòng và khoảng trắng. Nếu gặp sự cố (như OpenSSL phiên bản cũ), có thể nhấp nút「Khôi phục」trước để loại bỏ xuống dòng rồi giải mã.

Tại sao có nhiều chiều rộng ký tự 64 / 76 / 80 / 100?

64 ký tự phù hợp tài liệu nhỏ gọn (như thiết bị đầu cuối CLI, bảng Markdown); 76 ký tự là tiêu chuẩn email MIME; 80 ký tự là chiều rộng thiết bị đầu cuối truyền thống; 100 ký tự phù hợp trình soạn thảo màn hình rộng và tài liệu hiện đại. Mỗi chiều rộng có tình huống sử dụng tốt nhất tương ứng.

Thụt lề có tác dụng gì?

Thụt lề (0/2/4 khoảng trắng) giúp Base64 duy trì căn chỉnh trong khối code hoặc Markdown: 0 khoảng trắng phù hợp văn bản thuần, 2 khoảng trắng phù hợp phong cách code JS/Python, 4 khoảng trắng phù hợp khối code lồng Markdown.

Định dạng có làm tăng số ký tự Base64 không?

Sẽ tăng khoảng 1-3% (ký tự xuống dòng + khoảng trắng thụt lề), nhưng không ảnh hưởng kết quả giải mã. Nếu truyền nhạy cảm với kích thước (như tham số URL), khuyến nghị dùng chức năng「Khôi phục」trước để khôi phục thành một dòng.

Hỗ trợ UTF-8 / tiếng Việt không?

Công cụ này không xử lý trực tiếp tập ký tự — chỉ định dạng bản thân chuỗi Base64. Nếu Base64 chứa tiếng Việt (như Base64 được mã hóa sau khi mã hóa UTF-8), định dạng sẽ không ảnh hưởng tính đúng đắn mã hóa của nó.

Phù hợp định dạng tệp lớn không?

Hỗ trợ. Công cụ định dạng thời gian thực, trình duyệt xử lý chuỗi Base64 trong 1MB không áp lực. Vượt quá 10MB có thể gây giao diện bị treo, khuyến nghị định dạng theo khối.

Sau khi định dạng kích thước lớn hơn, có thể nén không?

Định dạng chỉ thêm xuống dòng và thụt lề, thân thiện với thuật toán nén. Có thể nén bằng gzip / Brotli, hoặc dùng công cụ Base64 Stats để xem mức tăng cụ thể.

Xử lý sự cố

Sau khi định dạng một số ký tự Base64 bị mất

Có thể Base64 nguồn chứa ký tự bất hợp pháp (như ký tự xuống dòng không xử lý đúng). Sử dụng công cụ Base64 Clean để làm sạch trước rồi định dạng.

Kết quả định dạng không nhất quán với byte gốc

Điều này là không thể — định dạng chỉ chèn ký tự trắng, không sửa đổi nội dung byte. Nếu phát hiện không nhất quán, nghĩa là Base64 nguồn đã được xử lý sai (như định dạng lặp lại gây chèn khoảng trắng lặp).

Sau khi định dạng chuỗi dài giao diện bị treo

Chuỗi Base64 vượt quá 10MB có thể gây trình duyệt bị treo. Khuyến nghị: ①Xử lý theo khối; ②Dùng base64-clean loại bỏ khoảng trắng thừa trước; ③Giảm chiều rộng (như 64 ký tự) giảm gánh nặng hiển thị mỗi dòng.

Thuật ngữ

Định dạng Base64
Phân tách chuỗi Base64 thành nhiều dòng theo chiều rộng chỉ định ở cấp độ hiển thị, chỉ ảnh hưởng trình bày trực quan, không thay đổi bản thân mã hóa.
MIME Base64
Biến thể Base64 gập dòng mỗi 76 ký tự theo quy định RFC 2045, chủ yếu dùng cho truyền tệp đính kèm email.
Chiều rộng ký tự (line length)
Số lượng ký tự Base64 hiển thị mỗi dòng. Giá trị phổ biến: 64 (nhỏ gọn), 76 (tiêu chuẩn MIME), 80 (in ấn tiêu chuẩn), 100 (màn hình rộng).
Thụt lề (indent)
Số khoảng trắng ở đầu mỗi dòng, giá trị phổ biến: 0 (không thụt lề), 2 (phong cách code), 4 (khối code Markdown).
Ký tự trắng (whitespace)
Khoảng trắng, Tab, ký tự xuống dòng v.v. có thể tồn tại trong chuỗi Base64. Định dạng sẽ loại bỏ các ký tự này trước, sau đó chèn lại theo chiều rộng chỉ định.
Hủy định dạng (unformat)
Khôi phục Base64 đã định dạng (nhiều dòng + thụt lề) thành dạng một dòng không khoảng trắng, dùng cho giải mã hoặc truyền.

Bảng so sánh 4 loại chiều rộng ký tự

Chiều rộng ký tự khác nhau phù hợp tình huống hiển thị khác nhau, có thể chọn theo môi trường mục tiêu.

Chiều rộng ký tựTình huống điển hìnhTiêu chuẩn tương ứngVí dụ
64 ký tựThiết bị đầu cuối CLI, bảng MarkdownHiển thị nhỏ gọnMàn hình nhỏ / mật độ cao
76 ký tựTruyền tệp đính kèm emailRFC 2045 MIMEEmail / SMTP
80 ký tựIn ấn thiết bị đầu cuối truyền thốngThiết bị đầu cuối Unix truyền thốngIn tài liệu
100 ký tựTrình soạn thảo hiện đại / màn hình rộngQuy phạm UI hiện đạiIDE / tài liệu

Bảng so sánh 3 phong cách thụt lề

Phong cách thụt lề khác nhau khớp quy phạm code khác nhau, chọn theo thói quen nhóm/dự án.

Thụt lềPhong cách codeVí dụ (Dòng 1 Base64)
0 khoảng trắngKhông thụt lề (văn bản thuần)QUJD...
2 khoảng trắngQuy phạm JS / Python QUJD...
4 khoảng trắngLồng Markdown / quy phạm Java QUJD...

Authoritative References