Fastest UUIDv4 with good RNG
npm install uuid-random

Generate RFC-4122 compliant random UUIDs (version 4) with better statistical dispersion than Math.random().
``sh`
npm i uuid-random
Or download the latest release.
* Tiny (0.6k minified + gzipped)
* Uses cryptographic randomness when possible
* Very fast!
Compatible with almost all versions of:
- Node
- Babel
- TypeScript
- Web browsers
The included benchmark.js as well as independent benchmarks rank this library as the _fastest_ pure JS UUID v4 generator available with cryptographically secure PRNG— almost 20x faster than the most popular library (using latest NodeJS).
| npm package | performance |
|-----------------|-----------------|
| portable-uuid | 354k ops/sec |
| uuid | 474k ops/sec |
| id128 | 6.0M ops/sec |
| uuid-random (this) | 9.7M ops/sec |
Results above generated on a 4.20GHz Intel i7-7700K with Node v12.18.0
Universally Unique IDentifiers transcend many constraints of traditional incremental integer IDs, especially in distributed systems. In UUID version 4, we essentially generate a random 128-bit value.
We do trade guaranteed uniqueness for __extremely__ probable uniqueness (you would need to do-loop uuid() at max speed for 73,067 years for a 50% chance of one collision). But for that slight cost, we may now generate valid, unique, persistent IDs on any node of a distributed system (e.g. intermittently offline or high-latency clients).
_Note, if you plan to use UUIDs for a new project, depending on your requirements, you may consider a more recent standard that addresses some of the shortcomings of UUID, such as flake-id, nanoid, cuid, or ulid._
`javascript`
import uuid from 'uuid-random';
uuid(); // 'f32dc9ae-7ca8-44ca-8f25-f258f7331c55'
`javascript`
var uuid = require('uuid-random');
uuid(); // '0b99b82f-62cf-4275-88b3-de039020f14e'
`html`
`javascript`
uuid.test('0b99b82f-62cf-4275-88b3-de039020f14e'); // true
`javascript``
uuid.bin(); //
Feel free to open an issue or submit a pull request.
MIT.