Tan Phat Media

Nanoid Generator - Tạo ID Ngắn, An Toàn, URL-Safe Online

Tạo ID ngẫu nhiên bằng Web Crypto API ngay trong trình duyệt, không cài thư viện, không gửi dữ liệu đi đâu

Tùy chọn
21 ký tự

Mặc định 21 ký tự, giống độ dài mặc định của nanoid gốc.

64 ký tự khả dụng: ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_-

Tối đa 1000 ID mỗi lượt tạo.

Ước tính độ an toàn (chỉ mang tính minh họa)

Không gian ID: khoảng 2^126.0 giá trị có thể. Theo xấp xỉ birthday, cần tạo khoảng 2^60.2 ID mới đạt xác suất trùng nhau 1%.

Kết quả
P7EVaEyo3pL4rqYgMm1Y8
Vì sao dùng crypto.getRandomValues thay vì Math.random

Math.random dùng bộ sinh số giả ngẫu nhiên không được thiết kế cho mục đích bảo mật, chuỗi số nó tạo ra có thể dự đoán được nếu biết trạng thái nội bộ hoặc một số giá trị đã sinh trước đó, tùy cách cài đặt của từng trình duyệt. crypto.getRandomValues thuộc Web Crypto API, lấy dữ liệu từ bộ sinh số ngẫu nhiên mật mã học của hệ điều hành, phù hợp cho các giá trị cần tính không đoán trước được như ID định danh, token hay khóa phiên.

Công cụ này còn dùng phép lọc bỏ (rejection sampling) thay vì chia dư trực tiếp: lấy một byte ngẫu nhiên (0 đến 255), nếu byte đó rơi vào phần dư lẻ khi chia cho kích thước bộ ký tự thì bỏ qua và lấy byte khác, chỉ giữ lại các byte nằm trong khoảng là bội số lớn nhất của kích thước bộ ký tự không vượt quá 256. Nhờ vậy mọi ký tự trong bộ đều có xác suất xuất hiện bằng nhau tuyệt đối, không thiên lệch nhẹ về phía các ký tự đứng đầu bảng như khi dùng phép chia dư ngây thơ.

Hợp tác ngay với Tấn Phát Digital

Chúng tôi không chỉ thiết kế website, mà còn giúp doanh nghiệp xây dựng thương hiệu số mạnh mẽ. Cung cấp dịch vụ thiết kế website trọn gói từ thiết kế đến tối ưu SEO. Hãy liên hệ ngay với Tấn Phát Digital để cùng tạo nên những giải pháp công nghệ đột phá, hiệu quả và bền vững cho doanh nghiệp của bạn tại Hồ Chí Minh.

Tạo ID ngắn, an toàn, URL-safe bằng Web Crypto API ngay trong trình duyệt

Công cụ sinh ID ngẫu nhiên theo tinh thần thư viện nanoid nhưng viết lại từ đầu bằng crypto.getRandomValues, không cần cài thêm gói npm nào. Chọn độ dài, chọn bộ ký tự phù hợp với nhu cầu (URL, tên biến, mã đơn hàng dễ đọc), tạo hàng loạt tới một nghìn ID cùng lúc rồi copy hoặc tải về dạng tệp văn bản.

Tính năng nổi bật

  • Sinh ID hoàn toàn bằng crypto.getRandomValues của Web Crypto API, không dùng Math.random
  • Dùng phép lọc bỏ (rejection sampling) để loại bỏ thiên lệch modulo, mọi ký tự có xác suất xuất hiện bằng nhau tuyệt đối
  • Độ dài tùy chỉnh qua thanh trượt, mặc định 21 ký tự giống đúng độ dài mặc định của nanoid gốc
  • Năm bộ ký tự dựng sẵn: bộ đầy đủ giống nanoid, chỉ chữ và số, chỉ chữ thường và số, chỉ số, và bộ đã loại ký tự dễ nhầm lẫn
  • Tạo hàng loạt tới 1.000 ID cùng lúc trong một lượt bấm
  • Copy từng ID riêng lẻ, copy toàn bộ danh sách cách nhau bằng dấu xuống dòng, hoặc tải về tệp .txt
  • Hiển thị ước tính bậc độ lớn về không gian ID và ngưỡng xác suất trùng lặp theo công thức xấp xỉ birthday
  • Toàn bộ phép sinh chạy trong trình duyệt, không có ID nào rời khỏi máy của bạn

Vì sao không chỉ đơn giản gọi Math.random().toString(36)

