Generate random and unique strings in JavaScript
By Flavio Copes
Learn how I generated thousands of unique random strings in Node.js using the randomstring package and a Set to guarantee every string stays unique.
As I was building the platform for my online course I had the problem of generating a few thousands unique URLs.
Every person taking the course will be assigned a unique URL. The backend knows about all those URLs and maps a valid URL to the course content.
I wanted a unique URL because I can associate a URL to a purchase email.
In this way, I can avoid having a login, and at the same time having a separate URL for each person lets me block eventual abuse if that URL gets unintentionally or intentionally shared in the public.
So I set out to write my Node.js script.
I used the randomstring package, and I added numbers to a Set object until I got the number I wanted. Using a Set means every string will be unique because calling add and passing a duplicate string will silently do nothing.
I made a generateStrings() function that returns the set:
const generateStrings = (numberOfStrings, stringLength) => {
const randomstring = require('randomstring')
const s = new Set()
while (s.size < numberOfStrings) {
s.add(randomstring.generate(stringLength))
}
return s
}
I can call it using
const strings = generateStrings(100, 20)
where 100 is the number of strings I want, and 20 is the length of each string.
Once we get the set, we can iterate over them using the values() Set method:
for (const value of strings.values()) {
console.log(value)
}
These days I’d probably use UUIDs or nanoid for this — I built a free ID generator tool where you can compare the formats and see the collision math.
Want me to talk about your product? You can sponsor this site.
Related posts about js: