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"
}
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:
- Western: American, British, French, Spanish, Irish
- Classical: Greek, Latin, Biblical
- Asian: Japanese, Korean, Chinese, Indian
- Middle Eastern & African: Arabic, Hebrew, African
- Northern European: Nordic
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
Meaning accuracy matters more than quantity. One wrong meaning can destroy trust. We cross-reference every meaning against at least two sources.
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.
SEO is a slow game. After 3 weeks, we have ~190 impressions/day and 57 indexed keywords. It takes months to see real traffic.
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)