Trình tạo mã NanoID

Tạo mã NanoID trực tuyến: mặc định gồm 21 ký tự an toàn cho URL, độ ngẫu nhiên khoảng 126 bit, cho phép tùy chỉnh độ dài và bảng chữ cái.

Định dạng
ID đã tạo
Sẵn sàng. Tạo các giá trị NanoID ngay trong trình duyệt của bạn.

Cấu trúc của ID này

Định dạng
Mặc định gồm 21 ký tự an toàn cho URL từ các nhóm A-Z, a-z, 0-9, dấu gạch dưới và dấu gạch ngang.
Độ hỗn loạn (Entropy)
Khoảng 126 bit với bảng chữ cái 64 ký tự mặc định và độ dài 21 ký tự.
Thời gian
Không chứa dấu thời gian; các giá trị NanoID hoàn toàn ngẫu nhiên trừ khi bạn tự gán ý nghĩa vào bảng chữ cái tùy chỉnh.
Nguy cơ trùng lặp
Nguy cơ trùng lặp thay đổi tùy theo độ dài và bảng chữ cái được chọn. Cấu hình mặc định có độ an toàn thực tế tương đương với UUID v4.
Ví dụ
6TkZm3clz0pBnL54QQSFf

Các ID của bạn được tạo cục bộ bằng thuật toán ngẫu nhiên mạnh của trình duyệt. Không có gì được gửi đến BroBroGo.

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

Tại sao nên sử dụng NanoID?

NanoID ngắn hơn UUID, an toàn cho URL theo mặc định và vẫn giữ được độ ngẫu nhiên cực cao khi bạn sử dụng độ dài và bảng chữ cái mặc định.

Tôi có thể thay đổi bảng chữ cái không?

Có. Trang tạo NanoID chuyên dụng của chúng tôi cung cấp các tùy chọn điều chỉnh độ dài và bảng chữ cái. Việc thu hẹp bảng chữ cái hoặc rút ngắn độ dài sẽ làm tăng nguy cơ trùng lặp.

Nano ID: Công cụ tạo mã định danh ngắn gọn, tùy biến cao và an toàn

Trang này cho phép bạn tạo các mã định danh duy nhất theo định dạng Nano ID. Bạn chỉ định độ dài và bộ ký tự được phép, công cụ sẽ sinh ra một hoặc nhiều mã nhỏ gọn, an toàn cho URL và có khả năng chống va chạm (collision) rất cao. Không có máy chủ nào tham gia vào quá trình tạo mã – mọi thứ diễn ra hoàn toàn trong trình duyệt của bạn.

Điều gì làm trang này khác biệt so với các bộ sinh UUID hay ULID?

Không giống như UUID (36 ký tự cố định) hay ULID (26 ký tự), Nano ID có độ dài mặc định chỉ 21 ký tự – ngắn hơn đáng kể so với UUID nhưng vẫn cung cấp khả năng chống va chạm tương đương. Sự khác biệt chính là cả độ dàibảng chữ cái đều có thể điều chỉnh linh hoạt:

  • Độ dài có thể đặt từ 2 đến 36 ký tự (thanh trượt, mặc định 21).
  • Bảng chữ cái là một trường văn bản có thể chỉnh sửa; nó phải chứa ít nhất 2 ký tự khác nhau.
  • Thay đổi bất kỳ thiết lập nào (độ dài, bảng chữ cái, số lượng) sẽ lập tức tạo lại các mã ID.
  • Nếu bảng chữ cái bị giảm xuống chỉ còn một ký tự, kết quả sẽ bị xóa, số lượng ID hiển thị thành 0 và nút “Copy all” bị vô hiệu hóa.
  • Các mã ID được sinh ra chỉ sử dụng ký tự an toàn cho URL theo mặc định (a–z, A–Z, 0–9, cùng với _- – tổng cộng 64 ký tự).

Tại sao lại là 21 ký tự? Theo các phân tích về lý thuyết va chạm, với bảng chữ cái 64 ký tự, một mã 21 ký tự cho phép sinh khoảng 5 triệu ID mỗi giờ trong suốt 41 năm mà xác suất va chạm chỉ là 1%. Đối với UUID (128 bit, 36 ký tự dạng hex), con số đó là 1% sau 100 năm ở cùng tốc độ. Vì vậy, 21 ký tự của Nano ID là điểm cân bằng tuyệt vời giữa độ ngắn và độ tin cậy.

