What is hexoid?
The hexoid npm package is a small, fast library for generating unique hex string IDs. It is designed to be efficient and provides a simple API for generating random or sequential hex strings that can be used for unique identifiers in various applications.
What are hexoid's main functionalities?
Generate random hex string IDs
This feature allows you to generate random hex string IDs. The code sample shows how to import the hexoid package, create a generator function, and then log a new unique hex string ID to the console.
"use strict"; const hexoid = require('hexoid'); const generateId = hexoid(); console.log(generateId());
Generate custom length hex string IDs
This feature allows you to specify the length of the hex string ID. In the code sample, a 16-character hex string ID is generated.
"use strict"; const hexoid = require('hexoid'); const generateId = hexoid(16); console.log(generateId());
Other packages similar to hexoid
uuid
The uuid package is a popular library for generating unique identifiers. Unlike hexoid, which generates hex strings, uuid can generate UUIDs (Universally Unique Identifiers) according to various versions (v1, v3, v4, v5). UUIDs are typically longer and follow a specific format, which includes hyphens and can be more recognizable as a standard ID format.
shortid
Shortid is another package that generates short, non-sequential, URL-friendly unique IDs. The main difference between shortid and hexoid is that shortid generates alphanumeric IDs that are shorter and more suited for URLs, whereas hexoid focuses on hex strings which are not necessarily URL-friendly but can be more compact.
nanoid
Nanoid is a tiny, secure, URL-friendly, unique string ID generator for JavaScript. It is similar to hexoid in terms of providing a simple API for generating unique IDs, but it offers a customizable alphabet and size, which allows for a wider range of possible IDs beyond just hexadecimal characters.
hexoid
A tiny (190B) and extremely fast utility to generate random IDs of fixed length
Hexadecimal object IDs. Available for Node.js and the browser.
Generate randomized output strings of fixed length using lowercased hexadecimal pairs.
Notice: Please note that this is not a cryptographically secure (CSPRNG) generator.
Additionally, this module is delivered as:
Install
$ npm install --save hexoid
Usage
import { hexoid } from 'hexoid';
const toID = hexoid();
toID();
toID();
toID();
hexoid(25)();
hexoid(32)();
hexoid(48)();
API
hexoid(length?)
Returns: () => string
Creates the function that will generate strings.
length
Type: Number
Default: 16
Then length of the output string.
Important: Your risk of collisions decreases with longer strings!
Please be aware of the Birthday Problem! You may need more combinations than you'd expect.
The maximum combinations are known given the following formula:
const combos = 256 ** (len/2);
Benchmarks
Running on Node.js v10.13.0
Validation (length = 16):
✔ hashids/fixed (example: "LkQWjnegYbwZ1p0G")
✔ nanoid/non-secure (example: "sLlVL5X3M5k2fo58")
✔ uid (example: "3d0ckwcnjiuu91hj")
✔ hexoid (example: "de96b62e663ef300")
Benchmark (length = 16):
hashids/fixed x 349,462 ops/sec ±0.28% (93 runs sampled)
nanoid/non-secure x 3,337,573 ops/sec ±0.28% (96 runs sampled)
uid x 3,553,482 ops/sec ±0.51% (90 runs sampled)
hexoid x 81,081,364 ops/sec ±0.18% (96 runs sampled)
Validation (length = 25):
✔ cuid (example: "ck7lj5hbf00000v7c9gox6yfh")
✔ hashids/fixed (example: "r9JOyLkQWjnegYbwZ1p0GDXNm")
✔ nanoid/non-secure (example: "hI202PVPJQRNrP6o6z4pXz4m0")
✔ uid (example: "9904e9w130buxaw7n8358mn2f")
✔ hexoid (example: "01dfab2c14e37768eb7605a00")
Benchmark (length = 25):
cuid x 161,636 ops/sec ±1.36% (89 runs sampled)
hashids/fixed x 335,439 ops/sec ±2.40% (94 runs sampled)
nanoid/non-secure x 2,254,073 ops/sec ±0.23% (96 runs sampled)
uid x 2,483,275 ops/sec ±0.38% (95 runs sampled)
hexoid x 75,715,843 ops/sec ±0.27% (95 runs sampled)
Validation (length = 36):
✔ uuid/v1 (example: "c3dc1ed0-629a-11ea-8bfb-8ffc49585f54")
✔ uuid/v4 (example: "8c89f0ca-f01e-4c84-bd71-e645bab84552")
✔ hashids/fixed (example: "EVq3Pr9JOyLkQWjnegYbwZ1p0GDXNmRBlAxg")
✔ @lukeed/uuid (example: "069ad676-48f9-4452-b11d-f20c3872dc1f")
✔ nanoid/non-secure (example: "jAZjrcDmHH6P1rT9EFdCdHUpF440SjAKwb2A")
✔ uid (example: "5mhi30lgy5d0glmuy81llelbzdko518ow1sx")
✔ hexoid (example: "615209331f0b4630acf69999ccfc95a23200")
Benchmark (length = 36):
uuid/v1 x 1,487,947 ops/sec ±0.18% (98 runs sampled)
uuid/v4 x 334,868 ops/sec ±1.08% (90 runs sampled)
@lukeed/uuid x 6,352,445 ops/sec ±0.27% (91 runs sampled)
hashids/fixed x 322,914 ops/sec ±0.27% (93 runs sampled)
nanoid/non-secure x 1,592,708 ops/sec ±0.25% (91 runs sampled)
uid x 1,789,492 ops/sec ±0.29% (92 runs sampled)
hexoid x 71,746,692 ops/sec ±0.29% (93 runs sampled)
Related
- uid - A smaller (134B) but slower variant of this module with a different API
- @lukeed/uuid - A tiny (230B), fast, and cryptographically secure UUID (V4) generator for Node and the browser
License
MIT © Luke Edwards