Bỏ qua, tới nội dung chính

Mã QR là gì? Cấu tạo, nguyên lý hoạt động và lịch sử ra đời

Mã QR là ma trận điểm ảnh hai chiều do Denso Wave phát minh năm 1994, lưu dữ liệu theo cả chiều ngang và dọc nên chứa được nhiều hơn mã vạch.

Mã QR là một ma trận ô vuông đen trắng lưu dữ liệu theo hai chiều, đọc được bằng camera từ bất kỳ hướng nào, và vẫn giải mã đúng ngay cả khi một phần hình bị hỏng. Tên đầy đủ là Quick Response Code — mã phản hồi nhanh.

Hai đặc điểm đó tách nó khỏi mã vạch. Mã vạch chỉ lưu dữ liệu theo chiều ngang nên chứa được vài chục ký tự và phải quét đúng hướng; mã QR lưu theo cả hàng lẫn cột nên nhét được tới vài nghìn ký tự trong một ô vuông nhỏ, và có sẵn cơ chế sửa lỗi để bù phần bị che.

Hiểu cấu tạo không phải chuyện học thuật. Nó giải thích vì sao bạn chèn được logo vào giữa mà mã vẫn chạy, vì sao vùng trắng quanh mã không được cắt, và vì sao mã chứa nhiều chữ lại khó quét hơn. Muốn thấy tận mắt, hãy tạo thử một mã QR văn bản rồi gõ thêm vài dòng — lưới ô sẽ dày lên ngay trước mắt bạn.

Đọc được từng phần trong một mã QR

Một mã QR gồm sáu thành phần, mỗi thành phần một nhiệm vụ. Nhìn quen rồi bạn sẽ chỉ ra được chúng trên bất kỳ tấm mã nào.

Ba ô vuông lớn ở ba góc là mẫu định vị. Chúng cho camera biết đây là một mã QR, mã nằm ở đâu trong khung hình, và đang xoay theo hướng nào — đó là lý do bạn quét ngược cũng ra. Ô vuông nhỏ hơn gần góc dưới phải là mẫu căn chỉnh, giúp máy bù méo khi mã dán trên bề mặt cong hoặc chụp chéo.

Hai dãy ô đen trắng xen kẽ nối giữa các mẫu định vị là mẫu định thì, đóng vai trò thước đo để máy xác định kích thước mỗi ô. Dải quanh mẫu định vị góc trên trái chứa thông tin định dạng: mức sửa lỗi đang dùng và kiểu mặt nạ áp lên dữ liệu. Phần còn lại — chiếm gần hết diện tích — là vùng dữ liệu cộng khối sửa lỗi. Bao ngoài tất cả là vùng trắng rộng bằng bốn ô, gọi là quiet zone, và đây là phần hay bị cắt mất nhất khi thiết kế.

Cắt mất vùng trắng là mã chết.

Camera đọc mã bằng cách nào

Camera không “nhìn thấy” nội dung; nó dò ba mẫu định vị trước, rồi mới đọc phần còn lại. Quy trình gồm bốn chặng, chạy trong vài phần mười giây.

Đầu tiên máy quét ảnh tìm ba khối vuông có tỉ lệ sáng tối 1:1:3:1:1 — tỉ lệ đặc trưng của mẫu định vị, hiếm khi xuất hiện ngẫu nhiên trong ảnh thường. Có ba điểm đó là xác định được khung, hướng và độ nghiêng. Tiếp theo máy dựng lưới ảo lên mã, đọc từng ô thành bit 0 hoặc 1 theo ngưỡng sáng tối. Sau đó gỡ mặt nạ để lấy lại chuỗi bit gốc. Cuối cùng, thuật toán Reed–Solomon kiểm tra và sửa các bit đọc sai trước khi ghép thành ký tự.

Chặng thứ hai là chặng dễ hỏng nhất trong thực tế. Ánh sáng yếu, mặt giấy bóng hắt đèn, hoặc mã in nhạt đều khiến máy không phân định nổi ô nào sáng ô nào tối — và khi đó số bit sai vượt quá khả năng sửa lỗi.

Sửa lỗi Reed–Solomon và bốn mức L, M, Q, H

