Yevhen Klymentiev
dark
light
console
darkness
y.klymentiev@gmail.com
Reusable Snippets|Practical utility code for everyday use — custom-built and ready to share

removeDiacritics

Removes diacritical marks (accents) from letters.

TypeScript
Copied!
1/**
2 * Removes diacritical marks (accents) from letters.
3 *
4 * @param str - The input string to normalize.
5 * @returns A string without diacritics.
6 *
7 * @example
8 * removeDiacritics('Crème brûlée') → 'Creme brulee'
9 */
10export function removeDiacritics(str: string): string {
11  return str.normalize('NFD').replace(/[\u0300-\u036f]/g, '');
12}
  • Improves Search and Matching

    Removes accents and diacritical marks, enabling case-insensitive and accent-insensitive searches (e.g. matching resume and résumé).

  • Unicode-Compliant

    Uses String.prototype.normalize('NFD') for robust Unicode decomposition, ensuring broad language support.

  • Minimal and Efficient

    The implementation is concise, fast, and does not require external libraries.

  • Improves URL and Slug Generation

    Makes strings safer for use in URLs, slugs, and file names by removing potentially problematic characters.

  • Enhances Text Normalization

    A useful preprocessing step in text analysis, NLP, and user input cleaning.

Tests | Examples

TypeScript
Copied!
1test('removeDiacritics - basic accented letters', () => {
2  expect(removeDiacritics('éèêëėę')).toBe('eeeeee');
3});
4
5test('removeDiacritics - mixed string', () => {
6  expect(removeDiacritics('Crème brûlée')).toBe('Creme brulee');
7});
8
9test('removeDiacritics - string with no accents', () => {
10  expect(removeDiacritics('Hello, world!')).toBe('Hello, world!');
11});
12
13test('removeDiacritics - supports upper and lower case', () => {
14  expect(removeDiacritics('ÀÁÂãäå')).toBe('AAAAAA');
15});
16
17test('removeDiacritics - empty string', () => {
18  expect(removeDiacritics('')).toBe('');
19});

Common Use Cases

  • Search Engines and Autocomplete

    Normalize input and database terms to allow for more forgiving and inclusive matching.

  • Slug and URL Generation

    Convert titles or labels with accented characters into clean, readable slugs.

  • Username or Identifier Cleaning

    Sanitize display names or input fields to a base ASCII format.

  • Internationalization Fallbacks

    Provide a simplified fallback version of text for systems that don’t support special characters.

  • Data Deduplication

    Help detect duplicates in datasets where names may have different diacritic usage.

Codebase: Utilities -> Strings -> removeDiacritics | Yevhen Klymentiev