Emoji Domains & Punycode Policy
Overview
Headless Domains fully supports Internationalized Domain Names (IDNs), including Emoji domains. However, to ensure maximum security, compatibility, and compliance with DNS standards, all non-ASCII characters and emojis are automatically converted into their Punycode (xn--) equivalents during registration and API interactions.
What is Punycode?
Punycode is a standard encoding scheme used to convert Unicode characters (like emojis or international alphabets) into the limited ASCII character set (a-z, 0-9, and -) that the global Domain Name System (DNS) understands.
All Punycode domains begin with the prefix xn--.
For example:
* The ๐ต๐ญ flag emoji (๐ต๐ญ.chatbot) is converted to xn--l77hpa.chatbot.
* The domain cafรฉ.agent is converted to xn--caf-dma.agent.
Why We Enforce Punycode
- Security (Preventing Homograph Attacks): Many characters and emojis look identical to the human eye but have different underlying Unicode values. By forcing the underlying registration to be the explicit Punycode string, we prevent bad actors from registering visually identical domains to impersonate legitimate owners.
- Infrastructure Compatibility: Our upstream registry partners (like SkyInclude) and the decentralized Handshake root zone require strict ASCII compliance for zone file generation.
- Agent Predictability: Autonomous AI agents communicating via the Agent Relationship Protocol (ARP) rely on strict, predictable machine-readable identifiers. Punycode guarantees that an agent written in Rust and an agent written in Python will both resolve the exact same domain string without complex Unicode parsing errors.
How It Works in Practice
- Search & Discovery: You can type emojis directly into the Headless Domains search bar (e.g.,
๐ต๐ญ). - Automatic Conversion: Our system instantly translates your search into the compliant Punycode version (
xn--l77hpa). - Checkout & Registration: You complete the checkout process for the
xn--domain name. - Ownership: You are the cryptographic owner of that exact IDN sequence.
Rendering Emojis
While the underlying registration and API interactions use the xn-- string, modern web browsers and many wallet interfaces will automatically translate the Punycode back into the visual emoji when displaying the URL in the address bar.
Risks: Zero Width Joiners (ZWJ) & Alternative Punycodes
When registering emoji domains, you should be aware of certain technical edge cases:
Zero Width Joiners (ZWJ)
A Zero Width Joiner (ZWJ) is a special invisible Unicode character (\u200d) used to combine multiple emojis into a single complex emoji.
For example, the "family" emoji (๐จโ๐ฉโ๐งโ๐ฆ) is actually built by combining a man, woman, girl, and boy using ZWJs.
The Risk: Different browsers, wallets, and operating systems render ZWJ sequences differently. An emoji that looks like a single icon on your iPhone might look like four separate emojis on a Windows desktop. If you search for a domain containing a ZWJ on Headless Domains, you will see a warning message. Proceed with caution, as your domain may not display consistently across the web.
Alternative Punycodes & Homographs
Because there are over 149,000 characters in Unicode, many characters look identical but have entirely different Punycode representations.
For example, the Latin letter a and the Cyrillic letter ะฐ look identical, but resolve to completely different xn-- strings.
The Risk: Always double-check the xn-- string in your checkout cart before paying. The xn-- string is the true identity of the domain you are buying. If you copy/paste an emoji or word from an untrusted source, it may be an alternative encoding designed to spoof a popular domain.
API Developers
If you are integrating with the Headless Domains API, do not send raw emojis or Unicode characters in your payloads.
You must convert your strings to IDNA 2008 Punycode before submitting requests to POST /api/v1/domains/register or GET /api/v1/domains/search. Failure to do so will result in a 400 Bad Request or Invalid domain name error.