icann_tlds

The ICANN TLD list, regenerated daily

A Dart list of every official top-level domain, with domain and email validators over it. A daily GitHub Actions job regenerates the list from IANA and releases the diff.

ActivePersonalOpen source

Record

Kind
Package
Role
Author
Started
September 2023
Updated
July 2026
Licence
BSD-3-Clause
pub
icann_tlds · atprotodart.com

Technology4

Evidence8 sources

The repository's LICENSE is BSD 3-Clause, copyright 2023 Shinya Katolicencegithub.com A scheduled workflow runs at 02:00 UTC daily and, only when the regenerated list differs, bumps the patch version, prepends a CHANGELOG section, runs the tests, commits, tags the release and cuts a GitHub releasesourcegithub.com The update script fetches IANA's tlds-alpha-by-domain.txt, lower-cases each entry, punycode-decodes the xn-- forms, sorts the result into lib/src/tlds.g.dart and diffs it against the previous file to produce the CHANGELOG bodysourcegithub.com The upstream is IANA's official list of top-level domains, served as a plain text file at data.iana.orgsourcedata.iana.org A second workflow does the pub.dev upload, triggered by the version tag the update job pushes and delegating to the dart-lang/setup-dart reusable workflow, which authenticates over OIDC rather than with a stored credentialsourcegithub.com The generated CHANGELOG names the individual top-level domains a release moved — 1.1.4 added `web`, and 1.1.3 added `merck` and removed `goo` and `wolterskluwer`; the two generated sections before them, 1.1.2 and 1.1.1, record only that the list was updated from ICANNdocsgithub.com The published library declares no runtime dependencies — http and punycode are dev dependencies, reached only by the update scriptsourcegithub.com Alongside the generated list the library exports validators over it — isValidDomain, hasValidTLD, getCountryCodeTLDs, getTLDsStartingWith and getLongestTLDsourcegithub.com

Links2