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

Mã QR chứa được bao nhiêu ký tự và dữ liệu

“Tôi muốn nhét cả đoạn giới thiệu công ty vào một mã QR, có được không?” Đây là câu tôi nhận nhiều nhất từ những người mới bắt đầu làm mã.

Được, về mặt kỹ thuật. Một mã QR chứa tối đa 7.089 chữ số, hoặc 4.296 ký tự chữ và số, hoặc 2.953 byte nếu dùng chế độ byte — mà tiếng Việt có dấu thì thuộc chế độ byte và mỗi chữ cái có dấu ngốn tới ba byte. Nhưng đó là con số ở phiên bản 40, lưới 177×177 ô, mức sửa lỗi thấp nhất. Một mã như vậy in dưới khổ A5 thì camera điện thoại gần như bó tay.

Con số bạn nên nhớ khác hẳn: dưới 300 ký tự nếu muốn quét dễ, dưới 100 nếu in nhỏ hơn 3 cm, và với đường link thì càng ngắn càng tốt. Phần dưới giải thích vì sao hai con số này lệch nhau xa đến thế, kèm bảng tra dung lượng theo phiên bản để bạn tự đối chiếu. Muốn kiểm chứng ngay thì hãy tạo một mã QR văn bản và gõ thêm chữ dần dần — lưới ô dày lên trước mắt.

Dung lượng tối đa theo bốn chế độ mã hóa

Mã QR nén dữ liệu theo bốn chế độ, và cùng một mã chứa được nhiều chữ số hơn hẳn so với chữ có dấu. Lý do: mỗi chế độ dùng số bit khác nhau cho một ký tự. Các con số dưới đây lấy từ đặc tả của Denso Wave, đơn vị phát minh mã QR năm 1994, và trùng với chuẩn ISO/IEC 18004 bản 2015.

Chế độ Ký tự dùng được Bit mỗi ký tự Tối đa ở phiên bản 40, mức L
Số 0–9 khoảng 3,33 7.089 chữ số
Chữ và số A–Z in hoa, 0–9, chín ký tự đặc biệt 5,5 4.296 ký tự
Byte Mọi ký tự, gồm chữ thường và tiếng Việt có dấu 8 mỗi byte 2.953 byte
Kanji Chữ Nhật 13 1.817 ký tự

Chỗ này người Việt hay hụt hẫng: chữ có dấu tốn gấp ba lần chữ không dấu. Chuỗi “Công ty TNHH Thương mại Dịch vụ” dài 30 ký tự nhưng chiếm khoảng 40 byte vì mỗi chữ ơ, ư, ị đều là ba byte trong bảng mã UTF-8. Viết không dấu cho phần địa chỉ và tên là mẹo tiết kiệm dung lượng đơn giản nhất.

Bảng tra dung lượng theo phiên bản

Phiên bản quyết định kích thước lưới, và lưới quyết định chứa được bao nhiêu. Phiên bản 1 là 21×21 ô, mỗi phiên bản kế tiếp cộng 4 ô mỗi cạnh, tới phiên bản 40 là 177×177 ô. Bảng dưới lấy vài mốc hay gặp, ở mức sửa lỗi M — mức mặc định của phần lớn công cụ tạo mã.

Phiên bản Lưới ô Chữ số Chữ và số Byte
1 21×21 34 20 14
3 29×29 93 58 40
5 37×37 182 106 78
10 57×57 513 311 213
20 97×97 1.600 970 666
40 177×177 5.596 3.391 2.331

Nhìn cột cuối sẽ thấy điều đáng chú ý hơn cả con số: từ phiên bản 10 trở lên, lưới đã 57 ô mỗi cạnh. In mã đó ở 3 cm thì mỗi ô chỉ còn hơn nửa milimét — đúng ngưỡng camera điện thoại bắt đầu đọc chập chờn.

Vì sao mã dài lại khó quét

Nội dung càng dài, lưới càng nhiều ô, mỗi ô càng nhỏ ở cùng một kích thước in. Camera điện thoại cần mỗi ô đạt khoảng 0,5 mm trở lên để phân biệt được sáng với tối; xuống dưới ngưỡng đó thì các ô nhòe vào nhau và số bit đọc sai vượt quá khả năng sửa lỗi.

Nhân thử cho dễ hình dung. Mã phiên bản 3 in 3 cm cho mỗi ô khoảng 1 mm — thoải mái. Cùng khổ 3 cm mà là phiên bản 15 với 77 ô mỗi cạnh thì mỗi ô còn 0,39 mm, và bạn sẽ thấy khách phải zoom camera, lùi tới lùi lui.

Mức sửa lỗi cũng ăn vào dung lượng. Chuyển từ mức L lên mức H, phần dành cho nội dung giảm khoảng một nửa, nên cùng một chuỗi ký tự sẽ đẩy mã lên phiên bản cao hơn và dày ô hơn, xem bài mức sửa lỗi L, M, Q, H.

Còn một yếu tố nữa ít được nhắc: khả năng lấy nét của camera. Điện thoại đời mới lấy nét ở khoảng cách 8–10 cm, nên khách phải đưa máy khá gần mới đọc được mã dày, và ở khoảng cách đó thì tay run làm ảnh nhòe. Máy cũ lấy nét kém hơn nữa. Đây là lý do một mã dày có thể quét được trên bàn làm việc nhưng thất bại khi khách đứng ở quầy.

