---
title: Slugcraft
description: Generate stable URL slugs and avoid application route collisions.
url: https://track-staging-acceptance.staging.thally.app/slugcraft
---

# Slugcraft

Generate stable URL slugs and avoid application route collisions.

Slugcraft turns arbitrary text into deterministic, collision-free URL slugs.

## Generate a slug

Import `slugify` for the common case:

```js
import { slugify } from "slugcraft";

slugify("Café Crème"); // "cafe-creme"
```

The default separator is `-`, output is lowercased, accents are folded to
ASCII, and input that contains no usable characters returns `untitled`.

## Protect reserved routes

The default reserved routes are `new`, `edit`, `admin`, `api`, `settings`, and `account`.  Use
`isReservedSlug` to validate a candidate, or `uniqueSlug` to automatically add
a numeric suffix when a generated slug is already taken or reserved.

```js
import { isReservedSlug, uniqueSlug } from "slugcraft";

isReservedSlug("Admin"); // true
uniqueSlug("Admin", []); // "admin-2"
```

Reserved-route checks are case-insensitive. Pass `options.reserved` to
`uniqueSlug` when your application uses a different route list.