Skip to main content

Heroku-Style Name Generator

Generate names the way Heroku, Docker, Kubernetes, and petname do, see how the word lists combine, and learn when the birthday problem makes random names collide.

Category: DevOps

What You Will Learn

  • How Heroku builds app names from adjective-noun-number word lists
  • Why Docker's names-generator.go pairs adjectives with famous scientists
  • Why Kubernetes pod suffixes use a 27-character alphabet with no vowels
  • The birthday problem: why name collisions appear near the square root of the pool size
  • How to design DNS-safe, human-friendly identifiers for your own tools

Topics covered: fun, interactive, heroku, docker, kubernetes, naming, educational

// simulator

Heroku-Style Name Generator

Generate names the way Heroku, Docker, Kubernetes, and petname do, see how the word lists combine, and learn when the birthday problem makes random names collide.

Supported bySvixDigitalOceanDevDojoSMTPfastQuizAPIBecome a sponsor
adjective-noun-number
press generate
Namespace size
77.8M
91 adjectives x 95 nouns x 9,000 numbers
50% collision after
~10k names
Birthday problem: about 1.18 x sqrt(pool). Random names collide far sooner than the pool size suggests.
Where it's from
Heroku generates a name for every app you create without --app

Why tools generate silly names

Heroku apps, Docker containers, and Kubernetes pods all need unique identifiers, and humans are terrible at remembering hex strings. So platforms combine small word lists into names like misty-meadow-1247: easy to say in an incident call, easy to spot in logs, and unique enough for the job.

  • Heroku pairs an adjective with a nature noun and a number for every app created without an explicit name.
  • Docker pairs an adjective with a notable scientist or engineer (from names-generator.go in the Moby repo). The code famously refuses to generate boring_wozniak.
  • Kubernetes goes the other way: pod suffixes use a 27-character alphabet with vowels and confusable characters removed, so a random suffix can never spell a rude word or mix up 0 and O.

The namespace-size panel shows the trade-off: word lists keep names memorable but make the pool small, and the birthday problem means collisions show up around the square root of the pool size. That is why Heroku appends a number and Kubernetes retries on conflict.

Building your own? Libraries like haikunator and petname implement these schemes in most languages, and the same rules apply: filter your word lists, plan for collisions, and keep the names DNS-safe (lowercase, digits, hyphens).

Try next

Sponsored
Carbon Ads
$ cd /games
// share