Punycode is just a way to represent complex characters—such as emoji, letters with accents, and Asian characters—using the basic set of Latin characters which are allowed by the Domain Name System. It's normally used to display Asian characters and accented letters, but it can be used to represent emoji in exactly the same way. Browsers see this code, then render a Unicode character, such as an emoji, in its place

Josh Farrant as transcribed by Kaleigh Rogers, How to Get Your Own Emoji URL