Libidn2 is a free software implementation of IDNA2008, Punycode and Unicode TR46. Its purpose is to encode and decode internationalized domain names.
The library is a rewrite of the popular but legacy libidn library, and is backwards (API) compatible with it. See Converting from libidn for more information.
For technical reference, see:
Libidn2 uses GNU libunistring (https://www.gnu.org/software/libunistring/) for Unicode processing and optionally GNU libiconv (https://www.gnu.org/software/libiconv/) for character set conversion.
The library is dual-licensed under LGPLv3 or GPLv2, see the file COPYING for detailed information.