# Remove Diacritics and Transliterate

> Remove diacritics and accents from text online, convert Cyrillic and Greek to Latin by passport, ISO 9 or BGN/PCGN rules, and make slugs and file names.

URL: https://acrafto.com/en/remove-diacritics-transliterate/  
Updated: 2026-10-09

Tools are interactive browser apps; there is no public API, no endpoints to call and no server-side processing. To use a tool, open its HTML page in a browser.

Remove diacritics and accents from any text as you type: é becomes e, ř becomes r, and letters that have no plain form, such as ł, ø, đ or ß, are replaced too. The same tool is a Cyrillic to Latin converter and a Greek to Latin converter that follows named standards, the passport rules of Russia, Ukraine and Bulgaria, ISO 9, BGN/PCGN, the Serbian and Macedonian Latin alphabets and Greek ELOT 743. It removes Arabic tashkeel and Hebrew niqqud, and it turns the result into a URL slug or a safe file name. Every replaced character is highlighted, so you can check each one. Everything happens in your browser.

## How to remove diacritics and accents from text

1. Type or paste into the **Text** field. The **Result** updates with every keystroke, and the sample text that loads at the start shows what happens to Czech, German, Polish, Portuguese, Ukrainian, Russian and Greek letters at once.
2. Leave **Language of the text** on **Detect automatically**. The tool recognizes the language from its distinctive letters, ř and ů for Czech, ł and ż for Polish, ß for German, ø for Danish and Norwegian, ї and є for Ukrainian, and the option then reads, for example, **Automatically: Czech**. Pick a language yourself when the text is short or mixed.
3. Under **Rules** choose the convention or standard for that language. Latin script languages use **Simple: one letter for one letter (ä → a, ß → ss, ł → l)** unless the language has its own spelling rule, Cyrillic and Greek languages list their standards (see below).
4. **Copy** puts the result on the clipboard. **Clear** empties the field, **Try an example** loads the sample text again.

**Letter case** keeps the case of the original by default. A capital letter that becomes two letters is written the way names are: Щ becomes Shch, Ä becomes Ae, but a word written in capitals stays in capitals, so ЩУКА becomes SHCHUKA and MÜNCHEN becomes MUENCHEN. Choose **lowercase** or **UPPERCASE** to force one case.

Below the fields you see the number of **Characters** in the text and how many were **Changed**. The sample text has 66 characters, of which 29 change. Letters of a script the tool has no rules for, such as Chinese, Japanese, Thai or Devanagari, are left as they are, get a dotted underline, and a note counts them under **Left as is**.

## Letters that a simple accent remover gets wrong

Most online accent removers decompose each letter into a base letter plus a mark and drop the mark. That handles é, ñ, ő or Vietnamese ệ, but it does nothing for letters that are not a base letter with a mark attached: Polish ł, Croatian and Vietnamese đ, Danish ø and æ, German ß, Icelandic þ and ð, Turkish dotless ı and the ligature œ. Such tools return Łódź as Łodz and Straße as Straße. Here these letters have their own replacements (ł → l, đ → d, ø → o, æ → ae, ß → ss, þ → th, ð → d, ı → i, œ → oe), and the replacement is repeated until nothing non-Latin is left, so even ǿ ends as o.

Some languages have a spelling convention for writing their letters without diacritics, and a German or a Dane expects it:

| Language | Rules | Example |
| --- | --- | --- |
| German | **German spelling (ä → ae, ö → oe, ü → ue, ß → ss)** | Straße Müller → Strasse Mueller |
| Danish, Norwegian | **Danish and Norwegian spelling (æ → ae, ø → oe, å → aa)** | Æbleskiver på Ærø → Aebleskiver paa Aeroe |
| Icelandic | **Icelandic spelling (þ → th, ð → d, æ → ae)** | Þórður → Thordur |
| Croatian, Bosnian, Serbian Latin | **đ → dj (Croatian, Bosnian, Serbian Latin)** | Đurđevac → Djurdjevac |

Each of these languages also offers **Simple**, which gives Strasse Muller and Aebleskiver pa Aero. Czech, Slovak, Polish, Hungarian, Romanian, Turkish, Vietnamese, French, Spanish, Portuguese and the Baltic languages have no such convention, so their letters simply lose the marks: Zażółć gęślą jaźń becomes Zazolc gesla jazn, Đường phố Hà Nội becomes Duong pho Ha Noi, İstanbul ılık becomes Istanbul ilik.

