[Feature] Support of IDNs (Internationalized Domain Names) / Punycode

I was directed here from a GitHub issue here: https://github.com/syntax-tree/mdast-util-to-hast/issues/44.

I propose to support IDNs/Punycode in URLs so links like [example](https://я.рф/я) could be encoded as https://xn--41a.xn--p1ai/%D1%8F not as https://%D1%8F.%D1%80%D1%84/%D1%8F (this percent-encoding breaks the link).

1 Like

Markdig and markdown-it convert the link destination as desired, see Babelmark. I’m not sure this needs to be specified explicitly, but since implementations diverge it may deserve an example at least.


After a thorough experimenting I’ve found out that https://%D1%8F.%D1%80%D1%84/%D1%8F isn’t a broken link but actually is opened by a browser as https://я.рф/я. It’s interesting if it changes the requirements to specification.

@Crissov, do you say that it is implied by the spec that IDNs must be punycoded correctly?

1 Like