What 2,500 tracks of focus music have in common: we ran the numbers
Everyone sells focus music. Almost nobody shows their work. Our music library is 2,500 tracks organized into 250 curated cooks, and every track keeps its full recipe on file: prompt, genre, mood tags, BPM, key, structure, and whether it is instrumental. So instead of telling you this is great music to work to, we ran the numbers on what the library actually contains. Some of what we found surprised us, and we built the thing. This is the audit we wish every focus playlist came with: counts you can re-run, tempos you can sort by, and recipes you can read before you press play.
Update (2026-08-23): the library has grown since this piece was first published. The analysis below was computed on 2026-08-01 against 100 cooks and 1,000 tracks; cookbook.json now holds 250 cooks and 2,500 tracks (updatedAt 2026-08-23T17:45:24.952Z). Headline figures are preserved as published so the original analysis remains reproducible, and the methodology section at the end explains how the same queries run against the current 250. Where the current library diverges meaningfully we call it out inline — the biggest shift is tempo: the median cook has moved from 110 BPM to 130 BPM as we added faster, more energetic mixes.
Focus is not a mood tag
First surprise from the original 100-cook audit: only 3 of the 100 cooks carried the 'focus' mood tag, which worked out to 30 tracks out of 1,000. That ratio still holds at 250 cooks — 3 of 250, or 30 tracks of 2,500, carry 'focus'. They are Late Night Lo-Fi at 75 BPM, Deep Focus Pulse at 60 BPM, and Pixel Cathedral at 132 BPM. No new focus-tagged cooks have been added, not by oversight but by design: we tag what the music is, not what you might use it for. The current tag leaderboard is led by intense (64 cooks), dark (45), dreamy (43), aggressive (35), and mechanical (34). Warm (32), anthemic (33), and melancholy (27) still chart, but the long tail has lengthened to 166 distinct mood tags across 250 cooks, up from 82 at 100. We read this as an honest lesson about our own catalog: focus is an outcome, not an ingredient. The music people actually work to hides under tags like chill, ambient, meditative, and nocturnal.
That outcome framing matters because the three focus cooks themselves do not sound alike. Late Night Lo-Fi is lo-fi hip hop with dusty rhodes piano, muted thumb bass, and brushed drums under vinyl crackle — instrumental, F minor, slow. Deep Focus Pulse is minimal ambient: a C-minor sub-bass pulse at exactly 60 BPM, a slow-evolving arpeggiator, and almost no development by intent. Pixel Cathedral is chiptune — NES pulse waves, square bass, bright four-on-the-floor at 132 BPM, C major, joyful rather than calm. Three mutually incompatible answers to the same question. If you need a starting shelf, those three remain the cleanest A/B test in the library: one dusty, one minimal, one playful, all tagged focus for the same reason we would tag a chair 'good for reading' — it describes effect, not material.
The tempo map
We bucket every cook by its BPM because tempo is the one number that predicts feel before you hear a note. At 100 cooks the median was 110 BPM (mean 112.4) with a near-even spread. At 250 cooks the library has shifted faster — the median is now 130 BPM and the mean is 129.6 — because the second 150 cooks leaned into high-energy genres like futurecore, drum and bass, metalcore, and witch house. The table below is the current distribution computed directly from cookbook.json today. Compare it to the original seven-band table captioned in the callout and you can see the catalog's center of gravity move.
| BPM band | Cooks | Share | What lives there |
|---|---|---|---|
| No tempo at all | 2 | 0.8% | noise and drone: Held Note, For Hours and its companion — rhythm was never invited |
| 40-70 | 15 | 6.0% | the deep-work end: space ambient, dark ambient, dungeon synth, doom — includes Stratosphere at 40 BPM and Iron Cathedral at 50 BPM |
| 71-90 | 29 | 11.6% | lo-fi, vaporwave, mellow jazz, dub, neo-classical — Late Night Lo-Fi at 75 BPM and Rain Diary at 70 BPM |
| 91-110 | 38 | 15.2% | the old center of gravity, now the mid-lane: Vesper Hall at 60 BPM actually sits below here, this band holds mid-tempo rock and indie pop |
| 111-130 | 48 | 19.2% | house, city pop, trance, synthpop, chillwave |
| 131-150 | 55 | 22.0% | j-core, phonk, witch house, and Pixel Cathedral at 132 BPM — the most crowded band today |
| 151-240 | 63 | 25.2% | drum and bass, breakcore, grindcore, futurecore, and every tempo above 180 |
Two details in that table are worth sitting with. First, the four cooks tagged 'ambient' still average 59.5 BPM — the slowest mood cluster in the library, unchanged from the 100-cook audit despite the overall acceleration. They are Deep Focus Pulse (60), Iron Cathedral (50), Lantern in the Dark (88), and Stratosphere (40). The three tagged 'focus' still average 89 BPM (75, 60, 132). Second, the genuinely useful focus shelf is not the tag at all but the intersection of 'fully instrumental' and 'at or under 100 BPM'. At 100 cooks that shelf held 23 cooks; at 250 it holds 31 cooks. It is the shelf we recommend if lyrics steal your attention, and it stretches from Held Note, For Hours at no tempo through Stratosphere at 40 to the 100 BPM ceiling. Open the full cook index and you can filter that shelf by reading each cook's BPM, key, and instrumental flag before you press play, which is the point of keeping recipes at all.
Ten tracks, no exceptions
Every cook in the library holds exactly 10 tracks. At 100 cooks the minimum, maximum, and average were all 10; at 250 they still are. We enforce this in web/music/scripts/build-cookbook.mjs — a cook is not considered complete until its 10 audio keys and 10 generation records exist, and the player expects 10. That constraint is why the library can claim 2,500 tracks without hand-waving: 250 × 10, auditable as 250 folders under audio/ and 2,500 song entries in cookbook.json. The music library view lists all 250 with their 10-track grids; the cooks index is the same data in a denser layout if you want to skim faster.
The other discipline is genre spread. At 100 cooks there were 99 distinct genre labels and only one repeated: dark ambient (Iron Cathedral and Catacombs Lit Only by Phone). At 250 cooks the library has 230 distinct genre labels — almost one per cook — with the largest cluster still tiny: futurecore at 5 cooks, then dark ambient at 3, denpa futurecore at 3, and a handful of doubles (lo-fi hip hop, synthwave, metalcore, uplifting trance, drum and bass each at 2). In other words, the curation process rarely repeats itself. Even the three focus-tagged cooks share no genre: lo-fi hip hop, minimal ambient, and chiptune are three mutually incompatible answers to the same question, by intent. When we add a new cook we write its recipe prompt, genre, and mood tags before any audio is generated, so duplication is visible early and we can steer toward uncovered space.
Who sings matters for focus. At 100 cooks, 53 cooks were fully instrumental, 41 sang in English, and 6 sang in constructed languages. At 250, 89 cooks are fully instrumental (35.6%). Of the remaining 161 with vocals, the vocalLanguage field breaks as: instrumental flag false but vocal rendering as gibberish-anime (63 cooks), english (51), english-lyrics (33), japanese (8), invented-phonetic (3), latin-fake (3), and 17 with no language tag at the recipe level because they predate that field. The gibberish-anime and invented-phonetic cooks are a genuine feature if lyrics steal your attention: you get the texture of a human voice with no words to follow. The most common key in the library is now F minor (30 cooks), followed by E minor (26), A minor (24), and D minor (22) — D minor led at 100, F minor leads at 250, nobody planned either, the generator and the curators simply landed there.
What the tags actually say
With 166 distinct mood tags the library is a better map of feeling than any single tag. At 100 cooks the top tags were warm (28), anthemic (16), dreamy (15), melancholy (15). At 250 the top is intense (64 cooks, 25.6%), then dark (45), dreamy (43), aggressive (35), mechanical (34), anthemic (33), warm (32), nocturnal (32), agitated (31), neon (30), cinematic (30), chaotic (28), melancholy (27), emotional (25). The shift reflects the second batch's heavier, more cinematic brief, but the practical takeaway is unchanged: if you need calm, do not type 'focus' into search and expect the system to read your mind. Filter by what the music is — meditative (13 cooks), dreamy (43), nocturnal (32), chill (8), ambient (4) — and by tempo. Stratosphere is dreamy + sacred + ambient at 40 BPM; Iron Cathedral is dark + ambient + melancholy at 50; Vesper Hall is melancholy + dreamy + sacred at 60; Rain Diary is melancholy + dreamy at 70. Those tag combinations are more predictive than any single marketing word.
We use mood tags in two ways while curating. First, each cook's recipe lists 2-4 moods up front (for example, Stratosphere lists ambient, sacred, dreamy; Iron Cathedral lists dark, ambient, melancholy). Second, we audit the tag distribution after each batch and intentionally commission cooks that stretch uncovered feelings. That is why the slow, meditative shelf still exists even though the median tempo rose — we kept adding at 40-70 BPM because the library without them would be lying about its range. You can see the audit directly: every cook page at music/cook/{slug} shows its mood chips, BPM, key, and the exact prompt that generated it, so you can judge whether our tag matches your sense before you commit 40 minutes to a cook.
How the cookbook is built, and how to re-run these numbers
The single source of truth is web/music/libs/data/cookbook.json. It is built by web/music/scripts/build-cookbook.mjs from the per-cook recipe records and the generated audio keys under web/music/out/audio/. Each cook entry stores id, name, slug, description, recipe (prompt, genre, mood array, instruments, tempo label, bpm, key, structure, instrumental boolean, vocalLanguage), cover, and gated flag; each song entry stores id, cookId, title, audioKey, coverKey, generationParams (model music-2.6-free, prompt, genre, mood, instruments, bpm, key, structure, instrumental, lengthSeconds), and createdAt. Version is 1, updatedAt is 2026-08-23T17:45:24.952Z, source is the build script path. No other file is canonical — the player, the search index, and these articles all read the same JSON.
To reproduce every number in this article, cat web/music/libs/data/cookbook.json and count. The BPM bands query is: bucket by recipe.bpm (0 = no tempo, else 40-70, 71-90, 91-110, 111-130, 131-150, 151-240). Median and mean are over integer BPMs excluding zeros. Mood counts are a frequency table over recipe.mood (a cook can carry multiple). Instrumental count is where recipe.instrumental is true; vocalLanguage distribution is over recipe.vocalLanguage. Genre distinct is over recipe.genre. Key distribution is over recipe.key. The 10-track rule is verified by grouping songs by cookId — every group has size 10, no exceptions. We keep cookbook.json in git so any revision of this article can be diffed against the data revision that produced it; the callout below is the provenance stamp for this version.
How to use this if you want to work
Open the library and sort by headspace, not hype. Need flow? Start with the three focus-tagged cooks above — Late Night Lo-Fi for a warm, dusty room, Deep Focus Pulse for a clock that refuses to surprise you, Pixel Cathedral if you focus better with a little joy. Need slower? Filter the full cook index for instrumental and BPM ≤ 100 (31 cooks at 250) and audition Stratosphere at 40 BPM, Iron Cathedral at 50, Deep Focus Pulse at 60, Vesper Hall at 60, or Rain Diary at 70 — each lists its BPM, key, and mood chips before you press play. Need the opposite? The 131-150 and 151-240 bands are now the library's largest, so if slow makes you sleepy, start at 120 and climb. No account, no ads, no algorithm deciding you have had enough focus for one day — just recipes you can read and a player that respects them.