## Cyrillic to Latin: Russian, Ukrainian, Bulgarian, Serbian and Macedonian standards

There is no single way to write Cyrillic in Latin letters. A Russian passport, a library catalogue and an English newspaper spell the same name differently, and a transliteration tool that does not say which system it uses is of little help when you fill in a form. Under **Rules** you choose the standard by name:

| Language | Rules | Щербаков Юрий / Київ / София |
| --- | --- | --- |
| Russian | **Passport: ICAO Doc 9303 (Russian MVD order, 2020)** | Shcherbakov Iurii |
| Russian | **BGN/PCGN 1947 (English usage)** | Shcherbakov Yuriy |
| Russian | **ISO 9:1995 (scientific, one letter for one letter)** | Ŝerbakov Ûrij |
| Russian | **GOST 7.79-2000, system B (ASCII)** | Shherbakov Yurij |
| Ukrainian | **Passport: Cabinet resolution 55 (2010)** | Kyiv |
| Ukrainian | **BGN/PCGN 1965 (English usage)** | Kyyiv |
| Ukrainian | ISO 9:1995 | Kiïv |
| Bulgarian | **Transliteration Act 2009 (official)** | Sofia |
| Serbian | **Serbian Latin alphabet (č, ć, đ, š, ž)** | Ђорђе Џаџић → Đorđe Džadžić |
| Serbian | **ASCII only (đ → dj, č → c, š → s, ž → z)** | Djordje Dzadzic |
| Macedonian | **Macedonian Latin alphabet (gj, kj, č, š, ž)** | Ѓорѓи Ѕвезда → Gjorgji Dzvezda |

The passport systems are the ones a visitor usually needs. Russian international passports have used the ICAO Doc 9303 table since 2014, confirmed by the Ministry of Internal Affairs order of 2020: ё → e, й → i, ю → iu, я → ia, ъ → ie and the soft sign is dropped, so Ельцин is Eltsin and Татьяна is Tatiana. Ukraine’s Cabinet resolution 55 of 2010 is used for passports and place names: є, ї, й, ю and я are ye, yi, y, yu, ya at the start of a word and ie, i, i, iu, ia elsewhere, зг is zgh so that it is not read as ж, and the soft sign and apostrophe disappear (Єременко → Yeremenko, Згорани → Zghorany, Запоріжжя → Zaporizhzhia, п’ять → piat). Bulgaria’s Transliteration Act of 2009 writes щ as sht, ъ as a and ю as yu, with two exceptions the tool knows: a final -ия becomes -ia (Шуменския → Shumenskia) and България is Bulgaria. Serbian and Macedonian have official Latin alphabets with č, š, ž, đ, so there the question is only whether you want the diacritics or plain ASCII.