Mã QR chèn sẵn dữ liệu dư để khôi phục phần bị mất, ở bốn mức: L khôi phục được khoảng 7% diện tích, M khoảng 15%, Q khoảng 25% và H khoảng 30%. Thuật toán Reed–Solomon vốn dùng trong đĩa CD và truyền tin vệ tinh, nên nó quen với việc dữ liệu tới nơi không nguyên vẹn.

Đây chính là cơ sở kỹ thuật cho chuyện chèn logo. Khi chèn logo vào giữa mã QR, bạn đang cố tình xóa một phần dữ liệu và trông chờ khối sửa lỗi bù lại — nên phải chọn mức Q hoặc H, và giữ logo dưới khoảng một phần năm diện tích.

Đổi lại, mức sửa lỗi càng cao thì phần dành cho nội dung càng ít, mã càng dày ô ở cùng một lượng dữ liệu. Chọn mức nào là một đánh đổi thật, không có đáp án chung — chi tiết ở bài mức sửa lỗi L, M, Q, H và cách chọn.

Bốn chế độ mã hóa và dung lượng theo phiên bản

Mã QR có 40 phiên bản, đánh số theo kích thước lưới: phiên bản 1 là 21×21 ô, mỗi phiên bản kế tiếp cộng thêm 4 ô mỗi cạnh, tới phiên bản 40 là 177×177 ô. Dữ liệu được nén theo bốn chế độ khác nhau tùy loại ký tự, nên cùng một mã chứa được nhiều chữ số hơn hẳn so với chữ cái có dấu.

Chế độ mã hóa Loại ký tự Tối đa ở phiên bản 40, mức L
Số 0–9 7.089 chữ số
Chữ và số A–Z in hoa, chữ số, chín ký tự đặc biệt 4.296 ký tự
Byte Mọi ký tự, gồm tiếng Việt có dấu 2.953 byte
Kanji Chữ Nhật 1.817 ký tự

Con số 7.089 hay được trích lại như thể đó là dung lượng thật của mã QR. Trên thực tế nó vô dụng: một mã 177×177 ô in dưới 10 cm thì mỗi ô chỉ còn nửa milimét, và camera điện thoại phổ thông chịu thua. Ngưỡng dùng được hằng ngày thấp hơn nhiều, xem bài mã QR chứa được bao nhiêu ký tự.

Denso Wave, nhà máy Toyota và năm 1994

Mã QR ra đời năm 1994 tại Denso Wave, một công ty con của tập đoàn Denso thuộc hệ sinh thái Toyota, do nhóm kỹ sư dẫn đầu bởi Masahiro Hara phát triển. Bài toán ban đầu rất cụ thể: công nhân trong nhà máy phải quét hàng chục mã vạch cho mỗi thùng linh kiện, chậm và dễ sai.

Nhóm của Hara cần một loại mã chứa được nhiều dữ liệu hơn, đọc nhanh hơn, và quan trọng nhất là đọc được ở mọi góc — vì trong xưởng chẳng ai canh cho thùng hàng nằm đúng chiều. Ba mẫu định vị ở ba góc chính là lời giải cho yêu cầu đó.

Denso Wave giữ bằng sáng chế nhưng công bố đặc tả và không thu phí sử dụng. Quyết định đó là lý do mã QR có mặt khắp nơi hôm nay, trong khi nhiều định dạng mã hai chiều khác cùng thời chỉ nằm trong tài liệu kỹ thuật. Chuẩn quốc tế tương ứng là ISO/IEC 18004, bản hiện hành ban hành năm 2015.

Mã QR ở Việt Nam

Ba ứng dụng lớn nhất ở Việt Nam hiện nay là thanh toán, giấy tờ tùy thân và hóa đơn. Mã VietQR theo chuẩn Napas 247 đóng gói mã ngân hàng, số tài khoản và tên chủ tài khoản theo định dạng EMVCo — đó là lý do một mã dùng chung được cho mọi app ngân hàng. Napas cho biết trong 10 tháng đầu năm 2025, giao dịch qua VietQR tăng hơn 52% về số lượng so với cùng kỳ 2024.

