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.
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.goin the Moby repo). The code famously refuses to generateboring_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
// simulator
Idempotency and Retry Lab
Lose payment responses, replay idempotent requests, compare backoff with full jitter during an outage, and move exhausted jobs to a dead-letter queue.
// simulator
GraphQL N+1 and DataLoader Lab
Trace nested GraphQL resolvers, count N+1 SQL queries, batch users and comments with DataLoader, and discover why a loader cache must stay inside one request.
// simulator
Preview Environment Simulator
See how a pull request becomes a temporary copy of your app, complete with a private URL, safe test data, review checks, and automatic cleanup.