Punycode Converter

Convert Unicode domain names into ASCII/Punycode and decode xn-- labels back to Unicode. Review IDNA validation and per-label conversion details.

This server-side tool validates domain labels with Python idna 3.18 using UTS #46 nontransitional, STD3 rules.

Processed securely on the server

Enter a full Unicode domain or one label. Domains are split on recognized dot separators and processed label by label.

Convert Unicode domains and Punycode online

This IDN converter turns Unicode U-labels into ASCII A-labels, decodes valid xn-- labels, processes full domains one label at a time, preserves valid ASCII labels, applies UTS #46 nontransitional, STD3 rules validation with Python idna 3.18, supports recognized Unicode domain separators, shows changed and unchanged labels, and processes input on the server.

Unicode domain to Punycode example

café.example converts to xn--caf-dma.example. Only the first label changes.

LabelInputOutputConversionChangedStatus
1caféxn--caf-dmaU-label to A-labelYesValid
2exampleexampleASCII unchangedNoValid

Punycode to Unicode example

xn--caf-dma.example decodes to café.example. The xn--caf-dma A-label is decoded and the ASCII example label remains unchanged.

What does xn-- mean?

xn-- marks an ASCII A-label containing Punycode. It lets a Unicode domain label be represented with ASCII characters. The prefix applies to an individual label, so café becomes xn--caf-dma while an ASCII label such as example usually remains unchanged. Not every string beginning with xn-- is valid.

Punycode vs IDNA

Punycode is an encoding algorithm. IDNA defines domain mapping, validation and label conversion, including U-labels and A-labels. Full domain conversion requires label-aware processing, so this tool uses the configured IDNA implementation rather than encoding the entire domain as one raw Punycode string.

Domain labels and per-label conversion

Domains consist of labels separated by periods. Each label is validated separately, Unicode labels may become xn-- A-labels, ASCII labels can remain unchanged, and the converted domain is rebuilt with ASCII periods. Recognized separators are ., , and ; non-ASCII separators are reported when they are mapped.

IDNA validation errors

The converter reports label-specific errors for empty labels, leading or trailing hyphens, invalid xn-- payloads, disallowed code points, invalid joiner context, bidirectional rule failures, labels that are too long and domains that exceed the supported DNS length. Invalid labels are not silently removed or fixed.

Unicode domains and spoofing risks

Punycode conversion only changes how an internationalized domain is represented. It does not confirm ownership, registration, trust, browser display behavior or phishing intent.

For Unicode lookalikes, use the Confusable Character Detector. To review writing systems, use the Mixed Script Detector.

How to use the converter

  1. Choose Unicode domain to Punycode or Punycode to Unicode.
  2. Paste a full domain name or individual label.
  3. Run the conversion.
  4. Review the converted domain and each label’s validation result.
  5. Inspect warnings before using the result in security-sensitive contexts.
  6. Copy the domain or download the conversion report.

Privacy and server processing

The submitted domain or label is sent to UnicodeNow for IDNA and Punycode conversion. Input is processed securely and is not intentionally retained after the request completes.

Do not submit passwords, private keys, access tokens or other sensitive information.

Common use cases

How Punycode conversion works

The server separates the domain into labels and applies UTS #46 nontransitional, STD3 rules through Python idna 3.18. Unicode labels are converted to ASCII A-labels beginning with xn--, while valid ASCII labels remain unchanged.

Frequently asked questions

What is Punycode?

Punycode is an ASCII-compatible encoding used inside internationalized domain names. IDNA uses it to represent Unicode domain labels as A-labels that begin with xn--.

What does xn-- mean?

The xn-- prefix marks an ASCII A-label containing a Punycode payload. It applies to one domain label, not necessarily the whole domain.

How do I convert a Unicode domain to Punycode?

Choose Unicode domain to Punycode, enter a full domain or individual label, and run the conversion. The server validates each label with the configured IDNA profile.

How do I decode a Punycode domain?

Choose Punycode to Unicode and enter a domain containing valid xn-- labels. Only xn-- A-labels are decoded; ordinary ASCII labels remain unchanged.

What is the difference between Punycode and IDNA?

Punycode is an encoding algorithm. IDNA defines domain mapping, validation, label handling, A-labels and U-labels for internationalized domain names.

Does every Unicode domain become one Punycode string?

No. Domains are processed label by label. In café.example, only café becomes xn--caf-dma and example remains unchanged.

Why are some labels unchanged?

Valid ASCII labels that do not need Punycode are preserved. DNS ASCII labels are case-insensitive, while generated A-labels are normalized to lowercase.

Can a valid Punycode domain still be suspicious?

Yes. Valid IDNA and Punycode do not prove ownership, registration, trustworthiness, browser display behavior or intent.

Does this tool check whether a domain is registered?

No. The converter does not resolve DNS, fetch URLs, check registration status or verify domain ownership.

Which IDNA standard does this tool use?

The server uses Python idna 3.18 with UTS #46 nontransitional, STD3 rules processing.

Is my input stored on the server?

The submitted domain or label is sent to UnicodeNow for IDNA and Punycode conversion. The application code processes it for the request and does not intentionally retain it after completion, but you should not submit sensitive data.

Related tools

Review Unicode lookalikes with the Confusable Character Detector or inspect writing systems with the Mixed Script Detector.

Mixed Script Detector

Detect Unicode writing systems and mixed substantive-script patterns.

SecurityProcessed locally

Unicode Character Lookup

Search Unicode characters by glyph, code point, name, script or block.

UnicodeServer tool

URL Encoder and Decoder

Encode and decode URL components, full URLs and form-style strings.

EncodingProcessed locally

Unicode Escape Converter

Convert text to and from Unicode escape sequences and numeric entities.

DeveloperProcessed locally