TL;DR
Official scripts, parsed into SQLite, animated as a bar chart race.
S1E1 - The Vanishing
INT. WHEELER BASEMENT - NIGHT
[MIKE, DUSTIN, LUCAS, and WILL huddle around the game board]
MIKE
Something is coming. Something hungry for blood.
DUSTIN
A demogorgon?!
LUCAS
We're so screwed if it's the demogorgon.
MIKE
It's not the demogorgon.
[MIKE rolls the dice. They clatter across the board.]
DUSTIN
An eleven?! Oh my god, an eleven!
WILL
Does the demogorgon get us?
Official Duffer Brothers script book
stranger_things.db
sqlite> SELECT
season,
character_name,
ROUND(
100.0 * SUM(line_count) /
SUM(SUM(line_count)) OVER (
PARTITION BY season
), 1
) as pct
FROM dialogue_summary
WHERE character_name = 'MIKE'
GROUP BY season;
season | pct
-------|------
1 | 13.2%
2 | 7.3%
3 | 7.1%
4 | 5.1%Mike's dialogue share:
S1
13%
S2
7%
S3
7%
S4
5%
Mike's declining dialogue share
Bar chart race: dialogue share over time
- What it is
- 15,178 lines of dialogue across 517 characters, parsed from the Duffer Brothers' script books for seasons 1 to 4.
- Finding
- Mike speaks 13% of all dialogue in season 1 and 5% in season 4. Dustin ends up with the most lines.
- Parsing
- Every season's epub has a different HTML structure, and EL, ELEVEN and JANE are one person. Regex and an alias map handle both.
- Stack
- Python, BeautifulSoup and ebooklib for parsing, SQLite for storage, pandas and matplotlib for the race.
Started December 2025.