DEV Community

Yunhan
Yunhan

Posted on • Originally published at babynamepick.com

How We Built a Baby Name Database with 500+ Names from 17 Cultures

Building a baby name website sounds simple — until you try to do it right. After months of research for BabyNamePick.com, here's what I learned about creating a culturally respectful, SEO-friendly name database.

The Challenge: Authenticity at Scale

Most baby name sites scrape data from other baby name sites. The result? The same 200 names recycled everywhere, with meanings that are often simplified or wrong.

We wanted something different: a curated collection where every name is verified against its cultural source, every meaning is accurate, and every origin is specific (not just "European" or "Asian").

Our Data Model

Each name entry includes:

{
  "name": "Amara",
  "meaning": "Grace, eternal beauty",
  "gender": "girl",
  "origin": "african",
  "style": ["modern", "unique"],
  "popularity": "rising",
  "startLetter": "A"
}
Enter fullscreen mode Exit fullscreen mode

The style field was the hardest to design. We settled on these categories:

  • classic — names with 100+ years of consistent use
  • modern — names that emerged or resurged in the last 20 years
  • unique — uncommon names with distinctive character
  • vintage — old-fashioned names making a comeback
  • mythological — names from mythology and legend

16 Cultural Origins

We divided names into specific cultural categories, each with its own collection page:

Each origin page has custom SEO text, FAQ schema for Google rich results, and internal links to related categories.

Technical Stack

The site is built with Next.js App Router and deployed on Vercel:

  • Static generation for all category and blog pages (fast load times, great for SEO)
  • Dynamic API route for the name generator (random name suggestions with filters)
  • TypeScript throughout for type safety
  • Tailwind CSS for responsive design
  • JSON-LD structured data for rich search results

The key architectural decision: keeping all name data in a single JSON file rather than a database. With ~360 names, the file is small enough to bundle directly, which means:

  • Zero API calls for browsing
  • Instant page loads
  • No database costs
  • Easy to maintain and contribute to

SEO Strategy That Actually Works

After launching, we focused on three things:

1. Long-tail category pages

Instead of one giant "baby names" page, we created 24 category pages targeting specific searches like "Nordic baby names" and "nature-inspired names". Each page has unique content, not just filtered lists.

2. Blog content targeting questions

We wrote articles answering real questions parents ask:

3. FAQ schema on every category page

Google loves FAQ schema. Each category page includes 3-4 FAQs with structured data, increasing our search result real estate.

Lessons Learned

  1. Meaning accuracy matters more than quantity. One wrong meaning can destroy trust. We cross-reference every meaning against at least two sources.

  2. Cultural specificity beats generic grouping. "African names" is already broad — ideally we'd break it down by region (West African, East African, South African). That's on the roadmap.

  3. SEO is a slow game. After 3 weeks, we have ~190 impressions/day and 57 indexed keywords. It takes months to see real traffic.

  4. Short names dominate search. Our short baby names content consistently gets high engagement.

What's Next

  • Expanding the database to 500+ names
  • Adding pronunciation audio for cultural names
  • Building a "name comparison" tool
  • More blog content targeting long-tail keywords

If you're building a content-heavy Next.js site, the combination of static generation + structured data + targeted long-tail pages is incredibly effective. It's not glamorous, but it works.

Try it out at babynamepick.com — and let me know what you think!


This is part of my series on building indie web projects. Follow for more on Next.js, SEO, and indie hacking.

Top comments (0)