Một cách phổ biến để tạo ID nhanh trong lúc code là gọi Math.random().toString(36).slice(2), nhưng cách này có ba vấn đề. Thứ nhất, Math.random không được thiết kế cho mục đích cần tính không đoán trước được về mặt mật mã học, một số cài đặt engine JavaScript cũ có thể để lộ trạng thái nội bộ khiến chuỗi sinh ra dự đoán được. Thứ hai, chuyển sang cơ số 36 chỉ cho ra 36 ký tự khả dụng (chữ thường và số), độ dài chuỗi kết quả không cố định và không kiểm soát được chính xác số ký tự. Thứ ba, cách làm này không có cơ chế nào đảm bảo phân bố đều giữa các ký tự. Công cụ này giải quyết cả ba vấn đề bằng cách dùng crypto.getRandomValues lấy byte ngẫu nhiên từ bộ sinh số của hệ điều hành, áp dụng phép lọc bỏ để mọi ký tự trong bộ ký tự đã chọn có xác suất xuất hiện bằng nhau, và cho phép chọn chính xác độ dài mong muốn.

Lợi ích khi sử dụng

  • Không phải cài thêm gói nanoid hay bất kỳ thư viện sinh ID nào vào dự án
  • Dùng nguồn ngẫu nhiên phù hợp cho mục đích định danh, khác hẳn Math.random thông thường
  • Kiểm soát chính xác độ dài và bộ ký tự theo đúng ràng buộc của hệ thống đích
  • Sinh được số lượng lớn ID cùng lúc để nạp sẵn vào cơ sở dữ liệu hoặc tệp cấu hình
  • Không có dữ liệu nào gửi lên máy chủ, phù hợp cả khi ID đó sẽ dùng cho hệ thống nội bộ nhạy cảm

Cách tạo ID với công cụ này

  1. 1Kéo thanh trượt độ dài ID, mặc định 21 ký tự đã đủ an toàn cho hầu hết trường hợp dùng làm khóa định danh trong ứng dụng.
  2. 2Chọn bộ ký tự phù hợp với nơi bạn sẽ dùng ID: bộ mặc định cho URL và tên tệp, bộ chỉ chữ và số nếu hệ thống không chấp nhận dấu gạch dưới hay gạch ngang, bộ chỉ số cho mã OTP hoặc mã xác nhận đơn giản, bộ loại ký tự dễ nhầm lẫn khi ID sẽ được người dùng gõ tay hoặc đọc qua điện thoại.
  3. 3Nhập số lượng ID cần tạo nếu muốn sinh hàng loạt, tối đa 1.000 ID mỗi lượt.
  4. 4Bấm Tạo ID mới để sinh danh sách theo đúng cấu hình đã chọn.
  5. 5Copy từng ID bằng nút bên cạnh, copy toàn bộ danh sách bằng nút Copy tất cả, hoặc tải về tệp văn bản bằng nút Tải .txt để lưu trữ hoặc chia sẻ.

Nanoid là gì và vì sao công cụ này mô phỏng theo nó

Nanoid là một thư viện JavaScript nhỏ gọn, rất phổ biến để sinh ID ngẫu nhiên duy nhất, thường được dùng thay thế cho UUID trong các trường hợp cần chuỗi ngắn hơn nhưng vẫn đủ an toàn để làm khóa định danh. Điểm đặc trưng của nanoid là độ dài mặc định 21 ký tự lấy từ bộ 64 ký tự an toàn cho URL gồm chữ hoa, chữ thường, số, dấu gạch dưới và dấu gạch ngang, cùng với việc dùng crypto.getRandomValues làm nguồn ngẫu nhiên thay vì Math.random. Công cụ trên trang này áp dụng đúng những nguyên tắc thiết kế đó, viết lại hoàn toàn bằng JavaScript thuần chạy trong trình duyệt, để bạn có thể tạo nhanh các ID theo phong cách nanoid mà không cần thêm gói phụ thuộc vào dự án, ví dụ khi chỉ cần vài ID để test hoặc điền sẵn dữ liệu mẫu.

Phép lọc bỏ hoạt động cụ thể như thế nào

