PRO Pass Minting Now! - MORE INFO

Punycode

What is Punycode?

Punycode is a way to convert strings of characters from Unicode including emojis to ASCII and vice versa.

Example:
🍏 = xn--pi8h

Punycode is primarily used in browsers for resolving Internet domains.

Example:
🍏.com = xn--pi8h.com
(WE DO NOT ADVISE FOLLOWING THIS LINK, IT IS JUST FOR DISPLAY PURPOSES.)

Browsers use a standard called IDNA to convert this code. It started back in 2003 and has been revised many times since then. Over the years, browsers adapted at their own pace, leaving us here today with many different ways to convert these codes and a debate about what is right and wrong.

Punycode for Handles is not officially supported and does not resolve in wallets at this time, so we wouldn't want to conform to a specific standard for resolution. This article is based on converting a punycode to emoji, not the other way around.


Why are numbers displayed next to emojis?

When converting punycode, hidden characters can also be converted too.

This means that we could have what look like "copies" of emojis because they have a hidden character in them.

To help buyers and sellers navigate their way through this jungle of emoji "copies" we provide a character counter in brackets next to the punycode.

This will show the amount of characters there actually is when the code is converted into an emoji.

Example:

🍏 [1]

(Hidden Character)🍏 [2]

Using this counter, you can see that the apple with the higher count of [2] must obviously contain a hidden character and could potentially be used to deceive someone.

In theory, there is nothing bad about these hidden characters and they can be used for a number of reasons such as joining emojis together or in Arabic and Indic script.

Example:

🧑‍🚀[3]

The Astronaut emoji is a ZWJ sequence combining 🧑 Person, Zero Width Joiner and 🚀 Rocket. These display as a single emoji on supported platforms.

As you can see they can be useful, but unfortunatley they can also be used to mislead people into thinking that they are buying a single emoji (like the apple example above), but it really has a hidden character in it.


Can I use it in my Cardano wallet?

Yes and No...

Yes, if the wallet chooses to convert the code and show a cool emoji for you. (Using the conversion standard they choose)

No, currently punycode is not officially supported for wallet resolution (sending payments). Some of the difficulties if punycode were to be used in wallets could be:

  • Emojis are hard to distinguish from one another eg. skin tones
  • As mentioned above, many browsers do not convert these codes in the same way and so this is unreliable
  • Emojis can be displayed differently across different platforms
  • Not all emojis are available on all platforms

This PDF from ICANN advises against the use of emojis in domain names and also gives a good explanation of why they probably won't be supported in wallets.

https://www.icann.org/en/system/files/files/idn-emojis-domain-names-13feb19-en.pdf


How should I convert punycode?

We can't advise you which punycode convertor to use but there are many to choose from. Unfortunately all of these will differ in the standards they use to convert.

If you want to convert an emoji/special character to punycode. This convertor from unicode shows you the output for various standards.

After you have entered an emoji check the first column labeled "input" and this punycode would be used to show the "true" emoji without any IDNA conversions.

Use at your own risk.

https://util.unicode.org/UnicodeJsps/idna.jsp


How do you convert punycode at Handle.tools?

We use the convertor from IDNA Convert to convert punycodes and display the unicode versions on our site.


Who else converts punycode from ADA Handles to emojis/special characters?

  • pool.pm
  • Begin Wallet (View Only)
  • Hazel Bot
  • JPG.store
  • plutus.art
  • adaStat
(Contact us on twitter if you want to be added to this list)


Why should I own a punycode ADA Handle?

We can't advise you what to buy, sell or mint, but some potential use cases for a punycode ADA Handle could be:

  • An Emoji Display name (if supported by the app)
  • Collectable art made from special characters and emojis
  • A way to link an emoji with an ADA Handle eg for personalization
  • Never say never, they could possibly be supported for wallet resolution one day if a robust solution is found
  • It's fun!

Summary

It's very early days, and the community adoption so far of punycode and minting emojis has been incredible. We want to continue to support displaying emojis but at the same time want to make it clear that they are not supported for wallet resolution, and does not look like they will be supported anytime soon.

If you are looking to buy that "true" single emoji and trying to avoid the hidden characters, then the counter can help you because it will simply be a [1].

With other types of emojis such as numbers, skin tones etc you should look into researching what the emoji as actually made from. Emojpedia can help you with this, here is an example of the astronaut and why it should have a count of [3]. https://emojipedia.org/astronaut/

The Astronaut emoji is a ZWJ sequence combining 🧑 Person, ‍ Zero Width Joiner and 🚀 Rocket. These display as a single emoji on supported platforms.

When using this website always take care to check the Codepoints area at the bottom of the page, the counter we use is directly counting these codepoints of the emoji. We can clearly see that there is 3 codepoints for the astronaut emoji:

🧑 U+1F9D1
(Zero Width Joiner) U+200D
🚀 U+1F680

This article has attempted to provide a simple explanation on this topic and our current position of punycode. People have been minting punycode handles for a good few months now and we have only just started to convert these and display them on apps and websites. Who knows where this will take us, but for now it's great to see the community join together and show some amazing creativity minting punycode handles. Please always DYOR and be careful when minting, buying and selling ADA Handles.

Thanks to our friends at pool.pm for their assistance with this article 💜

Published: 06/03/2023


ICANN Security Risk
https://www.icann.org/en/system/files/files/idn-emojis-domain-names-13feb19-en.pdf
What makes emoji particularly unsuited for IDNs?
https://unicode.org/faq/idn.html#15d
SSAC Advisory on the Use of Emoji in Domain Names
https://features.icann.org/ssac-advisory-use-emoji-domain-names
RFC3490
https://www.rfc-editor.org/rfc/rfc3490
RCF5892
https://www.rfc-editor.org/rfc/rfc5892
RCF8753
https://www.rfc-editor.org/rfc/rfc8753.html
TR#46 Compatibility
https://unicode.org/reports/tr46/
ZWJ Sequences
https://www.unicode.org/emoji/charts/emoji-zwj-sequences.html
Punycodes Explained
https://hackaday.com/2023/01/18/punycodes-explained/