Punycode email domains, and how to use them safely

Some of the domains you can pick on this site are not written in plain a–z letters. They contain accented or non-Latin characters — münchen.de, café.com, пошта.укр. Under the hood the mail system does not see those pretty letters at all: it sees an ASCII-only form that starts with xn--. That form is called Punycode, and this page explains exactly what it is, shows you both forms of any domain side by side, and points out the one place where internationalized domains are genuinely worth being careful.

Short answer first: this generator handles punycode domains correctly. Whatever the drop-down shows you, the address we create is a real, working mailbox. When a domain is internationalized, we also display its xn-- form so you can copy the version that every system understands.

What is a punycode domain?

The Domain Name System was built in an era when host names were ASCII only: the 26 Latin letters, the digits 0–9, and the hyphen. That rule never went away. Yet most of the world does not write in that alphabet, so in 2003 the standards added Internationalized Domain Names (IDN): you can register пошта.укр or 日本語.jp, but before the name touches DNS it is transparently translated into a plain-ASCII stand-in.

That translation is Punycode (RFC 3492). Each label that contains non-ASCII characters is encoded and prefixed with xn--. The prefix is a flag that says “decode me back into Unicode before showing me to a person.” A label that is already plain ASCII is left untouched — there is no xn-- and nothing to convert.

münchen.de
xn--mnchen-3ya.de
café.com
xn--caf-dma.com
köln.de
xn--kln-sna.de
пошта.укр
xn--80a1acn3a.xn--j1amh
example.com
example.com (plain ASCII — no punycode)

Notice пошта.укр: both labels are non-Latin, so both get an xn-- form — the name and the top-level domain each convert independently. Punycode always works label by label, split on the dots.

What you see versus what the mail system sees

An email address has two halves: the local part before the @ and the domain after it. Punycode only ever touches the domain. So an address on an internationalized domain has, in effect, two spellings that point at exactly the same mailbox:

Human form
you@café.com
Wire form
you@xn--caf-dma.com

These are not two different accounts. They are one address written two ways, the same way 2 and II are one number. Mail servers, DNS lookups and spam filters work on the xn-- form; your address book and the pretty label in a browser use the Unicode form. This generator shows you the human form for readability and the xn-- form for copy-paste, precisely so you are never guessing which one to give out.

Can a punycode domain ever misbehave?

Delivery itself is reliable — the encoding is a solved, standardized problem. Where trouble creeps in is at the edges, in software that was written as if every address were plain ASCII. The realistic failure modes are:

💡
The safe move in all three cases is the same: use the xn-- form. Because it is plain ASCII, it survives any form field, any encoding, and any keyboard, and it delivers to the identical mailbox. If a site rejects you@café.com, paste you@xn--caf-dma.com instead — copy it straight from the box above, or from the notice this site shows next to an internationalized address.

The look-alike trap — where you really must pay attention

This is the one part of internationalized domains that is not just trivia. Different alphabets contain letters that are drawn identically to Latin ones. The Cyrillic а, the Greek ο and the Latin a/o can look pixel-for-pixel the same in most fonts, yet they are different characters with different Punycode. Scammers exploit exactly this: they register a domain that looks like a brand you trust, then rely on your eye not catching the swap. It is called a homograph attack.

аpple.com (Cyrillic а)
xn--pple-43d.com
gооgle.com (Cyrillic о×2)
xn--ggle-55da.com
pаypаl.com (Cyrillic а×2)
xn--pypl-53dc.com

Every domain on the left reads like a household name, but none of them is. Paste any of them into the converter above and the xn-- form gives the game away instantly — a genuine apple.com is already plain ASCII and would show no xn-- at all.

⚠️
How to protect yourself. If an email or link claims to be from a company you know but the address turns into an unexpected xn-- string, treat it as suspicious — a real, established brand almost always uses a plain-ASCII domain. This is also why web browsers deliberately display the raw xn-- form in the address bar when a domain mixes scripts: it strips off the friendly mask so a fake cannot hide behind it. Seeing xn-- is not itself bad; being surprised by it is the warning sign.

How this generator handles it

When you pick an internationalized domain here, three things happen so nothing is ambiguous:

In other words, you get the readable name for yourself and the bullet-proof xn-- name for anywhere that might be picky — without having to run the conversion in your head.

💡
Putting the address on a poster or a card? Encode the xn-- form, not the pretty one — scanners and mail apps agree on ASCII, while the Unicode spelling depends on the app. You can build the code here: QR code email generator.

Frequently asked questions

Do I have to do anything special to receive mail on a punycode domain?

No. Generate the address, hand it out, and watch the inbox. If the other side rejects the accented spelling, give them the xn-- form instead — it reaches the same mailbox.

Are the Unicode and xn-- forms two different addresses?

No. They are one address written two ways. Mail sent to either arrives in the same place.

Why does my browser show xn-- instead of the nice name?

As anti-spoofing protection. When a domain mixes alphabets in a way that could imitate another site, browsers show the unambiguous xn-- form so a look-alike cannot disguise itself.

Is a domain with xn-- automatically dangerous?

Not at all — plenty of legitimate businesses run internationalized domains. The danger is only when a domain pretends to be a well-known ASCII brand by swapping in look-alike letters. Judge it by whether the real name you expected should have needed encoding at all.

Generate an email address →

← Back to all docs