A data story · Billboard Year-End Hot 100, 1965–2015
Are song lyrics getting simpler?
Hit songs doubled in length since 1965–69 and repeat more. Vocabulary per 100 words rose 7%, and the average word is still 3.8 characters.
About 200 words per hit in 1965–69, about 413 in 2010–15.
A common complaint about modern pop is that it repeats the same few words. I tested it against the lyrics of 4,816 year-end Billboard Hot 100 hits from 1965 to 2015, tracking four measures over time: how long songs are, how much they repeat, how varied their vocabulary is, and how long their words are.
Length and repetition moved a lot; vocabulary and word length barely moved.
| Measure | 1965–69 | 2010–15 | Change | r with year |
|---|---|---|---|---|
| Words per song | 200 | 413 | +107% | 0.92 |
| Compression ratio | 0.357 | 0.290 | −19% | −0.89 |
| Unique words in first 100 | 57.5 | 61.4 | +7% | 0.58 |
| Characters per word | 3.84 | 3.83 | −0.3% | −0.46 |
From tables/trends.csv, written by analyze.py. Lower compression ratio means more repetition.
Hits doubled in length
The average charting song went from about 200 words to about 413. It is the strongest trend in the data, rising about 6 words a year.

They repeat more, partly because they are longer
Compress a modern hit with zlib and it shrinks further than a 1960s one, which is the signature of repeated hooks and choruses. A longer text also gives the compressor more to match against, so part of this trend is the length trend measured again.

The words are no simpler
Counting unique words among the first 100 of each song, so that length can't inflate the count, vocabulary rose about 7%. The average word was 3.84 characters in the late 1960s and 3.83 in the 2010s.


So, simpler?
"Simpler" is the wrong word for what changed. Hits are longer and lean harder on repeated hooks, which is what people hear as repetitive. The vocabulary did not shrink. I used the same measures on reality TV in the Love Island lexical analysis and built them into the EPUB reading-level analyzer.
fetch_data.py and analyze.py in the repo.