Tạo mã QR luôn quét được: Mức sửa lỗi, định dạng dữ liệu và nguyên tắc khi in
Hướng dẫn thực tế về mã QR: cấu trúc, phiên bản và dung lượng, các mức sửa lỗi L/M/Q/H, định dạng Wi-Fi và vCard, cùng các nguyên tắc thiết kế để mã quét ổn định trên màn hình lẫn khi in.
Mã QR có mặt ở khắp nơi: thực đơn nhà hàng, máy thanh toán, vé sự kiện, tấm dán Wi-Fi, bao bì sản phẩm. Tạo một mã QR chỉ mất một giây, nhưng tạo một mã quét được ổn định trên mọi điện thoại, trong điều kiện thiếu sáng hay khi in lên tờ rơi lại là chuyện khác. Bài viết này giải thích cách mã QR hoạt động bên trong và biến những kiến thức đó thành các nguyên tắc thực tế.
Đôi nét lịch sử
Mã QR ("Quick Response" - phản hồi nhanh) được Denso Wave, một công ty thuộc tập đoàn Toyota, phát minh năm 1994 để theo dõi linh kiện ô tô nhanh hơn mã vạch truyền thống. Sau đó nó trở thành tiêu chuẩn quốc tế (ISO/IEC 18004) và phổ biến bùng nổ khi camera điện thoại có thể đọc trực tiếp mà không cần cài ứng dụng riêng.
Cấu tạo của mã QR
Mã QR là một lưới các ô vuông đen trắng gọi là module. Một số module có nhiệm vụ cố định:
- Mẫu định vị (finder pattern): ba ô vuông lớn ở các góc, giúp máy quét tìm ra mã và xác định hướng xoay.
- Mẫu căn chỉnh (alignment pattern): các ô vuông nhỏ hơn (từ phiên bản 2 trở lên), giúp bù méo khi mã bị chụp nghiêng hoặc in trên bề mặt cong.
- Mẫu thời gian (timing pattern): các đường chấm xen kẽ giữa các mẫu định vị, cho máy quét biết kích thước một module.
- Thông tin định dạng và phiên bản: vùng nhỏ lưu mức sửa lỗi, mẫu mặt nạ và (với mã lớn) số phiên bản.
- Vùng trống (quiet zone): khoảng lề trống quanh mã. Tiêu chuẩn yêu cầu 4 module ở mỗi cạnh.
Phần còn lại chứa dữ liệu của bạn cùng các từ mã sửa lỗi.
Phiên bản và dung lượng
Mã QR có 40 phiên bản. Phiên bản 1 có kích thước 21 × 21 module, mỗi phiên bản sau thêm 4 module mỗi cạnh, đến phiên bản 40 là 177 × 177. Dữ liệu càng nhiều thì phiên bản càng cao, và với cùng kích thước in, mỗi module càng nhỏ.
Dung lượng tối đa (phiên bản 40, mức sửa lỗi thấp nhất):
| Chế độ | Số ký tự tối đa |
|---|---|
| Số (0-9) | 7.089 |
| Chữ và số (0-9, A-Z, dấu cách, $ % * + - . / :) | 4.296 |
| Byte (văn bản UTF-8, URL) | 2.953 |
| Kanji | 1.817 |
Thực tế bạn nên dùng ít hơn rất nhiều. Một URL ngắn tạo ra mã phiên bản 2-4, quét gần như tức thì; một URL dài kèm tham số theo dõi có thể đẩy lên phiên bản 8 trở lên, khó đọc hơn nhiều khi quét từ xa.
Sửa lỗi: L, M, Q và H
Mã QR dùng thuật toán sửa lỗi Reed-Solomon, cùng họ với thuật toán dùng trên đĩa CD và trong liên lạc không gian sâu. Một phần của mã là dữ liệu dư thừa, cho phép máy quét khôi phục phần bị thiếu khi mã bị bẩn, trầy xước hoặc bị che một phần.
| Mức | Khả năng khôi phục (xấp xỉ) | Thường dùng cho |
|---|---|---|
| L | ~7% | Màn hình sạch, cần chứa nhiều dữ liệu |
| M | ~15% | Mặc định tốt cho đa số trường hợp |
| Q | ~25% | Ấn phẩm in, dùng ngoài trời |
| H | ~30% | Mã có logo, môi trường khắc nghiệt |
Mức cao hơn không miễn phí: dư thừa nhiều hơn nghĩa là nhiều module hơn, nên cùng nội dung sẽ cần phiên bản lớn hơn. M là mức cân bằng tốt cho đa số trường hợp. Hãy chọn H nếu chèn logo vào giữa, vì logo thực chất đã phá hỏng một phần dữ liệu và cơ chế sửa lỗi phải bù lại. Công cụ Tạo mã QR tự chuyển sang mức H khi bạn tải logo lên.
Mặt nạ (masking)
Bạn có thể để ý hai mã có nội dung gần giống nhau lại trông hoàn toàn khác nhau. Trước khi hoàn tất, bộ mã hóa thử 8 mẫu mặt nạ đảo màu module theo quy luật, rồi chọn mẫu tránh được các mảng màu lớn và các hình giống mẫu định vị. Nhờ vậy camera đọc mã dễ hơn.
Có thể đưa gì vào mã QR
Mã QR chỉ lưu văn bản. Điện thoại quyết định hành động dựa trên định dạng của văn bản đó:
| Nội dung | Ví dụ dữ liệu |
|---|---|
| Trang web | https://nicetool.dev |
| Gọi điện | tel:+84901234567 |
mailto:[email protected]?subject=Hi |
|
| Tin nhắn SMS | SMSTO:+84901234567:Xin chao |
| Wi-Fi | WIFI:T:WPA;S:MyNetwork;P:secret123;; |
| Danh thiếp | vCard (BEGIN:VCARD ... END:VCARD) |
Mã QR Wi-Fi
Định dạng Wi-Fi rất tiện cho văn phòng, quán cà phê hay phòng khách:
WIFI:T:WPA;S:Cafe Guest;P:coffee2026;;
Tlà kiểu bảo mật:WPA(dùng chung cho WPA2/WPA3),WEPhoặcnopass.Slà tên mạng (SSID),Plà mật khẩu.- Thêm
H:truenếu mạng bị ẩn. - Các ký tự đặc biệt
\ ; , : "trong tên mạng hoặc mật khẩu phải được escape bằng dấu gạch chéo ngược.
Cả iOS và Android đều có thể kết nối mạng ngay từ ứng dụng camera, không cần gõ mật khẩu.
Mã QR danh thiếp (vCard)
Mã QR vCard cho phép người khác lưu tên, số điện thoại, email, công ty và website của bạn chỉ với một lần quét. Hãy giữ nội dung ngắn gọn: mỗi trường thêm vào đều làm tăng phiên bản và độ dày đặc của mã.
Nguyên tắc thiết kế để mã luôn quét được
- Giữ độ tương phản cao. Module tối trên nền sáng hoạt động ở mọi nơi. Mã đảo màu (sáng trên nền tối) hoặc màu thương hiệu tương phản thấp sẽ thất bại trên một số máy quét.
- Chừa vùng trống. Để ít nhất 4 module trống quanh mã. Đặt mã sát hình ảnh hay chữ là một trong những lý do phổ biến nhất khiến quét không được.
- Chọn kích thước theo khoảng cách. Quy tắc ước lượng: chiều rộng mã khoảng 1/10 khoảng cách quét - 2-3 cm trên danh thiếp, 10 cm trên poster đọc từ 1 mét, lớn hơn nhiều với biển quảng cáo.
- Rút gọn nội dung. Dùng URL ngắn, bỏ tham số không cần thiết. Ít ký tự hơn nghĩa là module to hơn và quét nhanh hơn.
- Chọn đúng định dạng tệp. Dùng SVG khi in vì phóng to không bị mờ. Dùng PNG cho website và tài liệu.
- Logo: nhỏ, ở giữa, kèm mức H. Giữ logo dưới khoảng 20% diện tích mã và không bao giờ che các mẫu định vị.
- Thử trước khi in. Quét bằng ít nhất hai điện thoại khác nhau (iOS và Android), trong điều kiện sáng bình thường và thiếu sáng, ở khoảng cách thực tế.
Mã QR tĩnh và mã QR động
- Mã QR tĩnh chứa trực tiếp dữ liệu cuối cùng, ví dụ URL của bạn. Nó dùng được mãi mãi, không cần dịch vụ nào và không thể thay đổi sau khi in.
- Mã QR động chứa một link chuyển hướng ngắn do dịch vụ bên thứ ba quản lý. Bạn có thể đổi đích đến và xem thống kê lượt quét, nhưng mã sẽ ngừng hoạt động nếu dịch vụ đóng cửa hoặc bạn ngừng trả phí.
Với đa số cá nhân và doanh nghiệp nhỏ, mã tĩnh trỏ tới một URL do bạn kiểm soát là lựa chọn an toàn nhất: khi nội dung thay đổi, bạn chỉ cần cập nhật chuyển hướng trên website của mình chứ không phải in lại mã.
Bảo mật: cẩn thận với "quishing"
Vì con người không thể đọc mã QR bằng mắt, kẻ gian dán mã giả đè lên mã thật ở cột đỗ xe, poster hay quầy thanh toán để đưa nạn nhân tới trang lừa đảo ("QR phishing" hay quishing).
- Khi là người dùng: kiểm tra URL hiện ra trước khi mở, và cẩn thận với mã yêu cầu đăng nhập hoặc thanh toán.
- Khi là người phát hành: ưu tiên dùng tên miền của chính bạn thay vì dịch vụ rút gọn link lạ, và kiểm tra định kỳ các mã in ở nơi công cộng.
Kết luận
Một mã QR đáng tin cậy chỉ cần vài nguyên tắc: nội dung ngắn, mức sửa lỗi phù hợp, độ tương phản cao, vùng trống đủ rộng và thử nghiệm thực tế. Nắm được những điều này, bạn có thể tạo mã hoạt động trên mọi điện thoại, từ tấm danh thiếp nhỏ đến poster lớn.
Bạn có thể thử mọi thứ trong bài với công cụ Tạo mã QR miễn phí: URL, Wi-Fi, vCard, email, số điện thoại và SMS, chọn mức sửa lỗi, tùy chỉnh màu, chèn logo và xuất PNG hoặc SVG. Mọi thứ được tạo ngay trong trình duyệt của bạn.
Tác giả
Nguyễn Thành Nam
Full-Stack Engineer · Backend & Platform
Kỹ sư full-stack với hơn 9 năm kinh nghiệm xây dựng API và nền tảng lưu lượng lớn bằng Go, NestJS, PHP (Laravel, Phalcon) và Node.js. Chuyên về thiết kế API GraphQL, hệ thống thời gian thực và tối ưu hiệu năng; xây dựng NICETOOL.dev cho cộng đồng lập trình viên.