Remove Accents and Diacritics from Text
Accented letters cause problems in URL slugs, file names, usernames and search. This tool will remove accents and other diacritics, turning “Crème brûlée” into “Creme brulee”, while leaving spacing, punctuation, digits and unaccented letters untouched.
Example
Before: Crème brûlée à la française, Ærøskøbing, Łódź, Straße, São Paulo
After: Creme brulee a la francaise, AEroskobing, Lodz, Strasse, Sao Paulo
How it works
Most accented letters exist in Unicode in two forms: a single precomposed character such as “é”, or a base letter followed by a combining mark (“e” + “◌́”). The tool first applies Unicode canonical decomposition (NFD), which splits every accented letter into its base and its marks. It then deletes all combining marks and recomposes the text (NFC).
Some letters are not built from a base letter plus a mark, so decomposition cannot simplify them. The tool maps these directly:
| Letter | Becomes | Letter | Becomes |
|---|---|---|---|
| ß | ss | ł / Ł | l / L |
| æ / Æ | ae / AE | đ, ð | d |
| œ / Œ | oe / OE | þ / Þ | th / TH |
| ø / Ø | o / O | ı (dotless i), ħ | i, h |
Limits to know about
- Not a transliterator. Greek, Cyrillic, Arabic and CJK letters stay in their own script. Greek accent marks are removed (“Ελληνικά” becomes “Ελληνικα”), but nothing is converted to Latin letters.
- Combining marks in every script. All combining marks are deleted, not only Latin accents: Devanagari vowel signs (“हिन्दी” becomes “हनद”), Arabic and Hebrew vowel points, Thai tone marks and Japanese voicing marks (“が” becomes “か”) go too, and an emoji such as ❤️ loses its variation selector. Use the tool on Latin, Greek or Cyrillic text.
- Letters that carry meaning. In some languages a mark creates a separate letter. Russian “й” becomes “и” and “ё” becomes “е”, which changes the word. Keep the original text wherever it will be read by people.
- German umlauts. “ä”, “ö” and “ü” become “a”, “o” and “u”, not the “ae”, “oe”, “ue” spellings German uses when umlauts are unavailable. Fix names such as “Müller” by hand if you need that convention.
- Ligatures. Typographic ligatures such as “fi” are not split, because they are compatibility characters rather than accented letters.
Removing accents in code
The Unicode decomposition step is available in most languages, but on its own it leaves letters such as ß, ø and ł untouched, which is why the tool adds the mapping table above:
// JavaScript
"Crème brûlée".normalize("NFD").replace(/\p{M}/gu, "") // "Creme brulee"
# Python
import unicodedata
"".join(c for c in unicodedata.normalize("NFD", s) if not unicodedata.combining(c))
-- PostgreSQL (after CREATE EXTENSION unaccent)
SELECT unaccent('São Paulo'); -- Sao PauloFor full transliteration of other scripts, libraries such as Python's Unidecode go further, at the cost of occasionally odd guesses for names.
Common uses
- URL slugs: strip accents, then convert to kebab-case with the Case Converter.
- Search and matching: compare “Jose” and “José” by normalizing both sides the same way.
- File names and IDs: older systems and some command-line tools handle plain ASCII more reliably.
If your text also contains symbols or smart quotes that must go, follow up with Remove Punctuation or UTF-8 to ASCII.
Privacy
Conversion runs in your browser; your text is not uploaded.