Đang tải công cụ Tạo mã vạch Code 128…
Mục lục
Công cụ tạo mã vạch Code 128 ở trên mã hóa mọi ký tự ASCII (chữ không dấu, số, ký hiệu) thành mã vạch chuẩn ISO/IEC 15417, hiện kết quả ngay khi bạn gõ và cho tải PNG, SVG để in tem hoặc chèn vào tài liệu. Mọi xử lý diễn ra trong trình duyệt, không có gì được gửi lên máy chủ.
Code 128 là loại mã 1D được dùng nhiều nhất cho quản lý nội bộ: mã đơn hàng, mã kho, mã tài sản, thẻ nhân viên, vận đơn. Mã không cần đăng ký GS1, quét được bằng mọi máy quét 1D và hầu hết ứng dụng điện thoại.
Cách tạo
- Nhập nội dung vào ô “Nội dung mã”: chữ không dấu, số và ký hiệu như
-,/,.(tối đa 80 ký tự). Mã vạch hiện ngay bên phải kèm chuỗi bên dưới. - Chỉnh tùy chọn nếu cần: bật/tắt chữ dưới mã, chiều cao vạch (mm), độ dày vạch X (mm), màu vạch và màu nền. Bật “Hiển thị kích thước thật” để xem mã đúng 1:1 trên màn hình.
- Tải về: bấm Tải PNG (300 dpi, dùng cho in tem và Word/Excel) hoặc Tải SVG (vector, dùng cho thiết kế bao bì, in offset). Bấm “Sao chép mã” để dán chuỗi sang tool khác.
| Tùy chọn | Ý nghĩa | Mặc định |
|---|---|---|
| Hiện chữ dưới mã | In dòng chữ đọc được (human readable) dưới vạch để nhập tay khi máy quét lỗi | Bật |
| Chiều cao vạch | Chiều cao phần vạch, 5–60 mm. Tem kho nên ≥ 10 mm, thùng carton ≥ 25 mm | 15 mm |
| Độ dày vạch X | Bề rộng vạch mỏng nhất; quyết định độ rộng toàn mã và khả năng đọc của máy quét | 0,33 mm |
| Màu vạch / nền | Chỉ nên dùng vạch tối trên nền sáng (đen/trắng, xanh đậm/trắng); tránh đỏ vì máy quét laser đỏ không thấy vạch đỏ | Đen / trắng |
Chuỗi càng dài thì mã càng rộng. Với chuỗi chỉ gồm số, công cụ tự dùng subset C để nén hai chữ số vào một ô mã, giúp mã ngắn gần một nửa so với chuỗi chữ cùng độ dài.
Chuẩn & giới hạn của mã này
Code 128 mã hóa đủ 128 ký tự ASCII bằng ba bộ ký tự A, B, C và tự thêm số kiểm tra mod-103, theo chuẩn ISO/IEC 15417.
| Tiêu chí | Code 128 |
|---|---|
| Tập ký tự | 128 ký tự ASCII: A–Z, a–z, 0–9, dấu cách, ký hiệu, ký tự điều khiển (subset A) |
| Độ dài | Biến đổi; GS1 khuyến nghị ≤ 48 ký tự để máy quét cầm tay đọc ổn định |
| Số kiểm tra | Mod-103, tự tính khi mã hóa, không hiện trong chữ đọc được |
| Cấu trúc | Ký tự start (A/B/C) + dữ liệu + số kiểm tra + stop; mỗi ký tự 11 module, stop 13 module |
| X-dimension tối thiểu | 0,19 mm (in nhiệt 203 dpi nên dùng ≥ 0,25 mm) |
| Quiet zone | ≥ 10 X mỗi bên (ví dụ 3,3 mm khi X = 0,33 mm) |
| Chiều cao | Không quy định cứng; khuyến nghị ≥ 15 % chiều rộng mã hoặc ≥ 6,35 mm |
| Đăng ký GS1 | Không cần (trừ biến thể GS1-128 dùng Application Identifier) |
Subset C chỉ mã hóa cặp chữ số, nên chuỗi số có số chữ số lẻ phải dùng thêm một ký tự subset B ở cuối; công cụ tự xử lý việc chuyển subset để mã ngắn nhất. Ký tự tiếng Việt có dấu nằm ngoài bảng ASCII nên không mã hóa được: hãy bỏ dấu hoặc chuyển sang mã QR/DataMatrix nếu bắt buộc giữ dấu.
Chiều rộng mã tính bằng công thức: (11 × số ký tự mã hóa + 35) × X. Chuỗi “DH2026-000123” gồm 13 ký tự nhưng nhờ nén subset C chỉ tốn 10 ô mã, cho mã rộng khoảng 51,5 mm ở X = 0,33 mm.
Ví dụ
Ba ví dụ dưới đây được xuất trực tiếp từ công cụ bằng thư viện bwip-js, đúng tỷ lệ chuẩn, bạn có thể quét thử bằng điện thoại.
Mã đơn hàng DH2026-000123
Chuỗi trộn chữ và số là trường hợp phổ biến nhất của Code 128: tiền tố “DH2026-” dùng subset B, dãy “000123” được nén bằng subset C. Máy quét trả về đúng chuỗi “DH2026-000123”.
Chuỗi toàn số 1234567890 (subset C)
Dãy 10 chữ số được nén thành 5 cặp, mã chỉ rộng 90 module. Đây là lý do Code 128 thường được chọn thay Code 39 cho mã số dài trong kho: mã ngắn hơn khoảng 40 %.
Mã kho có ký hiệu KHO/A-01/02
Dấu gạch chéo, gạch ngang và dấu chấm đều thuộc ASCII nên Code 128 mã hóa được, khác với Code 39 chỉ nhận một số ký hiệu. Dùng dấu phân cách giúp nhân viên đọc tem bằng mắt khi máy quét hỏng.
Trường hợp đặc biệt / lỗi hay gặp
Phần lớn lỗi khi tạo Code 128 đến từ ký tự ngoài ASCII, mã quá dài hoặc in thiếu quiet zone.
- Có dấu tiếng Việt (“Cà phê”): công cụ báo “chỉ nhận ký tự ASCII”. Bỏ dấu (“Ca phe”) hoặc dùng mã QR nếu cần giữ nguyên chữ.
- Chuỗi quá 48 ký tự: mã rất rộng, máy quét cầm tay phải lùi xa và dễ đọc thiếu. Rút gọn thành mã ID rồi tra cứu trong phần mềm, hoặc chuyển sang DataMatrix.
- In bị mờ, vạch dính nhau: máy in nhiệt 203 dpi có 1 dot = 0,125 mm; chọn X là bội của 0,125 mm (0,25 hoặc 0,375 mm) để vạch không bị làm tròn. Dùng tool tính kích thước mã vạch để kiểm tra.
- Quét không ra: thường do thiếu vùng trắng hai bên (quiet zone ≥ 10 X) hoặc tem bị co khi in “vừa trang”. Luôn in ở tỷ lệ 100 %.
- Nhầm với GS1-128: nếu bạn cần đưa hạn sử dụng, số lô, GTIN vào mã theo chuẩn siêu thị/kho GS1, hãy dùng GS1-128 (Code 128 kèm ký tự FNC1 và Application Identifier).
- Chữ dưới mã khác dữ liệu: chữ đọc được chỉ là phần hiển thị; máy quét luôn trả về dữ liệu mã hóa. Công cụ này in đúng chuỗi bạn nhập nên hai phần luôn khớp.
Công cụ liên quan
Quy trình thường gặp là tạo mã đơn lẻ ở đây, kiểm tra quét thử, rồi chuyển sang tạo hàng loạt và in tem.
- Tạo mã vạch hàng loạt — dán cột mã từ Excel, tải ZIP PNG/SVG cho hàng nghìn mã Code 128
- Tạo dãy mã tự tăng — TS-0001 → TS-0100 không cần soạn danh sách
- Quét mã vạch online — kiểm tra mã vừa tạo bằng camera hoặc ảnh trước khi in
- Tạo mã GS1-128 — khi cần lô, hạn dùng, GTIN theo chuẩn GS1
- So sánh Code 39 và Code 128 — chọn đúng loại cho thẻ nhân viên, kho, thư viện
Thuật ngữ liên quan
Câu hỏi thường gặp
Mã Code 128 tạo ở đây có quét được không?
Có. Mã được mã hóa bằng thư viện bwip-js theo đúng ISO/IEC 15417, gồm ký tự start, dữ liệu, số kiểm tra mod-103 và ký tự stop. Mọi máy quét 1D, máy quét 2D và ứng dụng quét trên điện thoại đều đọc được, miễn là bạn in đúng tỷ lệ 100 %, đủ vùng trắng hai bên và vạch không bị nhòe.
Tạo mã Code 128 có cần đăng ký GS1 không?
Không. Code 128 là chuẩn mã hóa mở, ai cũng dùng được cho mục đích nội bộ như kho, tài sản, thẻ nhân viên, vận đơn. Bạn chỉ cần đăng ký mã doanh nghiệp GS1 khi bán hàng qua siêu thị hoặc sàn thương mại điện tử yêu cầu GTIN, khi đó dùng EAN-13 hoặc GS1-128 thay vì Code 128 thường.
In mã Code 128 bằng máy in văn phòng thường được không?
Được, với máy in laser hoặc phun mực 600 dpi trở lên trên giấy decal A4. Giữ độ dày vạch X từ 0,33 mm, chiều cao vạch từ 10 mm và in ở tỷ lệ 100 %, không chọn “vừa trang”. Máy in nhiệt chuyên dụng cho tem cuộn sẽ bền và nét hơn nếu bạn in số lượng lớn hằng ngày.
Code 128 khác mã QR ở điểm nào?
Code 128 là mã 1D chứa tối đa vài chục ký tự ASCII, đọc bằng máy quét laser thông thường và chiếm tem hẹp theo chiều cao. Mã QR là mã 2D chứa hàng nghìn ký tự kể cả tiếng Việt có dấu, cần máy quét 2D hoặc điện thoại. Nếu hệ thống kho của bạn dùng máy quét 1D, hãy giữ Code 128.
Vì sao chuỗi số tạo ra mã ngắn hơn chuỗi chữ?
Vì subset C của Code 128 mã hóa mỗi cặp chữ số vào một ô mã 11 module, trong khi subset A/B tốn một ô cho mỗi ký tự. Dãy 10 số chỉ cần 5 ô, còn 10 chữ cần 10 ô. Công cụ tự chọn subset tối ưu, bạn không phải cài đặt gì thêm.
Kích thước tối thiểu để in Code 128 là bao nhiêu?
Theo ISO/IEC 15417, độ dày vạch X tối thiểu là 0,19 mm, nhưng thực tế in nhiệt 203 dpi nên dùng từ 0,25 mm. Chiều cao vạch nên từ 6,35 mm cho tem nhỏ và 15 mm trở lên cho tem kho, kèm vùng trắng hai bên ít nhất 10 lần X để máy quét nhận biết mép mã.
Có thể tạo mã Code 128 hàng loạt từ Excel không?
Có. Dùng công cụ Tạo mã vạch hàng loạt: dán cột dữ liệu từ Excel hoặc Google Sheets, chọn loại Code 128, xem trước rồi tải ZIP chứa từng mã PNG hoặc SVG, tên tệp đúng bằng nội dung mã. Hàng nghìn mã được tạo trong vài giây ngay trên trình duyệt, không giới hạn lượt.
Căn cứ / Nguồn
- ISO/IEC 15417:2007 — Information technology, Automatic identification and data capture techniques, Code 128 bar code symbology specification — chuẩn mã hóa Code 128, số kiểm tra mod-103
- GS1 General Specifications, mục 5.4 Code 128 và 5.4.7 kích thước, quiet zone — X-dimension, chiều cao, giới hạn 48 ký tự
- TCVN 7626:2007 (ISO/IEC 15417:2007) — Công nghệ thông tin, Kỹ thuật phân định và thu nhận dữ liệu tự động, Yêu cầu kỹ thuật mã vạch Code 128 — bản tiếng Việt do Bộ KH&CN công bố
- bwip-js (Barcode Writer in Pure JavaScript), giấy phép MIT — thư viện dùng để mã hóa trong công cụ này
Cập nhật: 12/09/2026. Công cụ xử lý hoàn toàn trong trình duyệt, không lưu dữ liệu.