Cách thức hoạt động: Đầu vào, đầu ra và cơ chế ngẫu nhiên

Đầu vào

Tham số Kiểu Giá trị mặc định Phạm vi / Ràng buộc
Định dạng Menu thả xuống Nano ID Chỉ có Nano ID (trang này chuyên về một định dạng)
Số lượng (Count) Số nguyên 1 1–100
Độ dài (Length) Thanh trượt 21 2–36
Bảng chữ cái (Alphabet) Trường văn bản ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_- Phải có ít nhất 2 ký tự khác nhau

Đầu ra

  • Danh sách các mã ID – mỗi ID là một chuỗi ký tự duy nhất, không trùng lặp trong cùng một lần sinh.
  • Số lượng ID – hiển thị bên cạnh danh sách.
  • Trạng thái:
    • Ready. – khi trang sẵn sàng hoặc chưa có thay đổi.
    • Generated. – sau khi mỗi lần tạo thành công.
    • Copied all! – sau khi sao chép tất cả ID vào clipboard.
    • Alphabet needs at least 2 different characters. – khi bảng chữ cái không hợp lệ.

Cơ chế ngẫu nhiên

Tất cả các ID đều được tạo bằng crypto.getRandomValues() – một API của trình duyệt cung cấp số ngẫu nhiên mật mã học mạnh mẽ. Điều này có nghĩa là các ID không thể đoán trước ngay cả khi biết thuật toán sinh. Quan trọng hơn, không có dữ liệu nào được gửi đến máy chủ BroBroGo hay bất kỳ bên thứ ba nào; quá trình hoàn toàn cục bộ.

Quy tắc và trường hợp ngoại lệ cần nhớ

  • Bảng chữ cái phải có ít nhất 2 ký tự khác nhau. Nếu bạn nhập chỉ một ký tự (ví dụ: "a"), công cụ sẽ xóa kết quả hiện tại, đếm số lượng ID về 0 và vô hiệu hóa nút “Copy all”. Đây là điều kiện tiên quyết vì với một ký tự, mọi ID cùng độ dài đều giống hệt nhau.
  • Thay đổi bất kỳ tham số nào (độ dài, bảng chữ cái, số lượng) đều kích hoạt tạo lại ngay lập tức. Không cần nút “Generate” riêng.
  • Khi nhấp vào một ID riêng lẻ, ID đó sẽ được sao chép vào clipboard. Điều này hữu ích khi bạn chỉ cần một vài mã.
  • Số lượng ID tối đa mỗi lần là 100. Nếu bạn cần hơn, hãy chạy nhiều lần.
  • Độ dài tối thiểu là 2 ký tự. Độ dài 1 không được hỗ trợ vì nó không đảm bảo tính duy nhất thực tế.
  • Các ID luôn sử dụng bảng chữ cái URL‑safe theo mặc định. Bạn có thể thay đổi bảng chữ cái để bao gồm các ký tự khác (ví dụ: chỉ chữ số hoặc loại bỏ ký tự dễ nhầm lẫn như 0O, l1).

Ví dụ thực tế về tùy chỉnh bảng chữ cái

Giả sử bạn cần các mã chỉ gồm chữ số để sử dụng làm mã xác thực một lần (OTP) dài 6 chữ số. Nhập bảng chữ cái 0123456789, đặt độ dài = 6. Lúc này, số lượng không gian mã là 10^6 = 1.000.000 khả năng. Nhưng nếu bạn dùng bảng chữ cái đầy đủ 64 ký tự với độ dài 6, không gian mã là 64^6 ≈ 68,7 tỷ khả năng – rất khác biệt. Đây là lý do bạn có thể điều chỉnh cả hai tham số để đạt được mức độ bảo mật mong muốn.

Ai cần công cụ này và ứng dụng thực tế

Công cụ này dành cho các nhà phát triển, kiến trúc sư hệ thống và bất kỳ ai cần:

  • Định danh ngắn cho API web – thay vì UUID dài 36 ký tự, Nano ID 21 ký tự giảm đáng kể băng thông và dung lượng lưu trữ.
  • Mã QR – ID càng ngắn, mã QR càng dễ quét và chiếm ít không gian.
  • Khóa chính (primary key) trong cơ sở dữ liệu – có thể dùng làm khóa tự nhiên (natural key) hoặc khóa duy nhất (unique key) nếu bạn đảm bảo không va chạm trong ứng dụng.
  • Liên kết rút gọn – tạo mã duy nhất cho mỗi URL, tránh dự đoán được.
  • Token xác thực tạm thời – yêu cầu độ dài và bảng chữ cái phù hợp để đảm bảo độ không đoán trước.
  • Hệ thống có khối lượng lớn (high‑volume systems) – nơi mỗi byte lưu trữ và truyền tải đều có chi phí. Nano ID ngắn hơn UUID khoảng 42% (21 so với 36), tiết kiệm đáng kể cho hàng triệu bản ghi.