Khi cần chọn ngẫu nhiên một ký tự trong bộ có k ký tự, cách đơn giản nhất là lấy một byte ngẫu nhiên (giá trị từ 0 đến 255) rồi lấy phần dư khi chia cho k. Vấn đề là nếu 256 không chia hết cho k, một số phần dư sẽ xuất hiện thường xuyên hơn phần dư khác một chút. Ví dụ với bộ 64 ký tự, 256 chia hết đúng cho 64 nên không có vấn đề gì, nhưng với bộ 62 ký tự (chữ và số), 256 chia cho 62 dư 8, nghĩa là 8 ký tự đầu tiên trong bộ có xác suất xuất hiện cao hơn các ký tự còn lại một phần rất nhỏ. Phép lọc bỏ giải quyết việc này bằng cách chỉ chấp nhận các byte có giá trị nhỏ hơn bội số lớn nhất của k không vượt quá 256 (với k=62 thì ngưỡng là 62 nhân 4 bằng 248), byte nào rơi vào phần dư 248 đến 255 sẽ bị bỏ qua và lấy byte tiếp theo. Cách này đảm bảo mọi ký tự có xác suất xuất hiện bằng nhau tuyệt đối, đánh đổi bằng việc thỉnh thoảng phải lấy thêm một byte dự phòng, mức đánh đổi không đáng kể về hiệu năng.

Không gian ID lớn đến mức nào với cấu hình mặc định

Với cấu hình mặc định 21 ký tự lấy từ bộ 64 ký tự, tổng số ID khác nhau có thể sinh ra là 64 lũy thừa 21, một con số có 126 chữ số nhị phân, tương đương khoảng 8,5 nhân 10 mũ 37 giá trị. Áp dụng công thức xấp xỉ nghịch lý ngày sinh (birthday approximation), xác suất tồn tại ít nhất một cặp trùng nhau trong n ID được sinh ra xấp xỉ bằng n bình phương chia cho hai lần tổng số ID có thể có. Giải ngược lại để tìm n ứng với xác suất trùng 1%, kết quả ra khoảng 1,3 nhân 10 mũ 18 ID, tức khoảng một tỷ tỷ ba trăm triệu tỷ ID cần được sinh ra trước khi có 1% khả năng xảy ra một cặp trùng nhau. Đây là phép tính minh họa bậc độ lớn dựa trên công thức xấp xỉ chuẩn, không phải cam kết tuyệt đối cho mọi tình huống sử dụng, nhưng đủ cho thấy vì sao 21 ký tự với bộ 64 ký tự được xem là đủ an toàn cho phần lớn ứng dụng thực tế, kể cả những hệ thống sinh hàng triệu ID mỗi ngày trong nhiều năm liền.

Vì sao thu hẹp bộ ký tự hoặc rút ngắn độ dài lại tăng rủi ro trùng lặp

Không gian ID được tính bằng kích thước bộ ký tự lũy thừa độ dài, nên cả hai yếu tố đều ảnh hưởng theo cấp số nhân. Chuyển từ bộ 64 ký tự sang bộ chỉ có 10 chữ số làm không gian ID thu hẹp rất nhanh: cùng 21 ký tự nhưng bộ 10 chữ số chỉ cho 10 lũy thừa 21 giá trị, ít hơn nhiều bậc độ lớn so với 64 lũy thừa 21. Tương tự, giữ nguyên bộ ký tự nhưng giảm độ dài từ 21 xuống 8 ký tự cũng làm không gian ID co lại đáng kể vì số mũ giảm mạnh. Điều này không có nghĩa các bộ ký tự hẹp hơn hay độ dài ngắn hơn là sai, chúng vẫn phù hợp cho các trường hợp không cần chống trùng lặp ở quy mô cực lớn, ví dụ mã giảm giá dùng nội bộ trong vài nghìn lượt hay mã xác nhận có hạn dùng ngắn. Nguyên tắc chung là: quy mô sử dụng càng lớn hoặc thời gian tồn tại của ID càng dài, nên ưu tiên bộ ký tự rộng và độ dài đủ lớn.

Khi nào nên chọn bộ ký tự loại bỏ chữ dễ nhầm lẫn

Một số cặp ký tự rất dễ đọc nhầm khi hiển thị bằng một số font chữ hoặc khi đọc qua điện thoại: số 0 với chữ O hoa, số 1 với chữ l thường và chữ I hoa, chữ o thường với số 0. Trong các trường hợp ID sẽ được con người gõ tay lại, ví dụ mã kích hoạt sản phẩm in trên hộp, mã giảm giá đọc qua tổng đài, hoặc mã tra cứu đơn hàng ghi trên hóa đơn giấy, việc dùng bộ ký tự đã loại bỏ các cặp dễ nhầm này giúp giảm đáng kể tỷ lệ người dùng gõ sai và phải liên hệ hỗ trợ. Đánh đổi là bộ ký tự thu hẹp hơn một chút so với bộ đầy đủ, nên nếu chọn bộ này, nên cân nhắc giữ độ dài mặc định 21 ký tự hoặc dài hơn thay vì rút ngắn thêm, để bù lại phần không gian ID đã mất khi bỏ bớt ký tự.

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

Nanoid Generator này có phải cài gói nanoid từ npm không?

