Package Exports
- short-unique-id
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (short-unique-id) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
Short Unique ID (UUID) Generating Library
Generate random or sequential UUID of any length.
This project is open to updates by its users, I ensure that PRs are relevant to the community. In other words, if you find a bug or want a new feature, please help us by becoming one of the contributors ✌️ ! See the contributing section.
Like this module? ❤
Please consider:
- Buying me a coffee ☕
- Supporting me on Patreon 🏆
- Starring this repo on Github 🌟
📣 v4 Notice
BREAKING CHANGES
This project has been completely refactored from v3 to be less "Deno centric" and more good 'ol Typescript.
We tried avoiding breaking changes, and generally succeded.
With that said, for Node.js require use-cases:
- The
distjs files are now generated as UMD, named asShortUniqueId, which means that...
// ...if you get the error "TypeError: ShortUniqueId is not a constructor" then this
const { default: ShortUniqueId } = require('short-unique-id');
// must be refactored to this
const ShortUniqueId = require('short-unique-id');- The
libdirectory is now completely removed
Also, the following changes might generate errors in some edge-cases:
- The
short_uuidDeno submodule has been completely removed from this repo and now all the logic lives insrc/index.ts - Typings are no longer under the
typingsdirectory but are now under thedistdirectory - A sourcemap is now included along with the
distfiles
New Features 🥳
The ability to generate UUIDs that contain a timestamp which can be extracted:
const uid = new ShortUniqueId();
const uidWithTimestamp = uid.stamp(32);
console.log(uidWithTimestamp);
// GDa608f973aRCHLXQYPTbKDbjDeVsSb3
console.log(uid.parseStamp(uidWithTimestamp));
// 2021-05-03T06:24:58.000ZDefault dictionaries (generated on the spot to reduce memory footprint and avoid dictionary injection vulnerabilities):
- number
- alpha
- alpha_lower
- alpha_upper
- alphanum (default when no dictionary is provided to
new ShortUniqueId()) - alphanum_lower
- alphanum_upper
- hex
// instantiate using one of the default dictionary strings
const uid = new ShortUniqueId({
dictionary: 'hex', // the default
});
console.log(uid.dict.join());
// 0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f
// or change the dictionary after instantiation
uid.setDictionary('alpha_upper');
console.log(uid.dict.join());
// A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,ZUse in CLI
$ npm install -g short-unique-id
$ short-unique-id -h
# Usage:
# node short-unique-id [OPTION]
# Options:
# -l, --length=ARG character length of the uid to generate.
# -s, --stamp include timestamp in uid (must be used with --length (-l) of 10 or more).
# -p, --parse=ARG extract timestamp from stamped uid (ARG).
# -d, --dictionaryJson=ARG json file with dictionary array.
# -h, --help display this helpUse as module
Add to your project:
// Deno (web module) Import
import ShortUniqueId from 'https://cdn.jsdelivr.net/npm/short-unique-id@latest/src/index.ts';
// ES6 / TypeScript Import
import ShortUniqueId from 'short-unique-id';
// Node.js require
const ShortUniqueId = require('short-unique-id');Instantiate and use:
//Instantiate
const uid = new ShortUniqueId();
// Random UUID
console.log(uid());
// Sequential UUID
console.log(uid.seq());Use in browser
<!-- Add source (minified 7.2K) -->
<script src="https://cdn.jsdelivr.net/npm/short-unique-id@latest/dist/short-unique-id.min.js"></script>
<!-- Usage -->
<script>
// Instantiate
var uid = new ShortUniqueId();
// Random UUID
document.write(uid());
// Sequential UUID
document.write(uid.seq());
</script>Options
Options can be passed when instantiating uid:
const options = { ... };
const uid = new ShortUniqueId(options);For more information take a look at the docs.
Available for
Documentation with Online Short UUID Generator
You can find the docs and online generator at:
What is the probability of generating the same id again?
This largely depends on the given dictionary and the selected UUID length.
Out of the box this library provides a shuffled dictionary of digits from 0 to 9, as well as the alphabet from a to z both in UPPER and lower case, with a default UUID length of 6. That gives you a total of 56,800,235,584 possible UUIDs.
So, given the previous values, the probability of generating a duplicate in 1,000,000 rounds is ~0.00000002, or about 1 in 50,000,000.
If you change the dictionary and/or the UUID length then we have provided
the function collisionProbability() function to calculate the probability
of hitting a duplicate in a given number of rounds (a collision) and the
function uniqueness() which provides a score (from 0 to 1) to rate the
"quality" of the combination of given dictionary and UUID length (the closer
to 1, higher the uniqueness and thus better the quality).
To find out more about the math behind these functions please refer to the API Reference.
Acknowledgement and platform support
This repo and npm package started as a straight up manual transpilation to ES6 of the short-uid npm package by Ankit Kuwadekar.

Since this package is now reporting 12k+ npm weekly downloads, we've gone ahead and re-written the whole of it in TypeScript and made sure to package dist modules compatible with Deno, Node.js and all major Browsers.
Development
Clone this repo:
# SSH
git clone git@github.com:jeanlescure/short-unique-id.git
# HTTPS
git clone https://github.com/jeanlescure/short-unique-id.gitTests run using:
yarn testBuild
In order to publish the latest changes you must build the distribution files:
yarn buildThen commit all changes and run the release script:
yarn releaseContributing
Yes, thank you! This plugin is community-driven, most of its features are from different authors.
Please update the docs and tests and add your name to the package.json file.
Contributors ✨
Thanks goes to these wonderful people (emoji key):
|
|
|
|
||||
|
|
|
|
||||
|
License
Copyright (c) 2018-2021 Short Unique ID Contributors.
Licensed under the Apache License 2.0.