Mã trên căn cước công dân gắn chip chứa các thông tin cơ bản đã in trên thẻ, phục vụ việc nhập liệu nhanh khi làm thủ tục. Mã trên hóa đơn điện tử dẫn tới trang tra cứu để đối chiếu hóa đơn có hợp lệ hay không. Cả ba đều là mã tĩnh: dữ liệu nằm trong hình, không đi qua máy chủ trung gian nào.

Những việc mã QR không làm được

Mã QR không lưu trữ file, không tự cập nhật, và không biết ai đã quét nó. Nó chỉ là một cách viết văn bản dưới dạng hình. Bạn không “để ảnh vào mã QR” được — thứ nằm trong mã là đường link tới ảnh, còn ảnh vẫn ở trên mạng.

Mã tĩnh cũng không đếm lượt quét và không sửa được sau khi in; muốn hai thứ đó phải dùng dịch vụ mã động có máy chủ trung gian, kèm phí duy trì và ngày hết hạn. Khác biệt giữa hai loại nằm ở bài mã QR tĩnh và mã QR động, và tôi nói thẳng ở đây: site này chỉ làm mã tĩnh, không cung cấp thống kê lượt quét.

Điều tôi muốn bạn giữ lại

Mã QR đi từ xưởng linh kiện Toyota tới tấm bảng thanh toán ở quán trà đá. Với tốc độ tăng trưởng Napas công bố cho năm 2025, tôi không thấy dấu hiệu nào cho thấy nó sẽ nhường chỗ cho công nghệ khác ở khâu người tiêu dùng trong vài năm tới — NFC vẫn đắt hơn và kén thiết bị hơn.

Ba điều đáng nhớ từ bài này: ba ô vuông ở góc quyết định mã có được nhận ra hay không, cơ chế sửa lỗi là thứ cho phép chèn logo và chịu xước, còn dung lượng lý thuyết thì đừng bận tâm vì ngưỡng thực tế thấp hơn nhiều. Cách hiểu nhanh nhất vẫn là tự làm: hãy gõ vài dòng chữ và xem mã QR hiện ra ngay, thêm bớt nội dung rồi quan sát lưới ô dày lên hay thưa đi. Mười phút nghịch như vậy bằng đọc cả bài này.

Giải đáp thêm

Hai chữ QR viết tắt của gì

Quick Response, nghĩa là phản hồi nhanh. Cái tên phản ánh mục tiêu ban đầu của Denso Wave: đọc được nhanh hơn mã vạch trong dây chuyền sản xuất.

Mã QR chứa được tối đa bao nhiêu ký tự

Về lý thuyết là 7.089 chữ số hoặc 2.953 byte ở phiên bản 40. Trên thực tế, mã có nội dung dài quá vài trăm ký tự đã dày tới mức camera điện thoại quét chậm và hay lỗi khi in nhỏ. Với tiếng Việt có dấu, mỗi ký tự chiếm tới ba byte nên ngưỡng còn thấp hơn nữa.

Vì sao quét mã QR ngược chiều vẫn ra kết quả

Nhờ ba mẫu định vị ở ba góc. Máy tìm ba khối vuông đó trước, từ vị trí tương đối của chúng suy ra mã đang xoay bao nhiêu độ, rồi mới đọc dữ liệu theo đúng hướng đã tính.

Mã QR có phải mã vạch không

Cùng họ nhưng khác thế hệ. Mã vạch truyền thống là mã một chiều, lưu dữ liệu theo độ rộng các vạch dọc; mã QR là mã hai chiều, lưu theo cả hàng và cột nên dung lượng lớn hơn nhiều lần và có thêm khả năng sửa lỗi.

Mã QR in nhỏ cỡ nào thì vẫn quét được

Khoảng 2 cm mỗi cạnh là ngưỡng an toàn với camera điện thoại, và còn tùy nội dung dài hay ngắn. Quy tắc thực hành là cạnh mã bằng một phần mười khoảng cách quét, chi tiết nằm ở bài kích thước in mã QR theo khoảng cách.

Bài viết liên quan

Mã QR tạo ở đây không hết hạn

Toàn bộ mã trên taomaqrcode.com là mã QR tĩnh: nội dung nằm ngay trong hình, không đi qua máy chủ trung gian nên dùng được mãi và không giới hạn lượt quét.

Đọc thêm mã QR tĩnh và mã QR động khác nhau thế nàomã QR có hết hạn không.