Delegating IDN domain to AWS EC2 instance

Some time ago I have published a post about delegating a domain to Route 53 service and then pointing it to an EC2 instance. You can find this post here. However, that post does not cover one particular type of domain – IDN. That’s why I decided to create this brief post as a supplement. I will not repeat all steps, only focus on differences.


IDN stands for Internationalized Domain Name is a type of web domain that contains non-ASCII characters like diacritic marks, letters from Arabic or Cyrillic alphabets, and so on.

As an example, I am going to use karoldą domain (with Polish letter ą) that belongs to me.

Hosted zone

First, you need to create your EC2 instance and assign an Elastic IP to it. If you don’t know how to do that, just follow the steps in my previous post. Then create a hosted zone in Route 53 service. Here is the difference between ordinary domains and IDN ones. If you try to enter your domain name literally, you will receive an error as below.

The hosted zone could not be saved because: Domain Name contains invalid characters or is in an invalid format.

To create a hosted zone for an IDN domain, you have to convert its name to Punycode representation (more about Punycode here). You can use e.g. this, this or this converter, or any other you find on the internet. For example, the representation of karoldą in Punycode is Use this converted name instead of the literal name of your domain to create a hosted zone. All following steps like configuration of A record are identical as in the case of an ordinary domain.

Final configuration of a hosted zone for IDN domain should look like this.


Using IDN domains is not highly popular, however this topic, in my opinion, deserved a separate post. If you find any step unclear, be sure to read the previous post about delegating domains to AWS. All steps are thoroughly explained there.

You May Also Like

4 Comments to “Delegating IDN domain to AWS EC2 instance”

  1. HI Karol – quick question. I’m trying to resolve a bulgarian domain using lightsail/route 53. It’s in cyrilic with a .бг domain. when i get the punycode for it, i get similar to what you had but at the end after .xn there is the following appended ‘–90ae’ . when i put the full punycode into the dns zone for the domain, i get an error from aWS which says: domains must be at least 2 characters long’. any idea how i’m supposed what i’m doing wrong or how to do this?

    1. Could you post the entire domain address you try to delegate? Because I just checked out random domain name with this extension, (test.xn--90ae in punycode) and it works perfectly fine.

    1. Thank you Jackie. That’s very motivating!
      I also spent some time to figure it out so I decided to write a post about it 🙂

Leave a Reply

Your email address will not be published. Required fields are marked *