Punycode to Unicode

Decode raw Punycode labels and domain-style xn-- input into readable Unicode text in your browser, with clear error handling for invalid Punycode.

What This Punycode To Unicode Tool Does

DigitalDomainKit's Punycode to Unicode tool converts ASCII Punycode text into readable Unicode text directly in the browser. It can decode a raw Punycode label such as bcher-kva, and it can also handle common domain-style input such as xn--bcher-kva.example. The verified output for that domain-style example is bücher.example. Invalid input is caught and shown as an error message instead of breaking the page.

This tool is useful when you are reading an internationalized domain name, checking what an xn-- label represents, documenting IDN examples, or comparing encoded and decoded domain text during a support investigation. It is not a domain registration checker, DNS lookup, browser address-bar emulator, phishing verdict, or full IDNA policy validator. It decodes the text you paste and leaves the trust decision to the surrounding context.

How To Use The Converter

  1. Paste a raw Punycode label, an xn-- label, a domain-style string, or an email-domain-style string into the input textarea.
  2. Click the Convert button.
  3. Read the Unicode result in the output textarea that appears below the button.
  4. If the output says Invalid punycode input., check whether the text is actually valid raw Punycode or a valid domain-style string.
  5. Use the Copy button when you want to reuse the decoded result in notes, tickets, or another tool.

The interface intentionally stays simple: one input box, one convert action, one output box, and one copy action. There are no batch controls, file uploads, DNS lookups, network scans, registration checks, or security feeds involved in the verified conversion workflow.

Verified Examples

The following examples were checked against the live tool on September 16, 2026. They show the difference between raw Punycode decoding and domain-style IDN decoding.

Input Verified output What the example shows
bcher-kva bücher A raw Punycode payload can be decoded as a single label.
xn--bcher-kva.example bücher.example A domain-style string with an xn-- encoded label is decoded label by label while the ordinary suffix remains readable.
% Invalid punycode input. Invalid raw Punycode is handled with a visible message instead of an uncaught browser error.

These examples are intentionally modest. Punycode conversion can produce surprising text when a string is not actually meant to be decoded as Punycode. For example, a normal ASCII word can sometimes pass through the raw decoder and produce characters you did not expect. When you are working with a real domain name, prefer the domain-style form with the xn-- prefix so the decoder can treat only encoded labels as IDN labels.

Inputs, Outputs, And Limits

Area Supported behavior Important limitation
Raw labels Plain raw Punycode strings such as bcher-kva are decoded with the raw Punycode decoder. Raw decoding is not the same as validating an IDN label, adding an xn-- prefix, or checking registry rules.
Domain-style input Strings containing xn--, dots, or email-style separators are routed through domain-aware Unicode conversion. The tool does not fetch DNS, confirm ownership, check whether the domain exists, or decide whether a domain is trustworthy.
Whitespace The conversion function trims surrounding whitespace before decoding. Internal spaces, pasted punctuation, and unrelated URL text can still affect the result.
Invalid input Invalid raw Punycode such as % displays Invalid punycode input.. The message means the converter could not decode the submitted text; it is not a broader assessment of the string.
URLs Host-like strings can be decoded when they are pasted in a form the loaded Punycode function understands. The tool is not a full URL parser. For complete URLs with paths, queries, fragments, credentials, or ports, first separate the host with the URL Parser.

Technical Method

The verified implementation is browser-side JavaScript. The page loads the site's bundled Punycode script, exposes a window.decodePuny helper, and the Alpine.js component writes the returned value into the output textarea. The helper trims the submitted value. If the string looks domain-like because it contains xn--, a dot, or an at sign, it calls the Punycode library's domain conversion method. Otherwise it calls the raw Punycode decoder. The page wraps the conversion in a try/catch block so bad input produces the visible error text instead of an uncaught exception.

This distinction matters. Punycode itself is an encoding algorithm for representing Unicode code points using ASCII. Internationalized domain names use Punycode as part of a larger IDNA process, where labels that need encoding are represented with the ACE prefix xn--. A raw payload such as bcher-kva and a domain label such as xn--bcher-kva are related, but they should not be treated as identical strings. The current converter accounts for that practical difference by using domain-aware conversion when the input looks like a domain-style value.

