Skip to content

normalizeString ​

Powerful string normalizer — strip accents, normalize whitespace, remove special characters, change case, and apply Unicode normalization forms.

The Swiss-army knife for turning user input into a safe, comparable, slug-ready string.

Usage ​

ts
import { normalizeString } from '@maz-ui/utils'

normalizeString('  Crème Brûlée  ')
// → 'creme-brulee'

normalizeString('Élégant Café', { case: 'kebab-case' })
// → 'elegant-cafe'

normalizeString('My Article Title!', {
  case: 'kebab-case',
  removeSpecialCharacters: true,
})
// → 'my-article-title'

API ​

ts
function normalizeString(
  input: string | number | boolean,
  options?: NormalizeStringOptions,
): string

Options ​

OptionTypeDefaultDescription
removeAccentsbooleantrueStrip diacritics (é → e, ç → c, …)
caseSensitivebooleanfalseWhen false, lowercases the result unless case is set
replaceSpacesbooleantrueReplace spaces with -
removeSpecialCharactersbooleanfalseStrip non-alphanumeric / non-dash characters (Latin alphabet only)
trimbooleantrueTrim leading/trailing whitespace
normalizeSpacesbooleantrueCollapse runs of whitespace into a single space
removeNumbersbooleanfalseStrip digits
caseCaseFormatundefinedForce a target case: kebab-case, camelCase, PascalCase, snake_case, lowercase, UPPERCASE
customNormalizationFormsstring[]['NFC', 'NFKD']Unicode normalization forms applied at the end

Examples ​

Generate a URL-safe slug:

ts
const slug = normalizeString(post.title, {
  case: 'kebab-case',
  removeSpecialCharacters: true,
})

Build a case-insensitive comparison key:

ts
const a = normalizeString('Éléphant')
const b = normalizeString('elephant')
a === b // true

Preserve original casing but strip diacritics:

ts
normalizeString('Crème Brûlée', { caseSensitive: true, replaceSpaces: false })
// → 'Creme Brulee'