Skip to content

Generate customizable random strings using predefined or custom character sets. Includes validation. Ideal for activation or invitation links and other non-sensitive use cases.

License

Notifications You must be signed in to change notification settings

schrudolf/random-web-token

Repository files navigation

random-web-token

This package uses the secure Node.js crypto module.

A lightweight utility for generating customizable random strings (a.k.a. "tokens") using predefined or custom character sets. Includes simple validation to check whether a given string matches a specific character set and length.

Ideal for user-facing identifiers such as activation links, invitation links, forgot password links, or other non-sensitive unique strings.


Installation

npm install random-web-token

(Optional) TypeScript support:

npm install --save-dev @types/random-web-token

Usage

Generate a random string (synchronously)

const token = require("random-web-token");

const generated = token.genSync("extra", 50);
console.log(generated); // e.g., "fT7ZkWA4NpDqF0BjgY..."

Generate a random string (asynchronously with await)

const token = require("random-web-token");

async function generate() {
  const generated = await token.genAsync("extra", 50);
  console.log(generated); // e.g., "h8YkMRaWg5tBz4QEX..."
}

generate();

TypeScript version:

import * as token from "random-web-token";

async function generate() {
  const generated = await token.genAsync("extra", 50);
  console.log(generated);
}

generate(); // -> sHF3p8zZCTdAmJ0cyS60NK...

Character sets

Use one of the predefined sets as the first argument when generating a string:

Name Characters Used
"normal" a–z
"normal+" A–Z
"medium" a–z, 0–9
"medium+" A–Z, 0–9
"extra" a–z, A–Z, 0–9
"onlyNumbers" 0–9

Validate a string

You can validate whether a given string matches a specific character set and length:

const token = require("random-web-token");

const t = token.genSync("extra", 50);

// Valid case
console.log(token.syncValidator("extra", 50, t)); // true

// Invalid: wrong length
console.log(token.syncValidator("extra", 40, t)); // false

// Invalid: wrong character set
console.log(token.syncValidator("normal", 50, t)); // false

Allowing custom extra characters

You can optionally allow specific extra characters:

const altered = token.genSync("extra", 50) + "+!/";
console.log(token.syncValidator("extra", 53, altered, "+!/")); // true

Use custom character sets

Need a fully custom character set? Use withMyOwnCharacters():

const token = require("random-web-token");

async function customToken() {
  const t = await token.withMyOwnCharacters("abc123", 10);
  console.log(t); // e.g., "a12cb31acb"
}

customToken();

About

Generate customizable random strings using predefined or custom character sets. Includes validation. Ideal for activation or invitation links and other non-sensitive use cases.

Topics

Resources

License

Code of conduct

Stars

Watchers

Forks