Punycode Converter
Unicode domains to xn-- and back, with the script of every label and look-alike warnings.
Try before you buy.
- Free preview: every count and the verdict of each name that needs a look in full, with the first rows of the conversion table (up to 10).
- Locked until you unlock it: download and copy.
- Unlock: Pro pass, ₹179 for 30 days or ₹79 for 1 week, a one-time payment that never renews. Unlock: Pro pass, $5.99 for 30 days or $2.99 for 1 week, a one-time payment that never renews.
Ways to unlock shows how to get the full result.
Printing this result is locked in the free preview.
Names to convert
Unicode names become Punycode (xn--…), Punycode becomes Unicode, and every name gets a look-alike check. Up to 5,000 lines. Your browser does all of it; nothing is sent anywhere.
Look-alike and validity checks
Paste names to convert and check them.
Conversions
| Line | Input | Unicode | Punycode (ASCII) | Scripts | Check |
|---|
The copied lists keep one line per name in your order; a name that can’t be converted leaves its line empty. To see how a domain is set up, try the DNS Lookup or the WHOIS Lookup.
Locked in the free preview. Opens the ways to unlock this result.
Locked in the free preview. Batch runs unlock with a pass.
Locked in the free preview. Query results unlock with a pass.
About the Punycode Converter
International domain names such as bücher.de or 例え.テスト travel through DNS in an ASCII form, the A-label: xn-- followed by the name in Punycode (xn--bcher-kva.de). Paste a list of domains, e-mail addresses or URLs, one per line, and this page converts each one both ways: Unicode names to Punycode with your browser’s own IDNA processing, and xn-- labels back to Unicode, checking that each converts back to exactly the same label.
Every name also gets the checks that matter when a link looks wrong or before you register a name: the script of each label, the UTS #39 look-alike rules (a Cyrillic а in аpple.com, or аррӏе.com written entirely in Cyrillic letters), characters that IDNA2008 registries refuse, invisible characters, ß-style characters that older software turns into a different name, and the DNS length and hyphen rules.
Without a pass you see a free preview: every count and the verdict of each name that needs a look in full, with the first rows of the conversion table. The whole table, copying the Punycode and Unicode lists and the CSV unlock with a Pro pass.
How to use it
- Paste the names into the box, one per line: domains (
bücher.de), Punycode (xn--80ak6aa92e.com), e-mail addresses (user@münchen.de) or URLs (only the host is converted). Or press Example list. - Read the counts and the list under them: every name with a look-alike risk, something to check or a problem is listed there, the most serious first, with its verdict.
- Look up a name in the Conversions table: its Unicode and Punycode forms (the one that changed in bold), the scripts of its labels, and under Check every finding with the characters to look at.
- With a pass, or once this result is unlocked, copy the Punycode or the Unicode list (one line per name, in your order) or download the whole report as CSV; the free preview shows the first rows of the table.
Examples
bücher.de
xn--bcher-kva.de · single script: Latin
xn--80ak6aa92e.com
аррӏе.com · look-alike risk: Cyrillic letters that all look Latin (it reads as “apple”)
Five letters, all Cyrillic (а U+0430, р U+0440 twice, ӏ U+04CF, е U+0435), that look like Latin ones. Chrome shows such a label as Punycode unless the top-level domain is one it allows for that script: for Cyrillic, a Cyrillic one such as .рф, or one such as .ru where many Cyrillic names are registered.
аpple.com
xn--pple-43d.com · look-alike risk: mixes Cyrillic and Latin in one label
faß.de
xn--fa-hia.de · check: ß can lead to another name (fass.de)
IDNA2008 and the URL Standard that browsers follow keep ß; software still on the deprecated Transitional processing of UTS #46 writes “ss”, which is a different domain.
例え.テスト
xn--r8jz45g.xn--zckzah · single script: Japanese
xn--a.com
Invalid: “xn--a” decodes to the control character U+0080 (a “Fake A-label”)
https://mybank.example@phish.example/login
Check: a user name before @ hides the host · browsers go to phish.example
Everything before the last @ of a web address is a user name. A backslash plays the same trick: https://phish.example\@mybank.example/ goes to phish.example too.
Common uses
- Checking a link in an e-mail or message whose domain looks familiar but feels wrong, before you sign in: look-alike letters, a user name before @, a backslash or a percent-encoded host.
- Converting a list of international domains or e-mail addresses for a system that only accepts ASCII (mail servers, certificate requests, DNS zone files, firewalls, ad and analytics filters).
- Turning xn-- names from logs, certificates and DNS records back into what people actually read.
- Testing an international name before you register it: scripts, IDNA2008 characters, hyphens and length.
How the conversion works
To ASCII, the page hands each host to your browser’s URL parser, which applies Unicode’s IDNA processing (UTS #46) the way the URL Standard asks: Nontransitional processing, with the Bidi rule and the joiner rules checked. That maps the name first (capital letters to lower case, full-width letters to normal ones, invisible characters such as the soft hyphen dropped) and then writes each international label as xn-- and its Punycode (RFC 3492). So the result is exactly where a link to that name goes in this browser.
To Unicode, each xn-- label is decoded with RFC 3492 and converted back: RFC 5891 §5.3 asks an application that shows names to reject a label that does not come back the same. The URL Standard has browsers lower-case an all-ASCII host without checking its xn-- labels, so a link can carry what RFC 5890 calls a Fake A-label: one that is not valid Punycode, decodes to plain ASCII or to a character IDNA does not allow, or is not the form the browser itself would write. This page names the reason.
Look-alike checks (UTS #39)
UTS #39, Unicode Security Mechanisms defines how to tell whether a string mixes scripts: each character’s scripts (with Japanese, Korean and Han-with-Bopomofo treated as one writing system each) are intersected; when nothing is left, the label is mixed-script. Its restriction levels grade the mix: ASCII-Only, Single Script, Highly Restrictive (Latin with Chinese, Japanese or Korean), Moderately Restrictive (Latin with one other Recommended script of UAX #31, except Cyrillic and Greek) and Minimally Restrictive (anything else). This page gives each label its level and flags:
- Mixed scripts at the lowest level as a look-alike risk:
аpple(Cyrillic а and Latin pple) orgοοgle(two Greek omicrons). - Whole-script look-alikes: a label in one non-Latin script whose letters all look Latin, such as Cyrillic
аррӏе. It reads as the ASCII name you would expect, found by replacing each character with its look-alike from Unicode’s confusables data. Under a top-level domain of the same script (.рф) it is only something to check, since names there are expected to be Cyrillic. - Latin with another script at the Moderately Restrictive level as something to check.
Browsers apply rules of their own. Chrome decides for each label whether to show Unicode or Punycode; its checks include a script-mixing check built on UTS #39’s Highly Restrictive profile, under which Latin, Cyrillic and Greek never mix and ASCII letters mix only with Chinese, Japanese or Korean characters (Chromium’s IDN display policy).
What browsers accept and registries refuse
Browsers convert more than registries allow. IDNA2008 (RFC 5892) derives which characters a domain may hold: letters, digits and marks, with listed exceptions; symbols and emoji are not allowed, so i❤.ws converts in a browser but is refused wherever IDNA2008 is the rule. A few characters are allowed only in context (a middle dot only between two l’s, as in Catalan l·l). The page derives each character’s status with RFC 5892’s rules and flags the rest.
Four deviation characters — ß, the Greek final ς, and the zero width joiner and non-joiner — are kept under IDNA2008 and the URL Standard that browsers follow, but changed by software that still uses UTS #46’s deprecated Transitional processing (ß → ss): faß.de and fass.de are different domains, and such software sends you to the second.
The ASCII form is also checked against DNS: a label holds at most 63 characters and a name 253 (RFC 1035 §2.3.4, 255 octets on the wire); host names can’t start or end a label with a hyphen, and hyphens in the 3rd and 4th places are reserved for forms such as xn-- (RFC 5890 §2.3.1).
E-mail addresses and URLs
Only the domain of an e-mail address has an ASCII form. A local part with non-ASCII characters (имя@пример.рф) can only be delivered when every mail server on the way supports SMTPUTF8 (RFC 6531), and RFC 6530 discourages Punycode in the domain of such an address, so keep it in Unicode. In a URL only the host is converted; browsers percent-encode non-ASCII characters in the path and query themselves.
A web address can also hide where it leads without a single international character, and the page flags these too, naming the host the browser goes to (URL Standard):
- What comes before the last
@is a user name, not the site:https://mybank.example@phish.example/goes to phish.example. - A backslash counts as a slash:
https://phish.example\@mybank.example/goes to phish.example. - Percent-encoded characters in the host are decoded first:
https://ex%61mple.com/goes to example.com.
Limitations
- The ASCII form comes from your browser’s own IDNA processing, which follows the Unicode version it ships with; an older browser may refuse a recently added character, or treat a rare one differently.
- The look-alike check knows the characters that look like ASCII letters and digits (from Unicode’s confusables data). Look-alikes between two non-Latin scripts and typos that stay in ASCII (rn for m, 1 for l) are not flagged; the Suspicious Link Checker compares links with well-known names.
- The IDNA2008 status of each character is derived with the rules of RFC 5892 from your browser’s Unicode data. Registries use the IANA tables for their own Unicode version and add rules of their own (which scripts a top-level domain accepts), so a registry can still refuse a name that passes here.
- It converts and checks names; it does not look them up. To see whether a domain exists and who runs it, use the DNS Lookup or the WHOIS Lookup.
- Up to 5,000 lines are read in one run; split a longer list.
Privacy
On this device: nothing is sent
Everything happens in your browser. What you enter or open here is not uploaded or stored by MySmartCoPilot.
Frequently asked questions
What do I get without a pass?
Without a pass, Punycode Converter shows every count and the verdict of each name that needs a look in full, with the first rows of the conversion table (up to 10). Until you unlock it, the result can’t be downloaded or copied. A Pro, Premium or Ultimate pass, a one-time payment that never renews, unlocks the full result. The pricing page lists the passes and their prices.
What is Punycode?
Punycode (RFC 3492) writes a string of Unicode characters with only the letters a–z, the digits and the hyphen, so that DNS, which was built for ASCII, can carry international names. A domain label in Punycode starts with the prefix xn--: bücher becomes xn--bcher-kva. Browsers convert between the two forms automatically.
Why does my browser show xn-- instead of the real name?
Browsers show Punycode when a label could be mistaken for another name. Chrome, for example, checks every label against rules built on UTS #39: a label that mixes Latin with Cyrillic or Greek is shown as xn--…, and so is one written entirely in look-alike letters of one script, unless the top-level domain is one Chrome allows for that script (for Cyrillic, a Cyrillic one such as .рф, or one such as .ru). Paste the name here to see which characters caused it.
How can I tell whether a domain is a look-alike?
Paste it here: a label that mixes scripts (a Cyrillic а among Latin letters) or a label whose letters all look Latin but are not (аррӏе) is flagged as a look-alike risk, with each suspect character, its code point and the ASCII letter it imitates. A name that passes can still belong to someone else, so check where a link leads before you sign in.
Are ß and ss the same in a domain name?
Not any more. Under IDNA2008 and the URL Standard that browsers follow, faß.de is its own domain, xn--fa-hia.de. Older software that still uses the deprecated Transitional processing of UTS #46 turns ß into ss and goes to fass.de instead. The same holds for the Greek final ς (σ) and the zero width joiner and non-joiner (removed).
Can a domain name contain emoji?
Browsers convert emoji domains (i❤.ws becomes xn--i-7iq.ws), but IDNA2008 does not allow emoji or other symbols, and registries that follow it refuse such names. The tool flags every character IDNA2008 does not allow.
Can I convert a whole e-mail address to ASCII?
Only the domain part. A local part (before the @) with non-ASCII characters has no Punycode form: it needs SMTPUTF8 support on every mail server on the way (RFC 6531). The tool converts the domain and tells you when the local part can’t be.