[ISO 9](https://en.wikipedia.org/wiki/ISO_9) is the scientific system used by libraries and in German-speaking countries: one Cyrillic letter is always one Latin letter, ж is ž, х is h, щ is ŝ, and the hard and soft signs become the modifier primes ʺ and ʹ, which makes the result reversible but not pronounceable for an English reader. [BGN/PCGN](https://en.wikipedia.org/wiki/BGN/PCGN_romanization_of_Russian) is what the US and UK governments and most English media use: ж is zh, х is kh, е is ye at the start of a word and after a vowel. GOST 7.79-2000 system B is the ASCII variant found in Russian URLs and the Yandex transliterator: х is x, ц is c or cz, ы is y followed by a backtick.

A Cyrillic letter that does not belong to the chosen standard, for example a Serbian ђ in a Russian text, is converted with a general table and labelled so in the **What was changed** list. And if your text is mostly Latin with a few Cyrillic words, the language detection follows the majority, so switch **Language of the text** to the Cyrillic language to get the standard applied: the sample text converts Київ as Kiyiv under the general table and as Kyiv in Ukrainian mode.

## Greek to Latin: ELOT 743 and Greeklish

Greek passports and road signs follow **ELOT 743 / ISO 843 (passports)**: β is v, η is i, χ is ch, and the combinations have rules of their own. γγ becomes ng and γκ becomes gk, μπ is b at the start of a word and mp inside it, ου is ou, and αυ, ευ, ηυ become av, ev, iv before a vowel or a voiced consonant and af, ef, if before a voiceless one. So Γιώργος is Giorgos, Μπάμπης is Bampis, Ευαγγελία is Evangelia, Ναύπλιο is Nafplio and Αθήνα is Athina. Accents are dropped, which is what the passport does as well.

**Greeklish (η → h, θ → th, ξ → ks, χ → x, ω → w)** is the informal spelling Greeks use in chats and text messages, where letters are chosen by shape and keyboard rather than sound: Γιώργος becomes Giwrgos, Ξέρω becomes Kserw, Χαρά becomes Xara.

## Remove Arabic and Hebrew diacritics

In Arabic the vowel marks are optional and most text is written without them. When you paste vocalized text, for example from a dictionary or a children’s book, choose Arabic and **Remove tashkeel (harakat, shadda, sukun, tanwin, tatweel)**: مُحَمَّد becomes محمد, and the tatweel used to stretch words is removed as well. For Hebrew, **Remove niqqud and cantillation marks** takes the vowel points, cantillation, meteg and rafe out of שָׁלוֹם and leaves שלום. The letters are never romanized, because without the vowels a correct Latin spelling of Arabic or Hebrew cannot be derived from the text alone.

## Slugs and file names without diacritics

Set **Output** to **Slug (URL)** to get a lowercase string with only a to z, digits and a **Separator** (`-` or `_`): Příliš žluťoučký kůň becomes prilis-zlutoucky-kun, Щербаков Юрий becomes shcherbakov-iurii. Apostrophes and quotation marks are dropped rather than replaced (don’t becomes dont), every other run of punctuation or spaces becomes one separator, and there is no separator at the ends. A slug contains no characters that would need percent encoding, so it goes into a URL as it is. If you need to encode a whole address with parameters instead, use the [URL encoder and decoder](https://acrafto.com/en/url-encoder-decoder/).

**File name** keeps the text readable but safe for every operating system: the characters `\ / : * ? " < > |` and control characters, which Windows refuses in a file name, are removed, **Spaces** become `_` or `-` or stay, repeated separators collapse, the extension after the last dot stays, and dots and spaces at the ends are trimmed. Zpráva o činnosti: leden/2026?.docx becomes Zprava\_o\_cinnosti\_leden2026.docx. This is the mode for renaming files before uploading them to a server, a cloud drive or a git repository, where accented names break scripts and links.

For a slug in camelCase, snake\_case or kebab-case of English words, the [case converter](https://acrafto.com/en/case-converter/) does the rest, and the [word and character counter](https://acrafto.com/en/text-word-character-counter/) tells you the length. Both live in the [Text tools](https://acrafto.com/en/text/) category together with this one.

## What was changed: check every replacement

Every replaced character is highlighted in the result. Hover over it to see the original, the replacement and the rule, for example `ř → r · diacritic removed` or `Щ → Shch · Passport: ICAO Doc 9303`. A character that was removed, such as a soft sign or a tashkeel mark, is shown as a thin dotted mark. The **What was changed** list under the result groups the replacements with their counts and rules, so you can check in seconds that a surname was transliterated the way your passport spells it, or that an ä became ae and not a. The list is sorted by frequency, so the letters that matter most come first.

Nothing you paste leaves your browser. The conversion runs in the page with the standard Unicode functions of JavaScript and no server, so names, addresses and whole documents stay on your computer.

### How do I remove diacritics in Excel or Google Sheets?

Neither Excel nor Google Sheets has a built-in function for it; the usual answers are a long SUBSTITUTE chain, a VBA macro or a Power Query step. The quickest way is to copy the column, paste it into the **Text** field here, copy the **Result** and paste it back: line breaks are kept, so the rows stay aligned.

### How do I remove accents in Python or JavaScript?

In Python, `unicodedata.normalize('NFKD', s).encode('ascii', 'ignore').decode()` removes the marks; in JavaScript, `s.normalize('NFD').replace(/\p{M}/gu, '')` does the same. Both methods silently drop or keep ł, ø, đ, ß and æ, because those letters have no decomposition. Python's `unidecode` package and this tool handle them.

### Which transliteration does my passport use?

Russia: ICAO Doc 9303 since 2014 (**Passport: ICAO Doc 9303**). Ukraine: Cabinet resolution 55 of 2010. Bulgaria: the Transliteration Act of 2009, which BGN/PCGN adopted in 2013 as well. Greece: ELOT 743. Serbia and North Macedonia print both alphabets. Check the spelling against your existing documents, because an older passport may use an older system, and airlines match tickets to the passport letter by letter.

### What is the difference between transliteration and translation?

Transliteration rewrites letters, translation rewrites meaning. Москва transliterated is Moskva, translated it is Moscow. This tool only transliterates, so names, addresses and codes stay the same words in a different alphabet.

### Why does Київ come out as Kiyiv in the sample text?

The sample is mostly Latin, so **Detect automatically** applies Latin rules and converts the few Cyrillic letters with the general table. Choose Ukrainian under **Language of the text** and the passport standard gives Kyiv.

## Other languages

- Čeština (cs): [Odstranění diakritiky](https://acrafto.com/cs/odstraneni-diakritiky/) ([Markdown](https://acrafto.com/cs/odstraneni-diakritiky/index.md))
- Slovenčina (sk): [Odstránenie diakritiky](https://acrafto.com/sk/odstranenie-diakritiky/) ([Markdown](https://acrafto.com/sk/odstranenie-diakritiky/index.md))
- Deutsch (de): [Umlaute ersetzen, Akzente entfernen](https://acrafto.com/de/umlaute-ersetzen-akzente-entfernen/) ([Markdown](https://acrafto.com/de/umlaute-ersetzen-akzente-entfernen/index.md))
- Français (fr): [Supprimer les accents](https://acrafto.com/fr/supprimer-accents-en-ligne/) ([Markdown](https://acrafto.com/fr/supprimer-accents-en-ligne/index.md))
- Español (es): [Quitar acentos y transliterar](https://acrafto.com/es/quitar-acentos-y-tildes-online/) ([Markdown](https://acrafto.com/es/quitar-acentos-y-tildes-online/index.md))
- Italiano (it): [Rimuovere accenti e traslitterare](https://acrafto.com/it/rimuovere-accenti-traslitterazione/) ([Markdown](https://acrafto.com/it/rimuovere-accenti-traslitterazione/index.md))
- Português (pt): [Remover acentos e transliterar](https://acrafto.com/pt/remover-acentos-transliteracao-online/) ([Markdown](https://acrafto.com/pt/remover-acentos-transliteracao-online/index.md))
- Nederlands (nl): [Accenten verwijderen uit tekst](https://acrafto.com/nl/accenten-verwijderen-uit-tekst/) ([Markdown](https://acrafto.com/nl/accenten-verwijderen-uit-tekst/index.md))
- Polski (pl): [Usuwanie polskich znaków](https://acrafto.com/pl/usuwanie-polskich-znakow/) ([Markdown](https://acrafto.com/pl/usuwanie-polskich-znakow/index.md))
- Română (ro): [Eliminare diacritice online](https://acrafto.com/ro/eliminare-diacritice-online/) ([Markdown](https://acrafto.com/ro/eliminare-diacritice-online/index.md))
- Magyar (hu): [Ékezetek eltávolítása](https://acrafto.com/hu/ekezetek-eltavolitasa/) ([Markdown](https://acrafto.com/hu/ekezetek-eltavolitasa/index.md))
- Ελληνικά (el): [Μετατροπή ελληνικών σε Greeklish](https://acrafto.com/el/metatropi-ellinikon-se-latinika-greeklish/) ([Markdown](https://acrafto.com/el/metatropi-ellinikon-se-latinika-greeklish/index.md))
- Български (bg): [Кирилица на латиница](https://acrafto.com/bg/kirilitsa-na-latinitsa-transliteratsiya-onlain/) ([Markdown](https://acrafto.com/bg/kirilitsa-na-latinitsa-transliteratsiya-onlain/index.md))
- Hrvatski (hr): [Uklanjanje kvačica i transliteracija](https://acrafto.com/hr/uklanjanje-kvacica-dijakritika/) ([Markdown](https://acrafto.com/hr/uklanjanje-kvacica-dijakritika/index.md))
- Slovenščina (sl): [Odstranjevanje šumnikov](https://acrafto.com/sl/odstranjevanje-sumnikov/) ([Markdown](https://acrafto.com/sl/odstranjevanje-sumnikov/index.md))
- Eesti (et): [Täpitähtede eemaldamine](https://acrafto.com/et/tapitahtede-eemaldamine/) ([Markdown](https://acrafto.com/et/tapitahtede-eemaldamine/index.md))
- Latviešu (lv): [Diakritisko zīmju noņemšana](https://acrafto.com/lv/diakritisko-zimju-nonemsana/) ([Markdown](https://acrafto.com/lv/diakritisko-zimju-nonemsana/index.md))
- Lietuvių (lt): [Diakritikų šalinimas ir transliteracija](https://acrafto.com/lt/lietuviskos-raides-i-lotyniskas/) ([Markdown](https://acrafto.com/lt/lietuviskos-raides-i-lotyniskas/index.md))
- Svenska (sv): [Ta bort accenter](https://acrafto.com/sv/ta-bort-accenter-translitterering/) ([Markdown](https://acrafto.com/sv/ta-bort-accenter-translitterering/index.md))
- Dansk (da): [Fjern diakritiske tegn og accenter](https://acrafto.com/da/fjern-diakritiske-tegn/) ([Markdown](https://acrafto.com/da/fjern-diakritiske-tegn/index.md))
- Suomi (fi): [Ääkköset pois ja translitterointi](https://acrafto.com/fi/poista-diakriitit-translitterointi/) ([Markdown](https://acrafto.com/fi/poista-diakriitit-translitterointi/index.md))
- Norsk (no): [Fjern diakritiske tegn](https://acrafto.com/no/fjern-diakritiske-tegn-erstatt-aeoeaa/) ([Markdown](https://acrafto.com/no/fjern-diakritiske-tegn-erstatt-aeoeaa/index.md))
- Українська (uk): [Транслітерація прізвища](https://acrafto.com/uk/transliteratsiia-prizvyshcha-dlia-zakordonnoho-pasporta/) ([Markdown](https://acrafto.com/uk/transliteratsiia-prizvyshcha-dlia-zakordonnoho-pasporta/index.md))
- Русский (ru): [Транслитерация для загранпаспорта](https://acrafto.com/ru/transliteratsiya-dlya-zagranpasporta-onlayn/) ([Markdown](https://acrafto.com/ru/transliteratsiya-dlya-zagranpasporta-onlayn/index.md))
- Српски (sr): [Ćirilica u latinicu](https://acrafto.com/sr/cirilica-u-latinicu/) ([Markdown](https://acrafto.com/sr/cirilica-u-latinicu/index.md))
- Македонски (mk): [Кирилица во латиница](https://acrafto.com/mk/kirilica-vo-latinica/) ([Markdown](https://acrafto.com/mk/kirilica-vo-latinica/index.md))
- Bosanski (bs): [Ćirilica u latinicu](https://acrafto.com/bs/cirilica-u-latinicu/) ([Markdown](https://acrafto.com/bs/cirilica-u-latinicu/index.md))
- Shqip (sq): [Heqja e diakritikëve](https://acrafto.com/sq/heqja-e-diakritikeve-online/) ([Markdown](https://acrafto.com/sq/heqja-e-diakritikeve-online/index.md))
- Türkçe (tr): [Türkçe karakter dönüştürücü](https://acrafto.com/tr/turkce-karakter-donusturucu/) ([Markdown](https://acrafto.com/tr/turkce-karakter-donusturucu/index.md))
- 日本語 (ja): [アクセント記号除去](https://acrafto.com/ja/remove-diacritics-transliterate/) ([Markdown](https://acrafto.com/ja/remove-diacritics-transliterate/index.md))
- 한국어 (ko): [발음 구별 기호 제거](https://acrafto.com/ko/remove-diacritics-cyrillic-to-latin/) ([Markdown](https://acrafto.com/ko/remove-diacritics-cyrillic-to-latin/index.md))
- العربية (ar): [إزالة التشكيل من النص](https://acrafto.com/ar/remove-tashkeel-transliterate/) ([Markdown](https://acrafto.com/ar/remove-tashkeel-transliterate/index.md))
- हिन्दी (hi): [Diacritics हटाएँ और Transliterate करें](https://acrafto.com/hi/remove-diacritics-transliterate/) ([Markdown](https://acrafto.com/hi/remove-diacritics-transliterate/index.md))
- Bahasa Indonesia (id): [Hapus diakritik dan transliterasi](https://acrafto.com/id/hapus-diakritik-transliterasi-teks/) ([Markdown](https://acrafto.com/id/hapus-diakritik-transliterasi-teks/index.md))
- Tiếng Việt (vi): [Bỏ dấu tiếng Việt](https://acrafto.com/vi/bo-dau-tieng-viet/) ([Markdown](https://acrafto.com/vi/bo-dau-tieng-viet/index.md))
- ไทย (th): [ลบเครื่องหมายกำกับเสียงและถอดอักษร](https://acrafto.com/th/remove-diacritics-transliterate/) ([Markdown](https://acrafto.com/th/remove-diacritics-transliterate/index.md))
- עברית (he): [הסרת ניקוד ותעתיק](https://acrafto.com/he/remove-diacritics-niqqud-transliterate/) ([Markdown](https://acrafto.com/he/remove-diacritics-niqqud-transliterate/index.md))
