$9 USD once · Both downloads included · No subscription
GetDomainLists
Guide · published 16 October 2026

Find the names added between two releases

Each release is cumulative, so the difference between two releases is a list of added names. Because the files are sorted, one streaming pass finds it, with constant memory.

Added domains
+73,045,002

28 September 2026 → 16 October 2026

Added subdomains
+444,969,050

in the same releases

Memory
Constant

both files are streamed

You need the same file from both releases, for example the domains file of 28 September 2026 and of 16 October 2026. A purchase includes the release on sale that day.

Why this works

Every file is strictly sorted bytewise, one unique name per line. comm compares two sorted streams line by line; LC_ALL=C makes it compare bytes the same way the files were sorted.

Try it on two small files

printf '%s\n' a.example.com c.example.com > old.txt
printf '%s\n' a.example.com b.example.com c.example.com > new.txt
LC_ALL=C comm -13 old.txt new.txt

It prints b.example.com: the name only in the newer file.

Run it on two releases

In Bash or Zsh:

LC_ALL=C comm -13 <(gzip -dc getdomainlists-2026-09-28-domains.txt.gz) <(gzip -dc getdomainlists-2026-10-16-domains.txt.gz) > added-domains.txt
wc -l added-domains.txt

For these two releases it gives 73,045,002 lines. Every name of the 28 September 2026 release is also in the 16 October 2026 release, so comm -23 (names only in the older file) prints nothing. The subdomains files work the same way, with 444,969,050 more names; they are larger, so that run takes longer.

Without comm

On a system without comm (for example Windows without WSL), the same merge walk in Python 3 streams both files:

import gzip, sys
old, new = (gzip.open(p, "rt") for p in sys.argv[1:3])
o = old.readline()
for n in new:
    while o and o < n:
        o = old.readline()
    if o != n:
        sys.stdout.write(n)

Save it as added.py and run python3 added.py getdomainlists-2026-09-28-domains.txt.gz getdomainlists-2026-10-16-domains.txt.gz > added-domains.txt.

What "added" means

An added name is new to these files, not newly registered: it is in the newer release and not in the earlier one. It is not evidence that the name is registered, resolves or hosts a website today. Each release's figures are in the release notes.

Try the format first with the free 1,000-name samples. Both full files are $9 once, with 30 days to download.

To keep one ending from the added names, pipe them through the TLD filtering guide.