THE RECEIPT

Rotation component library

Every component rendered against fixtures/contracts/edition.json and against the strings that break chart layouts. Colour, type and size come from src/tokens.ts through the Tailwind theme; no hex value is typed twice. Fonts are self-hosted OFL so a headless Linux render is identical to this one.

01

Masthead

Rotation

rotation.today
Edited
02

Editorial attribution

Load-bearing for trust. The fixture's lead is rank 02, not rank 01, and this block is where the reader learns that is intentional.

How this page is made

The lead was chosen by an editor. Out of today’s top ten by momentum, a person picked Ramenez la coupe à la maison as the day’s finding and wrote the reason with citations. It is rank 02 on the chart, not rank 01. That is deliberate: the fastest-moving song is Janice STFU, and the most interesting true thing today was not the same as the biggest number.

The chart below is unedited. It is computed from the velocity ledger, auto-published, and untouchable. No entry is added, removed, reordered, or held back by anyone. The edit chooses among the data’s candidates and can never contradict them.

Lead
Rank 02 · editor-chosen
Chart
10 entries · unedited
Credit
Chart: Rotation
03

Story block — the lead

Pulled out of the table. It shares no grid track with a chart row, sits on a stroke-weight ink slab under an accent rule, and sets its headline above the 4:1 hero-to-label ratio.

THE MOVERChart rank02

Ramenez la coupe à la maison

Vegedream

The reason · sport

Vegedream's unofficial anthem for France's 2018 World Cup win is resurging as France runs in the 2026 tournament. The lyrics namecheck Kylian Mbappe, so his record-breaking performance on 18 July has driven French fans back to the track across football markets.

Signal breakdown
Velocity58.9
Breadth37.5
Acceleration44.7
Discovery28.0
New entry0.0
Sources moving4

Momentum score 103.1

Receipts
  • lu 18543 (2026-06-18..2026-07-16)
  • shazam #92 (3 markets)
Markets
  • fr
  • be
  • lu
  • ch
  • ma
04

Story block — secondary, and one with no cited reason

A draft with zero citations never reaches the editor, so a story can legitimately arrive with receipts but no prose. It says so rather than guessing.

THE RECEIPTChart rank01

Janice STFU

Drake

The reason

No cited explanation cleared the gate. The movement below is published without one rather than guessed at.

Signal breakdown
Velocity62.4
Breadth41.0
Acceleration18.2
Discovery33.1
New entry0.0
Sources moving4

Momentum score 113.8

Receipts
  • se 185163 (2026-07-11..2026-07-17)
  • no 159106 (2026-07-11..2026-07-17)
Markets
  • global
  • us
  • se
  • no
  • ca
THE RECEIPTChart rank04

Boston

STELLA LEFTY

The reason

No cited explanation cleared the gate. The movement below is published without one rather than guessed at.

Signal breakdown
Velocity30.1
Breadth18.0
Acceleration12.0
Discovery11.0
New entry100.0
Sources moving3

Momentum score 91.2

Receipts
  • new entry: no chart history in trailing window
Markets
  • nz
  • nl
05

Chart rows — the real edition

Unedited, in contract order. Sparklines marked with an asterisk are derived from each song's own published receipt: the Edition contract carries no rank series, so the chart page must pass one in.

  1. RankMoveTrack / ArtistScore
  2. 0153Janice STFUDrake113.8
  3. 02142Ramenez la coupe à la maisonVegedream103.1
  4. 0319stupid songOlivia Rodrigo97.5
  5. 04NewBostonSTELLA LEFTY91.2
  6. 0518Mr. BrightsideThe Killers88.0
  7. 0613Dai DaiShakira and Burna Boy84.6
  8. 0731OrdinaryAlex Warren80.3
  9. 0818DraculaTame Impala76.9
  10. 0912Homewreckersombr72.4
  11. 106WonderwallOasis68.1
06

Chart rows — hostile strings

