Why matches have shapes
A tennis score is a terrible compression format. 6-4 3-6 7-6 tells you a match was close; it doesn't tell you where it turned, who was untouchable for forty minutes, or that the whole thing came down to two points nobody who watched it will ever forget. But if you plot momentum point by point — every hold a breath, every break a lurch — a match stops being a score and becomes a shape. Blowouts are long clean slopes. Comebacks fold back on themselves. A deciding tiebreak is a storm pinned to the very edge of the chart.
RallyViz renders those shapes as 3D waves you can orbit, replay, and share: the story of a match without needing the footage. That's the whole product.
The honest origin
RallyViz is an exhibit from whey.dev, a one-person lab for building things that should exist. The person is Eder Christian, a frontend engineer who builds fast, with heavy AI assistance, usually to scratch his own itch.
This one started when he found the Match Charting Project and realized volunteers had hand-recorded professional tennis point by point, decades of it. He plotted one match's momentum, saw a shape, and lost a weekend to it: the museum went from an empty repository to a deployed site in two days of pure hyperfocus in July 2026. The git history doesn't lie, so this page won't either. That's the origin. Everything since is in the changelog.
Built on someone else's care
This product exists because that archive exists. Every match here comes from the Match Charting Project: thousands of professional matches charted by hand, point by point, by volunteers, created and maintained by Jeff Sackmann of Tennis Abstract. RallyViz is a lens; the light is theirs. Thank you.
RallyViz is non-commercial: the match data that powers it is licensed CC BY-NC-SA 4.0, and the museum honors that license fully. No ads, no paywall, nothing for sale. The full obligations, in plain language, are on the terms page. And if this kind of tennis nerdery is your kind of tennis nerdery, the best thank-you is to chart a match yourself.