A unique string ID generator for Java.
JNanoID uses Java’s SecureRandom to generate cryptographically strong random IDs with a proper distribution of characters.
JNanoID generates compact IDs with just 21 characters. By using a larger alphabet than UUID, JNanoID can generate a greater number of unique IDs, when compared to UUID, with fewer characters (21 versus 36).
JNanoID uses URL-friendly characters (A-Za-z0-9_-
). Perfect for unique identifiers in web applications.
JNanoID is fully customizable. All default options may be overridden. Supply your own Random Number Generator, alphabet, or size.
JNanoID is thoroughly tested with JUnit.
The most recent release is JNanoId 2.0.0.
<dependency>
<groupId>com.aventrix.jnanoid</groupId>
<artifactId>jnanoid</artifactId>
<version>2.0.0</version>
</dependency>
compile 'com.aventrix.jnanoid:jnanoid:2.0.0'
JNanoId provides one easy-to-use utility class (NanoIdUtils
) with two methods to generate IDs.
The default method creates secure, url-friendly, unique ids. It uses a url-friendly alphabet (A-Za-z0-9_-
), a secure random number generator, and generates a unique ID with 21 characters.
String id = NanoIdUtils.randomNanoId(); // "ku-qLNv1wDmIS5_EcT3j7"
An additional method allows you to generate custom IDs by specifying your own random number generator, alphabet, or size.
// Use a faster, but non-secure, random generator
Random random = new Random();
// Use a custom alphabet containing only a, b, and c
char[] alphabet = {'a','b','c'};
// Make IDs 10 characters long
int size = 10;
String id = NanoIdUtils.randomNanoId(random, alphabet, 10); // "babbcaabcb"
Code copyright 2017 The JNanoID Authors, Aventrix LLC, and Andrey Sitnik. Code released under the MIT License.
Based on the original NanoId for JavaScript by Andrey Sitnik.
- C#
- Clojure and ClojureScript
- Crystal
- Dart
- Go
- Elixir
- Haskell
- JavaScript
- Nim
- PHP
- Python
- Ruby
- Rust
- Swift
Also, a CLI tool is available to generate IDs from the command line.