Vanilla JS - Slugify a String in JavaScript
It's a pretty common requirement to convert a string into a slug for things like URL paths with SEO friendly titles.
A slug is typically all lower case, separated by dashes (hyphens) instead of spaces and doesn't contain any special characters.
JS Slugify Function
This is a little JavaScript slugify function I wrote recently to auto generate a slug from a title text field. But it could be used to convert any string into a slug.
The function performs the following steps:
- Converts to lower case and trims any leading or trailing spaces.
- Removes any accents from characters (e.g. á, â, â, ã, ä, å, ç).
- Replaces any other special characters with spaces.
- Replaces multiple spaces or dashes (hyphens) with a single dash.
function slugify(input) { if (!input) return ''; // make lower case and trim var slug = input.toLowerCase().trim(); // remove accents from charaters slug = slug.normalize('NFD').replace(/[\u0300-\u036f]/g, '') // replace invalid chars with spaces slug = slug.replace(/[^a-z0-9\s-]/g, ' ').trim(); // replace multiple spaces or hyphens with a single hyphen slug = slug.replace(/[\s-]+/g, '-'); return slug; }
StackBlitz Demo
Here's a demo of the slugify function in action on StackBlitz. The slug field is auto generated as you type a string into the title field.
(See on StackBlitz at https://stackblitz.com/edit/vanilla-js-slugify)
Need Some Vanilla JS Help?
Search fiverr for freelance Vanilla JS developers.
Follow me for updates
When I'm not coding...
Me and Tina are on a motorcycle adventure around Australia.
Come along for the ride!