The Social Security Administration has published baby name data for every year since 1880. It's one of the most fascinating public datasets available, and it reveals patterns about culture, media, immigration, and psychology that go far beyond just naming trends. I've spent more time than I'd like to admit exploring this data, and the patterns are genuinely surprising.
The data source
The SSA Baby Names dataset contains every name given to at least 5 babies of one sex in a single year in the United States. That threshold filters out extremely rare names for privacy, but the dataset still contains over 2 million records spanning 140+ years. You can download it from the SSA website as a set of CSV files, one per year.
Each record is simple: name, sex, count. Mary,F,7065 means 7,065 baby girls were named Mary that year. The simplicity of the data is what makes it powerful -- it's easy to query, visualize, and analyze.
Patterns that show up in the data
Name concentration is declining. In 1950, the top 10 boy names accounted for about 30% of all male births. By 2024, the top 10 accounted for less than 8%. Parents are choosing from a wider pool of names than ever before. The era of one-third of boys being named James, John, Robert, Michael, or William is over.
# Calculating name concentration over time
import pandas as pd
def name_concentration(year_data, top_n=10):
total = year_data['count'].sum()
top = year_data.nlargest(top_n, 'count')['count'].sum()
return top / total * 100
Pop culture spikes are sharp and short. When a character or celebrity introduces a name, there's usually a spike lasting 2-5 years followed by a steep decline. "Arya" went from fewer than 100 babies per year to over 2,500 after Game of Thrones premiered, peaking around season 4. "Khaleesi" (not even a name in the traditional sense -- it's a title) went from 0 to nearly 600 births per year.
The pattern is consistent across decades. "Elvis" spiked in the 1950s. "Madonna" briefly appeared in the 1980s. "Hermione" ticked up after Harry Potter. The spike-and-fade shape is so consistent you can identify the cultural event from the data alone.
Vowel-ending names for boys are rising. Historically, English boys' names tended to end in consonants (James, John, Robert) while girls' names ended in vowels (Sarah, Emma, Anna). Over the past 30 years, boys' names ending in vowels have surged: Luca, Arlo, Milo, Leo, Enzo, Hugo. This represents a shift in what sounds "masculine" in English.
The "Jennifer effect." Jennifer was the number one girl's name in the US for 14 consecutive years (1970-1984). Then it collapsed. By 2024, it barely makes the top 500. This pattern -- rapid rise, sustained dominance, rapid decline -- happens because once a name becomes ubiquitous, it starts to feel generic, and parents seek distinctiveness. Names that peak sharply tend to fall sharply. Names that rise gradually tend to persist.
Regional variation is significant. Liam might be #1 nationally, but the top name varies by state. Names popular in the South (like Waylon, Colton) rank lower in the Northeast. Names popular in coastal urban areas (like Kai, Bodhi) rank lower in the Midwest. The SSA publishes state-level data that reveals these geographic patterns.
Analyzing name data programmatically
If you want to explore this yourself, here's how to load and query the SSA data:
import pandas as pd
import glob
# Load all year files
frames = []
for f in glob.glob('names/yob*.txt'):
year = int(f.split('yob')[1].split('.')[0])
df = pd.read_csv(f, names=['name', 'sex', 'count'])
df['year'] = year
frames.append(df)
data = pd.concat(frames)
# Track a name over time
def name_trend(name, sex='F'):
subset = data[(data['name'] == name) & (data['sex'] == sex)]
return subset.groupby('year')['count'].sum()
# Find names that peaked in a given decade
def peaked_in_decade(start_year, sex='F'):
decade = data[(data['year'] >= start_year) &
(data['year'] < start_year + 10) &
(data['sex'] == sex)]
peak_years = data[data['sex'] == sex].groupby('name')['count'].idxmax()
# ... further analysis
What makes a name "work"
Naming researchers (yes, that's a real field -- onomastics) have identified several phonetic and structural factors that predict name popularity:
Syllable count matters. Two-syllable names dominate in English. They're long enough to feel complete but short enough for everyday use. One-syllable names (Grace, James) work for formality. Three-syllable names (Evelyn, Benjamin) often get shortened to two-syllable nicknames.
Sound symbolism is real. Names starting with harder consonants (K, T, D) are perceived as stronger. Names starting with softer sounds (L, M, S) are perceived as gentler. This isn't prescriptive -- it's a measurable pattern in how English speakers rate name characteristics in studies.
Spelling variants fragment the data. Kaitlyn, Caitlin, Katelyn, Katelynn, Caitlyn, and Katelin are all the same name phonetically. In the SSA data, each spelling is counted separately. If you combined all variants, some names would rank much higher. This fragmentation is accelerating because parents increasingly create unique spellings to differentiate their child's name.
Common mistakes when choosing names
Not checking the trajectory. A name that feels fresh today might already be in steep decline, or it might be about to peak and become the next Jennifer. Checking the historical trend tells you whether you're ahead of the curve or behind it.
Ignoring initials and abbreviations. A name might sound great but produce unfortunate initials. And common nicknames are worth considering -- naming a child Alexander means accepting that most people will call them Alex.
Not saying it out loud with the surname. Rhythm matters. A two-syllable first name with a two-syllable surname creates a balanced cadence. A one-syllable first name with a one-syllable surname can sound curt. This is subjective, but it's worth speaking the full name aloud before committing.
Assuming uniqueness means creativity. In the SSA data, there are thousands of names given to exactly 5 babies in a year (the minimum for inclusion). Extreme rarity can mean a lifetime of correcting pronunciation and spelling. There's a sweet spot between "one of five Liams in the class" and "no one can pronounce my name."
For exploring name ideas with popularity data, origin information, and variant suggestions, I built a tool at zovo.one/free-tools/baby-name-generator that helps you browse names with more context than a simple list. It's useful when you want to see what's trending, what's declining, and what's standing the test of time.
Names are one of the few decisions that follow a person for their entire life. The data doesn't make the decision for you, but it gives you context that guessing can't.
I'm Michael Lip. I build free developer tools at zovo.one. 350+ tools, all private, all free.
Top comments (0)