Strings
normalizeAccents
1.0.0- Dependencies:
- ∟Direct: 0
- ∟Peer: 0
- Source code ↗
- Check on NPM ↗
Hidden
Overview
Section titled “Overview”Removes accents and diacritical marks from a string by normalizing Unicode characters and stripping combining marks.
normalizeAccents(/str/);Features
Section titled “Features”- Removes accents and diacritical marks from characters
- Uses Unicode normalization (NFD) for accurate processing
- Preserves original character structure while removing marks
- Returns empty string for invalid inputs
- Handles all Unicode combining characters
- Simple and intuitive API
- No side effects - does not modify original string
- Comprehensive testing
Arguments
Section titled “Arguments”| Arg | Type | Default Value | Required |
str | string | - | Yes |
Use the normalizeAccents() function to remove accents and diacritical marks from strings.
import { normalizeAccents } from '@inpulse-ui/utils';
const result = normalizeAccents('café');console.log(result); // "cafe"Handles various accented characters:
console.log(normalizeAccents('José')); // "Jose"console.log(normalizeAccents('François')); // "Francois"console.log(normalizeAccents('naïve')); // "naive"console.log(normalizeAccents('résumé')); // "resume"console.log(normalizeAccents('piñata')); // "pinata"Works with multiple languages:
console.log(normalizeAccents('Müller')); // "Muller" (German)console.log(normalizeAccents('Björk')); // "Bjork" (Swedish)console.log(normalizeAccents('São Paulo')); // "Sao Paulo" (Portuguese)console.log(normalizeAccents('Zürich')); // "Zurich" (German)console.log(normalizeAccents('Kraków')); // "Krakow" (Polish)Returns empty string for invalid inputs:
console.log(normalizeAccents('')); // ""console.log(normalizeAccents(null)); // ""console.log(normalizeAccents(undefined)); // ""console.log(normalizeAccents(123)); // ""Preserves non-accented characters:
console.log(normalizeAccents('Hello World')); // "Hello World"console.log(normalizeAccents('123 ABC xyz')); // "123 ABC xyz"console.log(normalizeAccents('!@#$%^&*()')); // "!@#$%^&*()"Examples
Section titled “Examples”International user search - creating a search function that works with accented names:
import { normalizeAccents } from '@inpulse-ui/utils';
// User database with international namesconst userDatabase = [ { id: 1, name: 'José María García', country: 'Spain' }, { id: 2, name: 'François Müller', country: 'France' }, { id: 3, name: 'Björn Andersson', country: 'Sweden' }, { id: 4, name: 'Łukasz Kowalski', country: 'Poland' }];
// Search function that handles accentsfunction searchUsers(query) { const normalizedQuery = normalizeAccents(query.toLowerCase());
return userDatabase.filter(user => { const normalizedName = normalizeAccents(user.name.toLowerCase()); return normalizedName.includes(normalizedQuery); });}
// Search examplesconsole.log(searchUsers('jose')); // Finds José María Garcíaconsole.log(searchUsers('francois')); // Finds François Müllerconsole.log(searchUsers('bjorn')); // Finds Björn Anderssonconsole.log(searchUsers('lukasz')); // Finds Łukasz Kowalski
// Works with partial matches tooconsole.log(searchUsers('garcia')); // Finds José María Garcíaconsole.log(searchUsers('muller')); // Finds François MüllerText search and filtering:
const cities = ['São Paulo', 'México', 'Zürich', 'Kraków', 'Montréal'];
// Normalize for search comparisonfunction searchCities(query) { const normalizedQuery = normalizeAccents(query.toLowerCase());
return cities.filter(city => { const normalizedCity = normalizeAccents(city.toLowerCase()); return normalizedCity.includes(normalizedQuery); });}
console.log(searchCities('sao')); // ['São Paulo']console.log(searchCities('krakow')); // ['Kraków']console.log(searchCities('zurich')); // ['Zürich']URL slug generation:
function createSlug(title) { return normalizeAccents(title) .toLowerCase() .replace(/[^a-z0-9]+/g, '-') .replace(/^-+|-+$/g, '');}
const blogTitles = [ 'Café Culture in París', 'The Müller Family Story', 'São Paulo: A Guide'];
const slugs = blogTitles.map(createSlug);console.log(slugs);// ['cafe-culture-in-paris', 'the-muller-family-story', 'sao-paulo-a-guide']User data processing:
const users = [ { name: 'José García', email: 'jose@example.com' }, { name: 'François Müller', email: 'francois@example.com' }, { name: 'María José', email: 'maria@example.com' }];
// Create normalized search indexconst searchIndex = users.map(user => ({ ...user, searchName: normalizeAccents(user.name.toLowerCase())}));
function findUser(query) { const normalizedQuery = normalizeAccents(query.toLowerCase()); return searchIndex.find(user => user.searchName.includes(normalizedQuery) );}
console.log(findUser('jose')); // Finds both José García and María Joséconsole.log(findUser('francois')); // Finds François MüllerBuilt with by Jo Santana in Brazil.
© 2026 Inpulse. All rights reserved.