wine.codehan.org: A Root/Leaf/Flower/Fruit Calendar for Wine Tasting
wine.codehan.org: A Root/Leaf/Flower/Fruit Calendar for Wine Tasting
If you've spent time around biodynamic winemakers, you've probably heard some version of "don't taste on a root day." That idea comes from Maria and Matthias Thun's book When Wine Tastes Best, which claims wine tasting is measurably better on "fruit" and "flower" days than on "root" and "leaf" days — a classification tied to which constellation the Moon is passing through. I wanted a tool that actually computed this properly instead of trusting a printed almanac, so I built wine.codehan.org: a single HTML file, no backend, no dependencies, that tells you today's day type from a real lunar ephemeris.
The core idea: root, leaf, flower, fruit
The Thun system assigns each of the twelve zodiac constellations an element and a day type:
| Day type | Element | Constellations | Tasting |
|---|---|---|---|
| Fruit | Fire | Aries, Leo, Sagittarius | Best — fruit and structure at their fullest |
| Flower | Air | Gemini, Libra, Aquarius | Good — aromatics open up |
| Leaf | Water | Cancer, Scorpius, Pisces | Poor — acid dominates, wines read flat |
| Root | Earth | Taurus, Virgo, Capricornus | Poor — flavours draw inward, tight |
As the Moon moves through its ~27.3-day sidereal cycle, it crosses these twelve constellations in order, and each crossing flips the "day type" — sometimes more than once within a single calendar day.
Why this needed real astronomy, not a lookup table
Most biodynamic calendars just print the transition dates for the year. I wanted the page itself to compute the Moon's position, for a couple of reasons that matter if you actually care about getting this right:
Sidereal, not tropical. Astrology software reports the Moon's position in evenly-spaced 30° "signs." The Thun system cares about the actual patch of sky the Moon is crossing — the real constellations, which have unequal widths (Scorpius is barely 23° wide; Virgo is nearly 44°). Precession has also dragged the tropical signs almost a full sign away from the constellations they're named after, so "the Moon is in Cancer" astrologically is roughly "the Moon is in Gemini" astronomically. The site computes the sidereal position directly by converting Meeus's tropical longitude into the J2000 star frame.
A real ephemeris, not an approximation. The Moon's apparent longitude comes from the 59-term periodic series in Meeus's Astronomical Algorithms, chapter 47, table 47.A — the same series used in professional almanac software — including an abridged nutation correction. It checks out to 0.0001° against Meeus's own worked example. Since the Moon moves about 0.55°/hour, that's accurate enough to place transition times within a minute or two.
Real constellation boundaries. The twelve segment widths come from where the actual IAU constellation outlines cross the ecliptic, with Ophiuchus folded into Scorpius since Thun's system only uses twelve. Thun herself drew her boundaries by eye, so individual transitions can differ from her printed calendar by a few hours — but the underlying sky doesn't lie.
What the page actually shows
- A hero card for the selected day: current day type, element, plant part, and tasting verdict, computed for "now" if you're looking at today, or local noon otherwise.
- A ribbon showing where the Moon sits right now along the full 360° ring, with each constellation segment sized to its true angular width — visually, it's obvious why some day types run three days and others barely last thirty-six hours.
- A two-month calendar grid, where each day is colored by whichever day type dominates it, with a thin bar showing the exact split when a day contains more than one transition.
- A legend and methodology section that spells out exactly what the calculation does and doesn't cover (no lunar nodes, perigee/apogee, or eclipse windows — Thun treats those as separately unfavorable, and getting them right needs the lunar latitude series, which felt worse to approximate than to omit).
Everything is client-side. The whole thing — ephemeris, UI, both language packs — is one HTML file with an inline <script>, no build step, no API calls, no tracking.
Being honest about the evidence
The one thing I wanted to get right above all was not overselling it. The page says so directly, in both languages:
None of this has reproducible empirical support. The blind tastings run against it — several rounds in the UK during the 2000s among them — found no statistically significant difference. Treat it as an amusing way to choose the order of the bottles, not as cause and effect.
That's the spirit of the whole project: do the astronomy properly, and be equally rigorous about admitting that the wine-tasting claim it's built around hasn't held up under controlled testing. I still check it before opening something from the cellar — it's a fun way to decide which bottle goes first on a given night — but I'd never use it to explain away a bottle that didn't taste the way I expected.
Bilingual by default
Since I split time between Chinese and English, the whole interface — including the methodology footnotes — is fully localized (中文 / EN, detected from browser language and remembered via localStorage), right down to constellation names and the typographic treatment of each language's headline type.
If you're curious about a specific date, the picker lets you jump anywhere; the ephemeris scans transitions for a five-month window around whatever month you're viewing, so scrolling through the calendar stays instant.