IANA publishes some raw, canonical data about the DNS and root zone TLDs. This project is an attempt to make it easier to explore and answer questions about this canonical data.
Here are some of the types of data that IANA publishes:
- A list of all top-level domains
- ASCII and Unicode variants of IDN (internationalized) TLDs
- TLD categories, e.g.
generic,country-code,sponsored, etc. - TLD Managers, e.g.
VeriSign, Inc.,Charleston Road Registry Inc., etc. - RDAP servers for all gTLDs, and some ccTLDs
There is a bit more data beyond what IANA publishes, which can supplement or enrich the raw IANA data, to improve it a bit, and make it easier to understand. For example:
- ccTLD RDAP servers - there are a handful of these that aren't included in the IANA data
- Parent-Subsidiary groupings for TLD managers, e.g.
VeriSignhas four entities for all the TLDs they manage - What do the IDNs mean?
- Which IDNs are ccTLDs, and which are generics?
- Which gTLDs are Open or Closed, or Brand-only? (e.g.
.apple) - Which backend (technical) operators power which TLDs?
- Are there some friendlier / more recognizable names for TLD Managers? E.g.
Charleston Road Registry Inc.= Google
We are capturing some of this supplemental data in the data/supplemental.json file.
Each night, this project fetches three different IANA data files (related to top-level domains), and stores copies of them in this git repo. They are small data, so it's ok.
The idea is to be able to see at a glance, things like:
- How many delegated TLDs are there?
- Of these, how many are country-code TLDs vs. generics?
- How many have RDAP servers? (all the generics are supposed to have them, but for the ccTLDs it's entirely optional)
- Are there ccTLD RDAP servers that aren't in the IANA bootstrap file?
And later on, we'll add some lightweight monitoring to stay ahead of issues like this.
I'm primarily tinkering with this project, to learn how Val Town works.
- cctld-rdap-web - The web frontend
- cctld-rdap-data-fetcher - The scheduled job that fetches new data each night
- What is RDAP?
- What are ccTLDs?
- [What are gTLDs](https://en.wikipedia.org/wiki/Generic_top-level_domain?
- Which files are we keeping an eye on here?
- The IANA RDAP "bootstrap" file
- The IANAN "all TLDs" txt file
- The IANA Root Zone DB html file, which alas doesn't appear to be available in a friendlier format
In the fixture files, the IDN ccTLDs are:
xn--kpry57dis台灣(tw) - viaxn--2scrj9cisಭಾರತ(in) - viaxn--4dbrk0ceisישראל(il) - viaxn--flw351eis谷歌("Google" in Chinese) - viaxn--wgbh1cis.مصر(eg) - via
We're able to check for changes prior to downloading the files:
- The RDAP bootstrap file has both
ETagandLast-Modifiedheaders - The TLD list file has both
ETagandLast-Modifiedheaders - The root zone db (html) has a
Cache-Controlheader
ccTLD + RDAP monitoring
- Checkly monitoring for ccTLD manually added RDAP servers
- Checkly public dashboard
- curl (or Python)-based monitoring via GH Actions
Web UI
- Web UI - TLD table view, search box, filters for G vs. CC, IDNs, etc
- Web UI - ZoneDB integration to get "brand" tags in here somehow
- Web UI - per-data file analysis & view, for verifying the numbers
Val Town deploy
- Add
data/tlds.jsonto source control (it's currently ingitignore) - Build step for
tlds.jsonin GH Actions - Pre-calculate the "analysis" numbers, so that they aren't re-calculated for every API request
- Val Town manual deploy
- GH Actions -> Val Town auto-deploys when the data files are updated
Future
- Something (a bot? etc.) to watch all the ccTLD registry websites, for mentions of RDAP, and notify if found
2025-11-15:
- Web UI - TLD Managers section & breakdown
- Supplemental data - TLD Managers groupings
2025-11-14:
- TLDs txt file - ignore the first line (timestamp) before saving it
- Nightly data updates - GH Actions
- Tests running in GH Actions
- Deno dep updates in GH Actions
- Only update
data/metadata.jsonwhen there are downloaded file updates - A basic HTTP + web interface
2025-11-13:
- A unified, generated
tlds.jsonfile that includes all the data we need, for an eventual web interface
2025-11-12:
- Refactor to be "an API" with simple CLI & web clients
- Use Cliffy for terminal tables output
- Update the CLI analysis output a bit
- Added the unlisted ccTLD RDAP servers
2025-11-11:
- Project creation
- Fixtures for all three data files
- Download & last-updated checks for all three files
- Downloaded file validation, parsing, and tests for all three files
- CLI, for understanding and munging the data, and prototyping future interfaces
- Reconciled the various TLD metadata counts - cctlds, gtlds, IDNs, sponsored, infra, etc. - across all three files