raw Software
RAW Software Programming Ranking Heuristics

Why I Didn't Get a Single New .de Domain

Robert Eisele

On 23 October 2009, DENIC opened the German .de namespace to one- and two-character names and domains consisting only of digits. I knew the attractive names would disappear almost immediately. That was exactly what made the challenge interesting: could I turn a very small registration window into a ranking problem and somehow get ahead of the crowd?

The short answer is no. I spent a fair amount of time preparing and did not secure a single domain. The longer answer is more useful, because the way I approached the problem became a compact exercise in candidate generation, scoring, filtering, and queue strategy.

Building the Candidate Pool

I started with every two-character combination. Letters and digits give 36 possible symbols per position, so that produced 36 * 36 = 1,296 candidates:

aa
ab
ac
...
zz
00
01
...
99

I then added roughly 170 three-letter abbreviations used on German vehicle registration plates. That brought my working pool to about 1,466 names. Generating the list was easy. Deciding which names deserved the first positions was the real problem.

The Queue Was the Opponent

The numbers I was working with in October 2009 were intimidating. There were 273 accredited registrars, and each registrar could submit up to four registrations per minute. In theory, that meant 1,092 successful registrations per minute across the system. A pool of 1,466 interesting names could therefore be exhausted in about 81 seconds.

Of course, demand was not uniform. Everyone would chase memorable initials, words, brands, and numeric patterns first. Less obvious combinations might survive longer. My entire strategy depended on estimating that uneven demand well enough to order my own submissions.

My First Ranking Signal

I queried Google for every candidate and used the number of search results as a rough popularity signal. It was imperfect, but it helped separate terms people already used from arbitrary strings. Search volume alone was not enough, though. A compact pronounceable name such as los is plainly more memorable than a3y, even if a noisy result count suggests otherwise.

Domain traders described patterns with abbreviations such as LLL, CVC, and LNL. I turned the same intuition into a small PHP heuristic. Vowels received more weight than consonants, digits received less, a middle vowel was rewarded in a three-character name, and repeated characters received a bonus:

<?php

function rateDomainName(string $name): float
{
    $score = 0.0;
    $characterSum = 0;
    $length = strlen($name);

    for ($index = 0; $index < $length; $index++) {
        $character = $name[$index];
        $characterSum += ord($character);

        if (str_contains('aeiou', $character)) {
            $score += ($index === 1 && $length === 3) ? 1.0 : 0.8;
        } elseif (ctype_digit($character)) {
            $score += ($index === 1 && $length === 3) ? 0.1 : 0.2;
        } else {
            $score += 0.5;
        }
    }

    if ($characterSum === $length * ord($name[0])) {
        $score += 2.0;
    }

    return $score;
}

This was never meant to be a universal measure of domain quality. It was a deliberately simple tie-breaker for my own queue. Combining structural score and search interest gave me a much better order than either signal alone.

Blacklists, Whitelists, and Legal Risk

The numeric score still could not make the final decision. I maintained a whitelist for names I personally considered strong and a blacklist for candidates likely to cause trademark or ownership disputes. Names such as o2.de or 4u.de were obvious examples: even if they looked valuable, putting them near the top could waste one of a registrar's scarce attempts.

In retrospect, this manual layer was important. The score measured pronounceability and rough popularity, not legal safety, commercial intent, or the chance that hundreds of other people had selected exactly the same name.

Registration Day

I created accounts with as many registrars as I reasonably could and prepared a separately ordered list for each one. My hope was that distributing the candidates would give me several independent chances instead of sending everything through one queue.

Then registration opened, the queues moved, and I got nothing. Not one domain. After all the candidate generation, scoring, filtering, and account preparation, my result was exactly zero.

What I Took Away from It

The failure was still informative. My ranking approach helped me reason about names, but the decisive variable was access to registration capacity. A clever ordering could improve my odds only after I had a place in the queue; it could not compensate for organizations controlling many registrar connections and submitting at scale.

Looking back, the exercise feels like a small data-ranking project wrapped inside a land rush. I built a candidate universe, combined weak signals, added human judgment where the model was blind, and optimized for a hard operational limit. The model was not sophisticated, and it did not win, but it was the part of the experience that remained useful long after the interesting domains were gone.