Generate random strings/characters in JavaScript

We will explore different ways to generate random strings and characters in JavaScript.

Serverside

When working on the server side, you have access to the full Node.js environment, which includes the crypto library. This library provides a built-in way to generate cryptographically secure random strings and characters.

const crypto = require('crypto');

function generateRandomString(length) {
  return crypto.randomBytes(Math.ceil(length / 2))
    .toString('hex')
    .slice(0, length);
}
console.log(generateRandomString(10));

In this example, we use the randomBytes() method of the crypto library to generate a random buffer of bytes. We then convert these bytes to a hexadecimal string using the toString() method. Finally, we use the slice() method to extract the desired number of characters from the hexadecimal string.

Clientside

When working on the client side, the crypto.getRandomValues() method lets you get cryptographically strong random values. The array given as the parameter is filled with random numbers (random in its cryptographic meaning).

function generateId (len) {
  var arr = new Uint8Array((len || 40) / 2)
  window.crypto.getRandomValues(arr)
  return Array.from(arr, dec2hex).join('')
}

console.log(generateId())

In this example, we create a result variable and an array of characters that we want to use to generate the random string. We then use a for loop to generate a random index within the range of the array and use the charAt() method to get the character at that index. We add that character to the result variable on each iteration of the loop.

npm Packages

If you want an even more secure and versatile option, you can use npm packages and libraries like randomstring and uuid that can be used to generate random strings in various formats.

const uuidv4 = require('uuid/v4');
console.log(uuidv4());

The uuid package can be used to generate universally unique identifiers (UUIDs) which are unique across all devices and at all times.