I am looking for a table for converting German diacritics into their non-diacritic character combination equivalent. For instance that table would indicate that the umlaut ü may be converted to ue).

Does such a table exist, and if so, could someone share a link to it?

  • 6
    Note: "it may be converted", but it's definitely wrong (and ugly) to do it in German.
    – splattne
    Commented Aug 7, 2012 at 10:02
  • 1
    @splattne: it's for use in URLs, see webmasters.stackexchange.com/questions/33032/…. In that question I've given an example showing the Bundesliga using that approach, so I'm thinking it might not be that bad if such big companies are doing it.
    – Max
    Commented Aug 7, 2012 at 11:46
  • 1
    you're right, in URLs and Internet domain name it's absolutely okay.
    – splattne
    Commented Aug 7, 2012 at 17:49
  • 3
    See also german.stackexchange.com/questions/4994/… German ID-cards use converted names in the machine readable zone.
    – knut
    Commented Aug 7, 2012 at 18:10

4 Answers 4

Umlaut Ersatz
ä ae
ö oe
ü ue
Ä Ae
Ö Oe
Ü Ue
ß ss (or SZ)

The SZ is only for words in capitals (and I think for old spelling).

Für LaTeX-Nutzer gibt es auch die Umschreibung "a, "o, "u, bzw. "A, "O, "U (bzw. "a, "o, "u, bzw. "A, "O, "U)

You are also asking for a kind of official link.

Maybe Din 5007 helps a bit. That's a norm for sorting. An "ä" is either treated like an "a" (variant 1 of DIN 5007) or like an "ae" (variant 2).

  • 2
    We should add that if the whole word is in capitals we may convert like AE, UE, ...
    – Takkat
    Commented Aug 6, 2012 at 21:37
  • 4
    "SZ" for "ß" is old and obsolte. Always replace "ß" by "SS" if the word must be written in capitals. In swizzerland you don't use "ß". The swizz name for the letter "ß" is "Doppel s". In Germany "ß" is called "esszet" and in Austria "scharfes s". Commented Aug 9, 2012 at 6:24
  • 5
    There is in meantime also a capital-ß. It's unicode U+1E9E
    – knut
    Commented Aug 10, 2012 at 19:04
  • 5
    @HubertSchölnast: In Northern Germany it is called "eszett". In Southern Germany, as in Austria, it's "scharfes s".
    – celtschk
    Commented Aug 13, 2012 at 13:52
  • 5
    @starblue: AFAIK before the spelling reform, you were supposed to use SZ in cases where there's another word which is written with ss. For example, you'd capitalize "in Maßen" as "IN MASZEN" because there's also "in Massen" which gets capitalized as "IN MASSEN".
    – celtschk
    Commented Aug 13, 2012 at 13:56

For another official link I recommend the ICU project (International Components for Unicode). It basically is a database for all(?) languages/scripts and how to convert, sort and compare words to be used by computer programs.

They have a ICU Transform Demonstration which demonstrates the transform rules. For German, you can start with "Latin" as "Source 1" and "ASCII" as "Target 1". The example "Names (Variant)" is very impressive as well as it can transliterate Korean(?), Cyrillic, Greek to Latin.

  • 1
    I think the Latin->ASCII transform you describe with convert "ä", "ö", and "ü" to "a", "o", and "u", respectively, not "ae", "oe", and "ue".
    – Rob
    Commented Dec 20, 2014 at 19:55
  • 3
    This was fixed in the latest release of ICU 60, you can now use the de-ASCII transform to convert german text into ASCII.
    – ausi
    Commented Nov 7, 2017 at 13:21

In addition to Knuts answer:

In July 2017 the "Rat für deutsche Rechtschreibung" declared, that it is allowed to use the Capital ẞ as well as SS when capitalizing ß.

Therefore a capitalized ß results in SS or .

Please pay attention, that a lot of fonts do not contain this letter.


If you are looking for replace the German Umlaute with cleverly respecting the case, use this (opensource, happy to share, all by me) in JavaScript:

let umlautMap = {
  '\u00dc': 'UE',
  '\u00c4': 'AE',
  '\u00d6': 'OE',
  '\u00fc': 'ue',
  '\u00e4': 'ae',
  '\u00f6': 'oe',
  '\u00df': 'ss',

function replaceUmlaute(str) {
  return str
    .replace(/[\u00dc|\u00c4|\u00d6][a-z]/g, (a) => {
      var big = umlautMap[a.slice(0, 1)];
      return big.charAt(0) + big.charAt(1).toLowerCase() + a.slice(1);
    .replace(new RegExp('['+Object.keys(umlautMap).join('|')+']',"g"),
      (a) => umlautMap[a]

It will:

  • Übung -> Uebung
  • üben -> ueben
  • einüben -> einueben
  • and the same for Ä, Ö
  • and simple ß -> ss
  • 2
    It would help if you added which language that's in
    – PiedPiper
    Commented Jan 24, 2019 at 13:30
  • Thank you for a nice code! Couple adjustments I did - the pipe (|) inside [] character group is unnecessary, and it would match |u in Üb|ung erroneously. And also, there's now a capital ẞ.
    – Gman
    Commented Jan 23, 2023 at 8:53

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.