Kinh nghiệm của tôi: nếu mã phải quét trong lúc người ta vội — ở quầy thu ngân, ở cổng sự kiện — hãy giữ nội dung ngắn nhất có thể, kể cả khi phải hy sinh vài thông tin. Ba giây chờ quét lại làm khách khó chịu hơn nhiều so với việc thiếu một dòng địa chỉ.

Ngưỡng thực tế cho từng loại nội dung

Con số tôi dùng khi tư vấn, đã tính cả chuyện in và chuyện quét bằng máy cũ.

  • Đường link: giữ dưới 80 ký tự. Link Google Drive hay link có tham số theo dõi thường dài 100–200 ký tự, nên rút gọn trước khi tạo mã.
  • Văn bản thuần tiếng Việt: dưới 200 ký tự nếu in từ 4 cm trở lên, dưới 100 nếu in nhỏ hơn.
  • Danh thiếp vCard: chỉ giữ tên, một số điện thoại, một email, tên công ty. Nhét thêm địa chỉ đầy đủ và website là mã dày lên thấy rõ.
  • Mã WiFi: gần như không phải lo, vì tên mạng cộng mật khẩu hiếm khi quá 60 ký tự.
  • Mã VietQR: chuỗi EMVCo thường 100–150 ký tự, nằm trong vùng an toàn kể cả khi thêm số tiền và nội dung chuyển khoản.

Ngưỡng an toàn gói trong một câu

Dưới 300 ký tự thì quét dễ, dưới 100 ký tự thì in nhỏ vẫn được, còn trên 500 ký tự là bạn đang tự làm khó khách của mình. Ba mốc đó đủ dùng cho gần như mọi việc hằng ngày.

Ba cách rút ngắn nội dung mà không mất thông tin

Cách hiệu quả nhất là chuyển nội dung dài lên một trang web và chỉ mã hóa đường link. Mã chứa 40 ký tự thay vì 2.000, lưới thưa hẳn, và bạn còn sửa được nội dung sau này mà không phải in lại mã — miễn là đường link giữ nguyên.

Cách thứ hai là bỏ dấu tiếng Việt ở những chỗ không ảnh hưởng: tên riêng viết hoa không dấu, địa chỉ viết tắt. Đây cũng là cách chuẩn VietQR làm với tên chủ tài khoản, không phải ngẫu nhiên.

Cách thứ ba ít ai để ý: bỏ phần https://www. khi nhập link nếu công cụ tạo mã cho phép, và ưu tiên tên miền ngắn. Mỗi ký tự cắt được đều đẩy mã về phiên bản thấp hơn một chút, và tới một ngưỡng nào đó là tụt hẳn một phiên bản.

Vậy nên làm gì

Đừng lấy 7.089 làm mục tiêu. Câu chuyện của bài này đi từ dung lượng lý thuyết theo bốn chế độ mã hóa, qua bảng phiên bản cho thấy lưới dày lên nhanh thế nào, tới ngưỡng thật mà camera điện thoại còn đọc thoải mái — và ngưỡng thật thấp hơn con số quảng cáo cả chục lần.

Quan điểm của tôi sau nhiều lần dựng mã cho quán và văn phòng: dữ liệu càng ít, mã càng thưa, khách quét càng nhanh, và bạn càng in nhỏ được. Nếu đang định nhét cả đoạn văn vào mã, hãy thử gõ đoạn đó vào công cụ tạo mã QR văn bản rồi in thử ở đúng khổ định dùng và quét bằng chiếc điện thoại cũ nhất trong nhà. Bạn sẽ thấy ngưỡng của mình nằm ở đâu nhanh hơn mọi bảng tra. Còn nếu nội dung thật sự dài, hãy đẩy nó lên một trang và tạo mã QR cho đường link thay vì cho toàn bộ đoạn văn.

Vài câu hỏi thêm

Mã QR chứa được ảnh hoặc file PDF không

Không. Mã QR chỉ chứa văn bản, nên thứ nằm trong mã là đường link tới ảnh hoặc file, còn bản thân file vẫn ở trên mạng. Đây là lý do mã “chứa” menu quán thực chất chỉ chứa link Google Drive.

Tiếng Việt có dấu tốn bao nhiêu dung lượng trong mã QR

Mỗi chữ cái có dấu chiếm ba byte trong bảng mã UTF-8, so với một byte cho chữ không dấu. Một câu 100 ký tự tiếng Việt đầy đủ dấu có thể chiếm 200–250 byte, gần gấp đôi so với cùng câu viết không dấu.

Vì sao mã QR của tôi dày ô hơn mã của người khác dù nội dung ngắn hơn

Thường do mức sửa lỗi. Nếu bạn chọn mức H để chèn logo còn họ để mức L, mã của bạn sẽ dày hơn hẳn dù nội dung ngắn hơn. Một khả năng khác là công cụ của bạn thêm sẵn tiền tố như https:// hoặc tham số theo dõi vào link.

Mã QR có giới hạn số dòng khi nhập nhiều đoạn văn không

Không có giới hạn theo dòng, chỉ có giới hạn theo tổng số byte. Nhưng ký tự xuống dòng cũng tính là một byte mỗi lần, nên một danh sách 30 dòng ngắn tốn thêm 30 byte chỉ cho việc xuống dòng.

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.