Rebuilding and analysing 4 years of Wordle stats from WhatsApp chat logs
Reconstructing Four Years of Wordle Data via WhatsApp Logs
By Max Glenister | Published: 26 July 2026
#data #wordle #whatsapp #programming
Believe it or not, I am still playing Wordle in the year 2026. According to the official game metrics, my record looks like this:
| Metric | Value |
|---|---|
| Total Games Played | 1,559 |
| Win Percentage | 99% |
| Current Streak | 107 Days |
| Longest Streak | 278 Days |
Despite these numbers, the official stats offer no insight into whether my skill has actually improved over the last four years. However, I discovered that a simple habit—sharing my daily results to WhatsApp—had inadvertently created a more robust archive than the game itself.
The Flaws in Official Wordle Statistics
Since June 30, 2025, my data has been stored server-side via my NYT account. While this ensures that clearing my cache or switching devices doesn't wipe my progress, it obscures the history. I only know the exact date of this transition because of a "fossil" remaining in my phone's local storage: a key named wordle-legacy-stats-228392857.
Local Storage Snapshot:
{ "wordle-legacy-stats-228392857" : { "gamesPlayed" : 1170, "gamesWon" : 1162, "guesses" : { "1" : 4, "2" : 65, "3" : 323, "4" : 440, "5" : 263, "6" : 67, "fail" : 8 }, "currentStreak" : 234, "maxStreak" : 234, "timestamp" : 1751262931 }, "wordle-stats-cutover-tooltip" : true }
The wordle-stats-cutover-tooltip boolean likely flagged the one-time notification about the migration. While the handover to the cloud was seamless (my 278-day streak survived), previous transitions were not. For example:
- August 2024: Switched from a Pixel 5a to a Pixel 7a; since data was local, my streak vanished.
- February 2022: The migration from Josh Wardle's site to
nytimes.comcaused many players to lose their streaks. My earliest surviving share is puzzle #214, meaning my very first weeks of play aregone forever.
Transforming Chat Logs into a Dataset
WhatsApp allows users to export chats as .txt files. Each entry follows a standard format: dd / mm / yyyy , hh : mm - author : message. This provided the perfect raw material: puzzle numbers, dates, and results.
The Extraction Process
I implemented the following workflow to recover my stats:
- Export chat history to text.
- Filter for messages sent by "Max Glenister".
- Use regex to isolate the score line.
- Convert "X/6" (loss) vs "N/6" (win) into boolean values.
The Python Logic:
# Simplified extraction logic
WORDLE_RE = re.compile(r"Wordle (\d+) (\d/6)")
# ... logic to parse match ...
won = guess_raw != "X"
guesses = int(guess_raw) if won else None
result = {
"date": "2022-01-19",
"puzzle_number": puzzle_number,
"guesses": guesses,
"won": won,
}
The resulting CSV looked like this:
date,puzzle_number,guesses,won
2022-01-19,214,3,True
2022-01-20,215,5,True
Analyzing the Results
The export captured 1,552 games. This is slightly lower than the 1,559 claimed by Wordle, likely due to days I played but forgot to share.
Performance Metrics
My calculated win rate is:
Guess Distribution & Highlights:
- Most Common: 4 guesses (590 games).
- The "Luckies": I had 4 first-guess wins:
unitemousestyleaudio(One of my two primary openers, along withadieu).
Interestingly, all four 1-guess wins occurred between November 2022 and August 2023. I haven't had one in nearly three years, suggesting the pool of "easy" common words has dried up.
Streak and Gap Analysis
My longest streak was indeed 278 days (Nov 9, 2024 Aug 13, 2025). By analyzing the gaps, I found:
- The 2025 Gap: A single missed day in the summer (likely due to kids) ended a 204-day run.
- The 2022/23 Gaps: More frequent breaks of 3–7 days.
- The Birthday Break: A 9-day gap in late November 2022, which I've decided to excuse.
Since late 2023, the gaps have vanished, resulting in a "dark green" heatmap of consistency. Because I saved the full grids, I can even analyze whether a "lucky" green square was a fluke or a pattern.
![]()