← all 100 themes
Theme 064 · Data storytelling

Bar Chart Race

The sports-broadcast energy of a ranking race: bars jostle for position while a giant ghosted clock ticks in the corner. Acme Pulse enters as a new bar that shoots straight to #1, and the anomaly is a leader that plunges down the leaderboard in coral.

readability ●●●trust ●●○effort med
1 · HOOK0:00–0:08

Bars grow in from the left and swap ranks every beat while the 38 ticker counts up; the last rank swap lands on the downbeat into the drop.

Acme
2 · REVEAL0:08 (drop)

On the drop the teal Acme Pulse bar slides in from the left edge with speed lines and pushes everyone down one rank; the mark docks at the bar end on beat 2.

3 · PROOF MOMENT0:12–0:32

Four teal bars hold steady while Checkout conversion falls from #1 to #5 along a dashed trail; it turns coral on the snare, the clock freezes at 09:42 and the card and Roll back pop in on the next bar.

Acme
4 · CTA0:36–0:45

The race resets to one teal bar that grows to Resolved in 6 min; headline lands on the downbeat, clock stops at 09:48, Start free pulses on the final beat.

COMPONENT KIT

MOTION · MUSIC

WHY / RISK · ADAPT IT

Everyone understands a race, and the fall of the leader is a dramatic, instantly readable anomaly. Risk: races imply competition — keep the Acme bar as a watcher, not a winner, after the reveal.

Adapt to your product: Race whatever your product ranks: top endpoints, busiest queues, most-used features. Let your product enter as the bar that sees everything, and show the anomaly as a rank collapse.

References: flourish.studio/visualisations/bar-chart-race/ (bar chart race template: rank swaps, timed captions, counter) · flourish.studio/blog/animated-charts/ (why races and time sliders work for data stories) · observablehq.com/@d3/bar-chart-race (D3 reference implementation of keyframed rank interpolation)