Không cần. Công cụ này viết lại logic sinh ID từ đầu bằng crypto.getRandomValues có sẵn trong mọi trình duyệt hiện đại, không phụ thuộc vào gói nanoid hay bất kỳ thư viện ngoài nào.

Vì sao nên dùng crypto.getRandomValues thay vì Math.random để tạo ID?

Math.random dùng bộ sinh số giả ngẫu nhiên không đảm bảo tính không đoán trước được về mặt mật mã học. crypto.getRandomValues lấy dữ liệu từ bộ sinh số ngẫu nhiên an toàn của hệ điều hành, phù hợp hơn cho các giá trị cần đảm bảo tính duy nhất và khó đoán như ID định danh hay token.

ID tạo ra có đảm bảo không bao giờ trùng nhau không?

Không có gì đảm bảo tuyệt đối 0% khả năng trùng, đây là bản chất của mọi phương pháp sinh ID ngẫu nhiên. Điều công cụ đảm bảo là không gian ID đủ lớn để xác suất trùng lặp trong thực tế sử dụng là cực kỳ nhỏ, theo tính toán xấp xỉ hiển thị ngay trên trang cho từng cấu hình cụ thể.

Nên chọn độ dài bao nhiêu ký tự là hợp lý?

21 ký tự với bộ mặc định 64 ký tự phù hợp cho phần lớn trường hợp, kể cả hệ thống sinh hàng triệu ID mỗi ngày trong nhiều năm. Nếu chỉ cần mã ngắn dùng nội bộ với số lượng nhỏ, 8 đến 12 ký tự thường đã đủ. Nếu cần độ an toàn cực cao cho token bảo mật, có thể tăng lên 32 ký tự trở lên.

Bộ ký tự chỉ có số dùng để làm gì?

Phù hợp cho các trường hợp cần mã toàn số như mã OTP, mã xác nhận đơn hàng hiển thị trên máy POS, hoặc các hệ thống cũ chỉ chấp nhận trường dữ liệu kiểu số. Lưu ý không gian ID của bộ này nhỏ hơn nhiều so với bộ chữ và số, nên cân nhắc tăng độ dài nếu cần chống trùng lặp tốt hơn.

ID tạo ra có dùng làm mật khẩu được không?

Không nên dùng trực tiếp làm mật khẩu cho tài khoản người dùng, vì mục đích thiết kế khác nhau: ID định danh cần duy nhất và khó đoán, còn mật khẩu cần thêm các yếu tố khác như dễ nhớ có kiểm soát hoặc được lưu trữ qua cơ chế băm chuyên dụng. Tuy vậy, ID sinh bằng công cụ này hoàn toàn phù hợp làm token phiên đăng nhập, khóa API hay mã bí mật dùng một lần.

Tạo 1.000 ID cùng lúc có làm chậm trình duyệt không?

Không đáng kể. Việc sinh ID chỉ là các phép toán số học đơn giản trên một lượng byte ngẫu nhiên nhỏ, ngay cả 1.000 ID dài 64 ký tự cũng xử lý xong gần như tức thời trên phần cứng thông thường.

Vì sao con số ước tính xác suất trùng lặp trên trang lại thay đổi khi tôi đổi bộ ký tự?

Vì không gian ID được tính bằng kích thước bộ ký tự lũy thừa độ dài, đổi bộ ký tự tức là đổi cơ số của phép lũy thừa đó. Bộ ký tự càng nhỏ, không gian ID càng thu hẹp, ngưỡng số lượng ID cần tạo để đạt xác suất trùng 1% cũng giảm theo.

Công cụ này có lưu lại các ID đã tạo không?

Không. Mọi ID chỉ tồn tại trong bộ nhớ của trình duyệt trong phiên làm việc hiện tại, không được gửi lên máy chủ và không được lưu trữ ở đâu khác. Khi bạn tải lại trang, danh sách cũ sẽ mất, nên hãy copy hoặc tải về tệp .txt nếu cần giữ lại.

Nanoid khác UUID ở điểm nào?

UUID theo chuẩn thường có độ dài cố định 36 ký tự bao gồm cả dấu gạch ngang và tuân theo định dạng phiên bản cụ thể được chuẩn hóa rộng rãi. ID kiểu nanoid ngắn hơn, không theo khuôn dạng cố định, cho phép tùy chỉnh độ dài và bộ ký tự theo nhu cầu, đổi lại không phải một chuẩn quốc tế chính thức như UUID.

Có thể dùng ID này làm tên tệp hoặc đường dẫn URL không?

