JavaScriptmediumJavaScript

Slug Generator

Convert strings into URL-friendly slugs

01

The problem

Need to create URL-friendly slugs from titles or names

02

The solution

JavaScript
function generateSlug(text, separator = '-') {
  return text
    .toString()
    .toLowerCase()
    .normalize('NFD') // Normalize Unicode
    .replace(/[\u0300-\u036f]/g, '') // Remove diacritics
    .replace(/[^a-z0-9\s-]/g, '') // Remove invalid chars
    .replace(/\s+/g, separator) // Replace spaces with separator
    .replace(new RegExp(`${separator}+`, 'g'), separator) // Replace multiple separators
    .replace(new RegExp(`^${separator}|${separator}$`, 'g'), ''); // Trim separators
}

03

Parameters

textstring

Text to convert to slug

separatorstring

Separator character (default: '-')

04

Put it to work

Example
console.log(generateSlug('Hello World!')); // "hello-world"
console.log(generateSlug('JavaScript & Node.js')); // "javascript-nodejs"
console.log(generateSlug(' Café & Restaurant ', '_')); // "cafe_restaurant"
console.log(generateSlug('  Multiple   Spaces   Here  ')); // "multiple-spaces-here"