Remove Accents from Text

Strip accents and diacritical marks from any text. Convert á → a, é → e, ñ → n, ö → o, ç → c, ß → ss, and dozens more. Handles Spanish, French, Portuguese, German, Polish, Czech, and most Latin-script languages.

How to remove accents from text

1. Paste your accented text

Drop a Spanish, French, Portuguese, German, Polish, or Czech text into the left textarea. Any Latin-script text with diacritics works. The accent-free version appears in the lower textarea on every keystroke.

2. The conversion rules

The tool uses Unicode NFD normalization (Normalization Form D) which decomposes accented characters into base + combining mark, then strips every combining mark. The result: á → a, é → e, í → i, ó → o, ú → u, ü → u, ñ → n, ç → c, ÿ → y. Both lowercase and uppercase are handled (Á → A, Ñ → N).

3. Special-character toggle

Some characters do not have a NFD-decomposable base. The German ß (eszett) decomposes to ss only by linguistic convention. The Scandinavian Æ, Œ, Ø need explicit mapping (Æ → AE, Œ → OE, Ø → O). The Polish Ł (slashed L) and the Icelandic Þ (thorn) also need explicit handling. The toggle "ß → ss, Æ → AE" enables these special mappings.

4. Case options

By default, case is preserved (Á → A, ñ → n, Ü → U). Turn off Preserve case or turn on Force lowercase to get all-lowercase output. Useful for URL slugs and filename generation.

5. Copy or download

Copy puts the output on your clipboard. Download .txt grabs a file. The accent count in the sidebar shows how many characters were modified, useful for sanity-checking the conversion.

When you need to strip accents

URL slug generation

"São Paulo" cannot live in a URL slug as-is; URLs are conventionally ASCII-only. Strip accents to get "Sao Paulo", lowercase to "sao paulo", replace spaces with hyphens to get "sao-paulo" - the canonical URL slug. The forced-lowercase toggle combined with kebab-case via a downstream tool gives you the slug.

Filename normalization

Some legacy file systems (FAT32, older Windows) reject diacritics in filenames. Stripping accents before saving prevents the "filename invalid" errors. Modern systems (NTFS, APFS, ext4) handle Unicode filenames, but cross-system compatibility (uploading to a Linux server from a Mac) still benefits from ASCII normalization.

Search and matching

Many search systems do not consider "café" and "cafe" equivalent unless explicitly normalized. Strip accents on both the query and the corpus before matching to get accent-insensitive search. ElasticSearch's asciifolding filter does the same thing under the hood; this tool gives you a quick browser-side version.

Form data normalization

International users may enter their name as "François" but the downstream system stores ASCII only. Strip accents on the way in so the stored name is "Francois" - matches the legal-name field convention in most US and UK systems. (Better: store both. Practical compromise: store accent-free as the canonical lookup key.)

Old systems and legacy data

SAP, AS/400, and other older enterprise systems often only handle ASCII. Cleaning a CSV before upload avoids encoding errors. Run the columns through the accent remover before re-importing.

Phonetic comparison

For fuzzy name matching ("Müller" vs "Mueller"), accent-stripping is step one. Step two is applying further phonetic rules (Soundex, Metaphone). This tool gives you step one.

Which accents the tool handles

LanguageAccents coveredSpecial
Spanishá é í ó ú ü ñ¿ ¡ preserved (not accents per se)
Frenchà â ä é è ê ë î ï ô œ ù û ü ÿ çœ → oe (with toggle)
Portugueseá à â ã é ê í ó ô õ ú ü çSame NFD rules as French
Germanä ö üß → ss (with toggle)
Italianà è é ì ò ùStandard NFD
Polishą ć ę ł ń ó ś ź żł → l (with toggle)
Czechá č ď é ě í ň ó ř š ť ú ů ý žStandard NFD
Scandinavianæ ø åæ → ae, ø → o (with toggle)
Vietnameseạ ả ấ ầ ẩ ẫ ậ ắ ằ ẳ ẵ ặ etc.Complex multi-mark composition
Turkishç ğ ı İ ö ş üDotted-I edge case (İ → I, but i → i)

NFD vs NFC: the technical detail

Unicode allows the same accented character to be encoded in two ways. "é" can be one code point (U+00E9, "Latin small letter e with acute") OR two code points (U+0065 "e" + U+0301 "combining acute"). The first is Normalization Form C (NFC, composed); the second is Normalization Form D (NFD, decomposed). They render identically in your browser but JavaScript compares them as different strings.

The accent remover uses NFD normalization first (so every accented character becomes base + combining mark) and then strips every combining mark in the U+0300 to U+036F range. This works regardless of which form the input was originally in.

If you ever see "this string with accents looks fine but my code thinks it has extra characters," the input is in NFD form and your code is counting the combining marks separately. Normalize to NFC before measuring length.

Privacy and processing

All conversion runs in your browser. Names, addresses, customer data, and internal documents stay local. The tool does not log keystrokes, does not call any API, and does not store the input. Safe for GDPR-relevant personal data normalization and any text containing PII.

Related tools

Frequently asked questions

How do I remove accents from text?

Paste the accented text into the textarea. The accent-free version appears in the lower textarea automatically. The tool uses Unicode NFD normalization to decompose accented characters and strips every combining diacritical mark.

Does it work for Spanish, French, and Portuguese?

Yes. All three languages are well-supported. Spanish á é í ó ú ü ñ all strip cleanly. French handles à â ä é è ê ë î ï ô œ ù û ü ÿ ç. Portuguese handles all the tildes and circumflexes plus ç. The œ ligature needs the 'ß → ss, Æ → AE' toggle on.

How does it handle the German ß?

The ß (eszett) is converted to ss when the 'ß → ss, Æ → AE' toggle is on (the default). This matches the official German orthographic convention. Without the toggle, ß is left as-is since NFD does not decompose it.

Does it preserve case?

Yes by default. Á becomes A, ñ becomes n, Ü becomes U. Turn off Preserve case or turn on Force lowercase to get all-lowercase output. Useful for URL slug generation.

What about Vietnamese, which has stacked accents?

Vietnamese works. Characters with multiple stacked diacritics (ạ, ấ, ằ, etc.) decompose into base + multiple combining marks under NFD, and every combining mark is stripped. The result is plain a, regardless of how complex the original tone marks were.

Will this break Turkish dotted-I?

Turkish has a tricky case: dotted i (i) and dotless i (ı) are distinct letters, and capital İ vs I. The tool preserves these by case correctly: İ → I (dot removed since the dot is a diacritic), i → i (lowercase dotted i unchanged), ı → i (lowercase dotless i unchanged). If you need Turkish-specific case folding, do it as a separate step.

Can I use this for URL slug generation?

Yes. Strip accents, turn on Force lowercase, then post-process to replace spaces with hyphens and remove non-alphanumerics. Result: 'São Paulo' becomes 'sao-paulo'. Combine with the camelCase converter for kebab-case output.

Is the text sent to a server?

No. All conversion runs in your browser. Names, addresses, customer data, and any PII stays local. The tool makes no network call when you paste or copy.

More wordcounter.ai tools

Other tools you might find useful.

Browse the full catalog →