← Về trang chủ

Tạo QR hàng loạt — Paste danh sách hoặc upload CSV, tải ZIP

Nhập tối đa 200 URL/dòng (hoặc CSV với cột Name,URL) → công cụ tạo tất cả QR với cùng style (màu, logo, kiểu dot), preview lưới và download dưới dạng file ZIP. Lý tưởng cho event, sales team, marketing campaign cần nhiều QR cùng nhánh thương hiệu.

Up to 200 QRCSV importZIP downloadCùng style

Tùy chỉnh thiết kế

Logo trung tâm

Vì sao dùng công cụ này

200 QR trong 30 giây

Generate hàng loạt client-side với progress bar — không phải tạo từng cái một như tool khác. Tiết kiệm hàng giờ làm việc thủ công.

🎨
Đồng bộ thương hiệu

Tất cả QR cùng màu nét, màu nền, kiểu dot/corner và logo trung tâm. In ra menu/banner/danh thiếp đồng nhất visual.

📦
Download 1 ZIP

File ZIP chứa từng QR PNG + file _index.csv mapping tên→URL. Mở Excel kiểm tra hoặc import vào hệ thống in.

Cách sử dụng

  1. 1Paste danh sách URL — mỗi URL 1 dòng, hoặc format 'Name, URL' (vd: 'Bàn 1, https://menu.com/table/1') để đặt tên file theo Name.
  2. 2Hoặc bấm 'Upload CSV' để chọn file .csv/.txt — file phải ≤1MB, mỗi dòng có URL hoặc Name,URL.
  3. 3Điều chỉnh design (màu, logo, kích thước) ở panel bên phải — áp dụng cho TẤT CẢ QR.
  4. 4Bấm 'Tạo QR' → đợi progress 0→100% (khoảng 100-200ms/QR).
  5. 5Preview grid xuất hiện → bấm 'Tải ZIP' → file qr-batch-<timestamp>.zip download tự động.

Khi nào cần tạo QR hàng loạt?

Tạo QR thủ công từng cái khi cần 50-200 mã (mỗi bàn nhà hàng, mỗi sản phẩm, mỗi nhân viên sales, mỗi mã giảm giá khác nhau) là cực kỳ tốn thời gian — mỗi QR mất ~30 giây bao gồm điền URL, đổi style, download. Bulk generator rút thời gian này từ vài giờ xuống vài phút.

Use case phổ biến nhất: nhà hàng có 50 bàn, mỗi bàn 1 QR menu riêng → 50 dòng 'Bàn 1, https://menu.com/table/1' → 1 file ZIP với 50 PNG sẵn để in. Hoặc: 100 sản phẩm, mỗi sản phẩm QR dẫn về trang chi tiết riêng — sales lookup nhanh trên hộp sản phẩm.

Công cụ này chạy 100% client-side: file CSV không upload server, mỗi QR generate bằng qr-code-styling trong browser, ZIP đóng gói bằng jszip cũng trong browser. Phù hợp cho thông tin nhạy cảm như link đến danh sách khách hàng nội bộ.

Giới hạn 200 QR/batch là để giữ CPU browser khỏe — mỗi QR tốn ~100-200ms render canvas + encode PNG. Với 200 QR thời gian khoảng 30 giây. Nếu cần >200, chia làm nhiều batch.

  • Tối đa 200 QR cho 1 lần tạo
  • 2 input modes: paste danh sách hoặc upload CSV (.csv/.txt ≤1MB)
  • Format linh hoạt: 1 URL/dòng HOẶC 'Name, URL'
  • Auto-detect URL type (chỉ accept URL đầy đủ http/https)
  • Cùng style cho tất cả QR (color, logo, dot, corner)
  • Progress bar realtime + yield event loop tránh treo UI
  • ZIP output kèm file _index.csv mapping name→URL
  • Filename auto-derived từ Name hoặc hostname URL
  • 100% client-side — danh sách + QR không bao giờ rời browser

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

Menu nhà hàng theo bàn

50 bàn → 50 QR riêng dẫn về menu + đặt món bàn đó. Phục vụ nhận order qua URL có table_id.

Sản phẩm nhỏ lẻ

100 SKU mỗi loại 1 QR dẫn về trang sản phẩm với mã. Khách quét xem video, review, hướng dẫn.

Mã giảm giá cá nhân hóa

Sinh 200 mã unique cho campaign, mỗi mã 1 QR. Track conversion theo từng khách.

Sales rep portfolio

20 nhân viên × 1 QR vCard riêng (vCard QR phải làm thủ công, nhưng URL portfolio bulk được).

Event ticket QR

Mỗi vé 1 QR check-in unique. Import từ CSV danh sách khách + URL verify.

Inventory tracking

Kho hàng có 500 thùng → 500 QR mã hàng, scan để cập nhật vị trí trong WMS.

Kỹ thuật phía sau

Pipeline: (1) Parse text/CSV thành Entry[]{name, url}, (2) Loop từng entry → tạo QRCodeStyling instance → getRawData('png') → blob → dataURL, (3) Yield event loop mỗi 5 QRs để UI không freeze, (4) Khi xong → jszip.file(name+'.png', base64, {base64:true}) cho từng QR + thêm _index.csv → generateAsync với DEFLATE compression level 6.

Sanitize filename: replace ký tự không phải [a-zA-Z0-9-_.] thành underscore, max 80 chars. Tránh duplicate filename bằng cách append '-2', '-3' nếu trùng.

Memory: với 200 QR @ 320×320px PNG mỗi QR ~5-15KB → tổng ZIP ~1-3MB. Browser memory peak ~50MB trong lúc generate (canvas + dataURL). Không upload server nên không có giới hạn bandwidth.

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

Tại sao giới hạn 200 QR/batch?

Để giữ CPU browser khỏe + tránh ZIP quá to (>10MB). Nếu cần nhiều hơn, chia làm nhiều batch và download riêng. Hoặc dùng API (chưa public, liên hệ developer).

Format CSV chuẩn là gì?

Đơn giản nhất: mỗi dòng 1 URL. Nếu muốn đặt tên file riêng, dùng format 'Name, URL' (cách nhau bằng dấu phẩy). Cột Name sẽ thành tên file PNG. Vd: 'Bàn 1, https://menu.com/1' → file 'Ban_1.png'.

QR có nhúng logo được không?

Có. Upload logo ở panel Tùy chỉnh — logo sẽ áp dụng cho TẤT CẢ QR. Logo cùng kích thước (≤200KB) cho mọi QR.

Tải về định dạng gì khác PNG không?

Phase 1: chỉ PNG trong ZIP. SVG bulk + JPG bulk sẽ thêm sau. Cần SVG riêng từng QR thì dùng tool đơn lẻ /vi/tao-qr-url.

Mỗi QR có theo dõi scan_count được không?

Không — đây là QR tĩnh. Để có analytics, dùng /vi/qr-dong (QR Động). Tuy nhiên QR Động phải tạo từng cái, chưa hỗ trợ bulk.

File _index.csv trong ZIP để làm gì?

Mapping filename → URL gốc, hữu ích khi cần audit hoặc import vào hệ thống. Mở Excel/Numbers/Google Sheets.