The truncation test. Every column but the title block has a fixed track; the title block is minmax(0,1fr) with min-w-0, so nothing below can widen the grid.

  1. RankMoveTrack / ArtistScore
  2. 0133Ramenez la coupe à la maisonVegedream103.1
  3. 0246青花瓷周杰倫99.4
  4. 0359어떻게 이별까지 사랑하겠어 널 사랑하는 거지뉴진스97.2
  5. 0472केसरिया तेरा इश्क़ है पियाअरिजीत सिंह95.8
  6. 0585BostonSTELLA LEFTY91.2
  7. 0698When the Pawn Hits the Conflicts He Thinks Like a King What He Knows Throws the Blows When He Goes to the FightFiona Apple88.7
  8. 07111LlanfairpwllgwyngyllgogerychwyrndrobwllllantysiliogogogochSupercalifragilisticexpialidocious84.1
  9. 08124تملي معاكعمرو دياب81.5
  10. 09137Homewrecker 💔 (sped up)sombr 🌙79.9
  11. 10150zy68.0
  • 01 Accented Latin, long. The fixture's own lead.
  • 02 Chinese. Wide glyphs, no spaces.
  • 03 Korean, and long enough to need truncating.
  • 04 Devanagari. Combining matras above the line.
  • 05 All caps artist.
  • 06 The grid-blowing case: 110 characters.
  • 07 No whitespace at all. Word-wrap cannot help.
  • 08 Right-to-left script.
  • 09 Colour emoji.
  • 10 The degenerate short case.
07

Chart rows — narrow

At 360px the artwork and the sparkline drop out and the row earns its space with type. The same component, no separate mobile row.

  1. RankMoveTrack / ArtistScore
  2. 0133Ramenez la coupe à la maisonVegedream103.1
  3. 0246青花瓷周杰倫99.4
  4. 0359어떻게 이별까지 사랑하겠어 널 사랑하는 거지뉴진스97.2
  5. 0472केसरिया तेरा इश्क़ है पियाअरिजीत सिंह95.8
  6. 0585BostonSTELLA LEFTY91.2
08

Kicker

Geist Pixel, Square cut, at exactly 10px and 14px. The closed vocabulary is typed, so an unlisted kicker will not compile.

Small / accentTHE MOVEREARLY ONREVIVALWONDERTHE CATALYSTTHE RECEIPTTHE WEEK
Large / on accentTHE MOVEREARLY ONREVIVALWONDERTHE CATALYSTTHE RECEIPTTHE WEEK
Large / inkTHE MOVEREARLY ONREVIVALWONDERTHE CATALYSTTHE RECEIPTTHE WEEK
09

Sparkline

Rank inverted so up means better. Direct-labelled at the end point; there is no axis and no key.

Steep climb
#43
Slipping
#84
Holding
#61
No series
Wide (card size)
#43
10

Signal breakdown

No rank is a black box. Negative acceleration draws backwards from the baseline instead of being clamped to zero.

The lead
Velocity58.9
Breadth37.5
Acceleration44.7
Discovery28.0
New entry0.0
Sources moving4
A new entry, and a decelerating song
Velocity21.0
Breadth11.5
Acceleration-3.2
Discovery24.0
New entry100.0
Sources moving3
11

Change indicator and artwork slot

Movement
1429=New
Artwork slot, no rights required
12

Credit line

Method

The Rotation chart ranks how fast a song is gaining ground across markets, not how big it is. Every score decomposes into named signals; every entry carries published receipts.

Data: Spotify, Shazam, Apple Music, YouTube · Chart: Rotation

Sources

  • spotify
  • shazam
  • applemusic
  • youtube
  • deezer
  • qq
  • boomplay
What this chart cannot see
  • No TikTok measurement: the public sounds chart was removed in the TikTok One migration.
  • Age comes from the ISRC year, which a reissue makes younger. We under-report age, never over-report it.
  • Streaming charts lag the day by up to two days. Recognition data does not, which is why WONDER moves first.

Published 2026-07-19 13:00 UTC

13

The palette, in luminance

Three colours. The proof is the greyscale strip: if the accent still separates from paper and ink with the hue removed, it survives social compression.

In colour
paper
#F5F4EE
ink
#161616
accent
#FF3300
rule
#D4D2C9
mute
#666666
Desaturated
paper
#F5F4EE
ink
#161616
accent
#FF3300
rule
#D4D2C9
mute
#666666
14

The weight floor

Nothing lighter than 500 exists as a utility. font-light is a build error, not a review comment.

Medium 500 — the floor. Body, artist names, prose.

Semibold 600 — titles, labels, scores.

Bold 700 — ranks, headlines, the loud end.

0123456789 · 113.8 · 103.1 · 68.1

Numerals are Geist Mono, tabular. The column above lines up because the digits are the same width, not because they were nudged.