The converter does not implement every IDNA rule itself. It does not apply registry-specific restrictions, compute Unicode confusable skeletons, compare mixed-script names with protected brands, run malware or phishing intelligence, query WHOIS, check certificate transparency logs, or reproduce every browser's address-bar display policy. It simply decodes using the loaded Punycode library and shows you the resulting Unicode text.

IDN And Security Caveats

Internationalized domain names are a normal part of the web. They allow domain labels to represent characters beyond the basic ASCII set, which is important for many languages and writing systems. At the same time, Unicode contains characters that can look similar across scripts or fonts. A decoded string can therefore be useful evidence during review, but it is not a complete security answer.

Do not treat a decoded Unicode result as proof that a link is legitimate. A suspicious link can use ordinary ASCII typos, misleading subdomains, redirects, compromised pages, URL shorteners, fake login screens, or lookalike brand wording without needing Punycode at all. Conversely, a Unicode domain can be legitimate when it belongs to the expected organization, language context, and registry policy. The safest interpretation is narrow: this page tells you what the Punycode text decodes to; it does not certify intent, ownership, reputation, or destination safety.

Browser display can also vary. Modern browsers and apps apply their own IDNA and anti-spoofing policies when deciding whether to show a Unicode label or the ASCII xn-- form. Email clients, chat apps, mobile browsers, password managers, and corporate security tools may display or rewrite the same URL differently. For important decisions, compare the decoded host with a known bookmark, type the expected domain manually, inspect the full URL structure, and follow your organization's reporting process when a link may be suspicious.

Privacy And Processing

The conversion workflow runs in the browser. In the verified implementation, clicking Convert reads the textarea value, calls the local Punycode conversion helper loaded on the page, and writes the result into another textarea. The tool does not upload the submitted text as part of the conversion, does not perform a DNS lookup, and does not save a conversion history in the tool interface.

That does not mean every local trace disappears. Your browser may retain page history, form suggestions, clipboard contents, screenshots, extension data, crash reports, or device-level backups depending on your settings. Normal website analytics may record ordinary page visits, but the verified converter code does not send the Punycode value to a server for decoding.

Troubleshooting

Problem Likely cause What to try
The tool shows Invalid punycode input. The submitted value is not valid raw Punycode for the decoding path being used. Check for extra punctuation, pasted formatting, missing characters, or a string that was never Punycode.
A full URL does not decode as expected The converter is not a full URL parser and may be affected by paths, query strings, fragments, credentials, or ports. Use the URL Parser first, then paste only the host or label you want to decode.
A normal ASCII word gives a strange result Raw Punycode decoding can interpret ASCII text as an encoded payload even when it was not intended as one. Use raw decoding only for known raw Punycode. For IDN work, prefer inputs that include the xn-- prefix.
The decoded text looks different in a browser address bar Browsers apply separate IDNA and anti-spoofing display rules. Use this result as an inspection aid, then compare it with browser behavior and trusted domain records.

Related Tools

Use the Unicode to Punycode converter when you want to go the other direction and turn Unicode text into a raw Punycode payload. Use the IDN/Punycode Phishing Detector when you need a broader visual inspection of an internationalized domain, including mixed-script and non-ASCII character signals. Use the URL Parser to separate a complete URL into protocol, host, path, query, and fragment before decoding only the host. Use Domain WHOIS after you have a supported ASCII domain and want registration context, while remembering that WHOIS data does not prove safety or legitimacy.

Technical References

For the standards background, see RFC 3492, Punycode, RFC 5890, Internationalized Domain Names for Applications definitions, the Unicode Consortium's Internationalized Domain Names FAQ, and the WHATWG URL Standard IDNA section. For security context around visually confusing Unicode text, see Unicode Technical Report #36 and Unicode Technical Standard #39.

Editorial Notes

Built and maintained by Digital Domain Kit. This documentation was last tested against the live tool on September 16, 2026. The verified method is browser-side Punycode-to-Unicode conversion with raw-label decoding, domain-style xn-- handling, a visible invalid-input message, and a copyable output textarea. To report a problem with the converter or this documentation, use the contact page.

Related Tools

Contact

Missing something?

Feel free to request missing tools or give some feedback using our contact form.

Contact Us