Đối với những người quan tâm đến quyền riêng tư, việc ID được tạo cục bộ mà không liên hệ với máy chủ có nghĩa là không có dấu vết nào về những ID bạn đã tạo. Bạn có thể tạo hàng ngàn mã mà không bị theo dõi.

Bảo mật và quyền riêng tư: Tạo client‑side, không gửi dữ liệu

Đây là khía cạnh quan trọng: tất cả quá trình sinh ID diễn ra hoàn toàn trong trình duyệt của bạn. Trang web không gửi bất kỳ thông tin nào về bảng chữ cái, độ dài, số lượng hay các ID đã tạo đến BroBroGo hay bất kỳ máy chủ nào. Ngay cả khi bạn sử dụng một bảng chữ cái mang tính nhạy cảm (ví dụ: chỉ bao gồm ký tự Latin không có số), không ai biết ngoài bạn.

Cơ chế crypto.getRandomValues() được hỗ trợ bởi hạt nhân mật mã của hệ điều hành, cung cấp entropy thực sự chứ không phải số giả ngẫu nhiên có thể đoán trước. Điều này đảm bảo các ID có tính không thể dự đoán cao, rất quan trọng cho token xác thực hoặc khóa bí mật.

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

1. Nano ID có gì khác so với UUID v4?
UUID v4 dài 36 ký tự (32 chữ số hex + 4 dấu gạch ngang). Nano ID mặc định 21 ký tự, ngắn hơn 42%. Cả hai đều dùng ngẫu nhiên mật mã, nhưng Nano ID cho phép bạn điều chỉnh độ dài và bảng chữ cái, trong khi UUID cố định định dạng.

2. Tôi có thể dùng Nano ID làm khóa chính trong cơ sở dữ liệu không?
Có, nhưng hãy đảm bảo bảng chữ cái và độ dài đủ lớn để tránh va chạm. Với độ dài 21 và bảng chữ cái 64 ký tự, không gian mã là 64^21 ≈ 1,4×10^38 – vượt xa số lượng bản ghi thực tế. Tuy nhiên, nếu bạn cần ID ngắn hơn (ví dụ 10 ký tự), nên thêm chỉ mục duy nhất để xử lý va chạm hiếm.

3. Tại sao bảng chữ cái phải có ít nhất 2 ký tự khác nhau?
Với 1 ký tự, mọi ID cùng độ dài đều giống hệt nhau (ví dụ: độ dài 5, bảng "x" → luôn là "xxxxx"). Điều đó vô dụng và gây hiểu lầm. Công cụ chặn trường hợp này để tránh nhầm lẫn.

4. Làm sao để tạo nhiều hơn 100 ID cùng lúc?
Bạn có thể chạy nhiều lần hoặc sao chép danh sách hiện tại và kết hợp. Giới hạn 100 là để tránh làm chậm giao diện và đảm bảo trải nghiệm mượt mà.

5. Có đảm bảo không trùng lặp trong cùng một lần sinh không?
Có. Công cụ đảm bảo tất cả ID trong cùng một lần tạo là duy nhất (không trùng nhau). Tuy nhiên, nếu bạn chạy nhiều lần, có thể có ID trùng giữa các lần do ngẫu nhiên, nhưng xác suất rất thấp nếu bạn dùng độ dài và bảng chữ cái phù hợp.

6. Tôi có thể dùng bảng chữ cái có ký tự Unicode không?
Về mặt kỹ thuật, bạn có thể nhập bất kỳ ký tự nào. Tuy nhiên, nếu bạn dùng ký tự không phải ASCII (như tiếng Việt có dấu), các ID sẽ không còn “URL‑safe” nữa và có thể gây lỗi khi dùng trong URL hoặc hệ thống ký tự đơn giản. Khuyến nghị nên giới hạn trong tập ASCII không khoảng trắng.