Skip to content
Slugify a string
Branch: master
Clone or download
Latest commit 7750508 Mar 8, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.editorconfig
.gitattributes Meta tweaks Oct 30, 2018
.gitignore
.npmrc
.travis.yml Require Node.js 8, add TypeScript definition (#23) Mar 8, 2019
index.d.ts
index.js Require Node.js 8, add TypeScript definition (#23) Mar 8, 2019
index.test-d.ts
license
overridable-replacements.js
package.json 0.9.0 Mar 8, 2019
readme.md Require Node.js 8, add TypeScript definition (#23) Mar 8, 2019
replacements.js Add languages Persian, Pashto and Urdu (#22) Jan 14, 2019
test.js Add languages Persian, Pashto and Urdu (#22) Jan 14, 2019

readme.md

slugify Build Status

Slugify a string

Useful for URLs, filenames, and IDs.

It correctly handles German umlauts, Vietnamese, Arabic, Russian, Romanian, Turkish and more.

Install

$ npm install @sindresorhus/slugify

Usage

const slugify = require('@sindresorhus/slugify');

slugify('I ♥ Dogs');
//=> 'i-love-dogs'

slugify('  Déjà Vu!  ');
//=> 'deja-vu'

slugify('fooBar 123 $#%');
//=> 'foo-bar-123'

slugify('I ♥ 🦄 & 🐶', {
	customReplacements: [
		['🐶', 'dog']
	]
});
//=> 'i-love-unicorn-and-dog'

API

slugify(input, [options])

input

Type: string

options

Type: Object

separator

Type: string
Default: -

const slugify = require('@sindresorhus/slugify');

slugify('BAR and baz');
//=> 'bar-and-baz'

slugify('BAR and baz', {separator: '_'});
//=> 'bar_and_baz'
lowercase

Type: boolean
Default: true

Make the slug lowercase.

const slugify = require('@sindresorhus/slugify');

slugify('Déjà Vu!');
//=> 'deja-vu'

slugify('Déjà Vu!', {lowercase: false});
//=> 'Deja-Vu'
decamelize

Type: boolean
Default: true

Convert camelcase to separate words. Internally it does fooBarfoo bar.

const slugify = require('@sindresorhus/slugify');

slugify('fooBar');
//=> 'foo-bar'

slugify('fooBar', {decamelize: false});
//=> 'foobar'
customReplacements

Type: Array<string[]>
Default: [ ['&', ' and '], ['🦄', ' unicorn '], ['♥', ' love '] ]

Specifying this only replaces the default if you set an item with the same key, like &. The replacements are run on the original string before any other transformations.

const slugify = require('@sindresorhus/slugify');

slugify('Foo@unicorn', {
	customReplacements: [
		['@', 'at']
	]
});
//=> 'fooatunicorn'

Add a leading and trailing space to the replacement to have it separated by dashes:

const slugify = require('@sindresorhus/slugify');

slugify('foo@unicorn', {
	customReplacements: [
		['@', ' at ']
	]
});
//=> 'foo-at-unicorn'

Related

License

MIT © Sindre Sorhus

You can’t perform that action at this time.