Được, đó chính là mục đích thiết kế của bộ ký tự mặc định. Bộ ký tự này gồm chữ, số, gạch dưới và gạch ngang, tất cả đều an toàn để đặt trực tiếp vào đường dẫn URL hoặc tên tệp mà không cần mã hóa thêm.

Vì sao bộ ký tự bỏ ký tự dễ nhầm lẫn lại có ít hơn 62 ký tự dù chỉ bỏ vài ký tự?

Vì công cụ bỏ cả hai dạng hoa và thường của các ký tự dễ đọc nhầm: số 0, chữ O hoa; số 1, chữ l thường, chữ I hoa; và chữ o thường dễ nhầm với số 0. Tổng cộng loại bỏ nhiều hơn một vài ký tự đơn lẻ vì phải tính cả biến thể hoa thường của từng trường hợp.

Từ khóa liên quan

  • tạo id ngẫu nhiên online
  • nanoid generator tiếng việt
  • sinh id ngắn không trùng
  • crypto getrandomvalues tạo id
  • id url-safe là gì
  • tạo mã ngẫu nhiên hàng loạt
  • công cụ thay thế nanoid npm
  • sinh chuỗi ngẫu nhiên bảo mật
  • unique id generator online
  • tạo id không dùng math random
  • rejection sampling là gì
  • birthday paradox xác suất trùng id
  • tạo mã đơn hàng ngẫu nhiên
  • tạo id loại bỏ ký tự dễ nhầm lẫn
  • so sánh nanoid và uuid
  • tạo token ngẫu nhiên online
  • sinh id url safe không cần cài đặt
  • tạo id ngẫu nhiên xuất file txt
  • công cụ developer tạo id miễn phí

Công cụ Developer Tools liên quan

.env Generator

Tạo file .env và .env.example cho dự án.

.gitignore Generator

Tạo .gitignore cho Node.js, Python, Java.

API Mock Generator

Tạo mock JSON data cho API testing.

API Response Formatter

Format và phân tích API response.

API Tester

Test REST API: GET, POST, PUT, DELETE.

Postman Alternative - API Testing Tool Online với Collections, Environment & File Upload

Postman Alternative miễn phí - Test APIs với Collections, Multiple Environments, Pre-request Scripts, Collection Runner, File Upload (form-data), Tests/Assertions, Code Generation (cURL, JS, Python, Node.js). Browser-based, không cần cài đặt. Save requests, export/import collections, auto-save history. Hỗ trợ Bearer Token, Basic Auth, API Key. Hoàn hảo cho API development và testing.

Swagger API Tester - Test API với OpenAPI/Swagger Spec & Authentication Online

Swagger API Tester miễn phí - Import OpenAPI/Swagger specification và test API endpoints với đầy đủ authentication (Bearer Token/JWT, Basic Auth, API Key). Hỗ trợ OpenAPI 3.0, Swagger 2.0, auto-parse endpoints, parameters, request body. Giao diện như Swagger UI với color-coded methods, grouped endpoints, real-time testing. Hoàn hảo cho API development, testing, debugging secured APIs.

Base Converter

Chuyển đổi Binary, Hex, Base32.

Base64 Encoder

Mã hóa/giải mã Base64.

Binary Converter

Chuyển đổi Decimal, Binary, Hex.

Box Shadow Generator

Tạo CSS box-shadow trực quan.

Chmod Calculator

Tính quyền file Linux.

Dịch vụ của Tấn Phát Digital

Đang xây sản phẩm và cần thêm người làm phần nặng?

Gói giải pháp doanh nghiệp

Nền tảng custom cho ngân hàng, y tế và sàn B2B, chuẩn ISO 27001, GDPR, PCI-DSS, SLA 99.99%.

Từ 50.000.000đXem chi tiết →

Dịch vụ phát triển Blockchain & Web3

Smart contract, dApp và NFT marketplace đa chuỗi, audit bảo mật đầy đủ trước khi lên mainnet.

Từ 50.000.000đXem chi tiết →

Dịch vụ thiết kế website tại Hồ Chí Minh

Website doanh nghiệp, bán hàng và đặt lịch, chuẩn SEO ngay từ cấu trúc, tốc độ tải dưới 3 giây.

Từ 5.000.000đXem chi tiết →

Dịch vụ thiết kế landing page

Trang đích riêng cho từng chiến dịch quảng cáo, tỷ lệ chuyển đổi 3–8%, bàn giao trong 5–21 ngày.

Từ 3.000.000đXem chi tiết →

Tư vấn và báo giá miễn phí trong 24 giờ. Xem toàn bộ dịch vụ

Zalo
Facebook
Tấn Phát Digital
Zalo
Facebook