Before the Moon Comes Up
A coral colony cannot move to find a mate. On a few nights a year it releases its eggs and sperm into the sea, and if its neighbours do the same within the same hour, some of them meet. The night, out of all the nights, is set by the Moon. How a coral counts nights is still being worked out, and one recent answer is testable against every spawning anyone has written down.
1. Three clocks
In 1984 six biologists working on the Great Barrier Reef (Peter Harrison, Russell Babcock, Gordon Bull, James Oliver, Carden Wallace and Bette Willis) published "Mass spawning in tropical reef corals" in Science: many species there release their gametes together, on the same few nights. Two years later, with largely the same authors, came "Synchronous spawnings of 105 scleractinian coral species on the Great Barrier Reef". The pattern turned out to run on three clocks: a season, roughly the month; a night, counted from the full moon; and an hour, counted from sunset. Divers have been recording it ever since, and in 2021 Andrew Baird and 90 co-authors gathered those records into the Coral Spawning Database: 6,178 observations from 181 sites across the Indo-Pacific, released into the public domain (CC0).
Each record gives a place, a date and usually a start time. That is enough to put the sky back over it. Everything on this page recomputes the evening each record happened on, sunset and moonrise at that reef on that date, with an ephemeris checked against NASA JPL's (section 5), running in your browser.
Rows are evenings, counted from the full moon's local calendar date (the database's own convention). The pale band in each row is the Moon: before full moon it is already up at sunset; after full moon it rises later every evening, by a median of 45.9 minutes at these sites (10th to 90th percentile 34.3 to 58.2), and a dark gap opens after dusk. Records without a start time are counted in the row label but not drawn.
2. Every timed spawning, with its Moon
Put all of them on one picture. Across the axis, nights after the full-moon date; up the side, hours after that evening's sunset. The line is the median moment the Moon rose on those evenings at the reefs concerned, and below it the sky was dark.
Of the 4,189 spawnings with a start time in the evening, 3,302 (78.8%) began with the Moon below the horizon. On the busiest nights it is nearly all of them: 628 of 679 on the fourth night, 776 of 788 on the fifth, 629 of 632 on the sixth. This is a description, not yet a test. Spawning a few hours after sunset, several nights after full moon, would land in the dark whatever set the night, because by then the Moon rises late. The question is what the coral is counting.
3. A timer set by the first dark dusk
In 2021 Che-Hung Lin, Shunichi Takahashi, Aziz J. Mulla and Yoko Nozawa, from Academia Sinica in Taipei and the University of the Ryukyus, shaded colonies of the coral Dipsastraea speciosa in the field on different nights around the full moon. Their abstract:
"When corals in the field were shaded 1 and 3 d before the full moon or 1 d after the full moon, spawning always occurred 5 d after shading commenced. [...] In nature, moonrise gets progressively later during the course of the lunar cycle, shifting to after sunset following the day of the full moon. Our results indicate that this period of darkness between sunset and moonrise triggers synchronized mass spawning of D. speciosa in nature."
They wrote that they expected the model to apply to other corals. In 2025 R. de la Torre Cerro and thirteen colleagues darkened the post-sunset sky over the table coral Acropora aff. hyacinthus in Palau, and found that corals kept dark after sunset "for at least two to three consecutive nights advanced their spawning compared to controls". Both are experiments, which the database is not. But the database can ask a question neither experiment could: in the wild, across hundreds of reefs and forty years, does the spawning night move when the first dark dusk moves?
The first dark dusk does move. It usually comes on the evening of the full-moon date or the one after, and which one depends on when in the day the Moon is full and on where the Moon is in its tilted orbit relative to that reef's latitude. So nature runs the experiment: in some cycles the first dark dusk falls a day later than in others, relative to the same calendar date. Here is how often, for each hour of the day the full moon can fall on, across the database's 727 lunar cycles (a reef and a full moon).
Each bar is one hour of the day at which the Moon was exactly full, local time, and the lunar cycles at the database's reefs whose full moon fell in it. When the Moon was full before 10:00, the first dark dusk came that same evening in 299 of 300 cycles (the exception, at Kochi, 33°N, came the evening before). From 21:00 on it came the next evening in 82 of 84. In between, geometry decides.
If the timer is real and general, a species on a reef should spawn one night later, counted from the full-moon date, in the cycles where its first dark dusk came one day later. The test is a single slope, called β here: the shift in the spawning night when the first dark dusk slips by a day, measured within each species on each reef so that no species is compared with another. β = 1 is the timer. β = 0 is a spawning night that ignores the dark dusk. The uncertainty is a bootstrap over spawning events rather than records, because a single mass spawning can be dozens of rows.
Each point is the average, over spawning events whose full moon fell in that three-hour window, of how many nights later than its species-on-this-reef average the spawning came. Bars are ±1.96 standard errors across events. The timer predicts a rise of about one night across the afternoon and evening, where the first dark dusk slips to the next day. A flat line is a spawning night that did not notice.
4. What the database said, in the order it was asked
The order matters, so here it is. I ran the test on all the records first, then broke it down by region and looked at six regions one at a time. One of them, the central and northern Great Barrier Reef, the best-sampled region in the database, showed the step clearly. A result found by looking at six subgroups is the kind of thing chance produces, so before running anything else I wrote down a test on the regions I had not looked at, with the code, the decision rules and my expectation, and pushed it to this project's history (PREREGISTRATION.md, 2026-09-26 06:38 UTC; the history itself is private, the file is here). Only then did I run it.
The pre-registered answer. On the regions held out, β = −0.40, 95% interval −1.24 to 0.41, over 217 spawning events. The interval excludes 1. Across those reefs, when the first dark dusk came a day late, the spawning night did not.
It is what I expected, and wrote down that I expected, because those regions were already inside the pooled figure: all records together give β = 0.07 (−0.37 to 0.48, 454 events), an interval narrow enough to tell 0 from 1.
The Great Barrier Reef result does not survive a harder look. Its β of 0.73 has a permutation p-value of 0.028 (shuffling which spawning events had a late dark dusk, within each region, 1,000 times). That was one of six regions examined, and six looks at a p of 0.028 is roughly one chance in six of seeing it somewhere by luck. Demanding at least 30 minutes of darkness after sunset before calling a dusk dark, which is closer to what a coral could plausibly sense, drops it to 0.36 (−0.09 to 0.76). The nearest thing to a replication, the southern Great Barrier Reef, pre-registered as a secondary test, points the other way on 22 events. The one secondary that agrees is Palau, where the 2025 darkening experiment was done: β = 0.84, on 11 events, with an interval running to 4.
Neither can the database settle the species the timer was found in. It holds 67 records of Dipsastraea speciosa, 18 of them from Lyudao (Green Island), Taiwan, contributed from Lin and Nozawa's 2017 study, and in every Lyudao cycle recorded the first dark dusk fell on the full-moon date. With no cycle that slipped there is nothing to compare, and across all its sites the species gives an interval from −3 to 3.
And the other obvious clock does not win either. A coral that tracked the Moon's phase continuously would spawn later, counted from the calendar date, the later in the day the Moon was full. Fitting that and the dark dusk together (an exploratory analysis, run after the pre-registered ones), the dark dusk's coefficient is −0.17 (−0.73 to 0.38) and the phase coefficient 0.47 (−0.19 to 1.05). The two are too entangled in these records to separate, and in no version of the analysis does the dark dusk carry the one-night shift the timer predicts.
5. The database's own arithmetic, checked
The database carries its own night count for every record, built from a table of full-moon dates it ships alongside. Both can be checked against the sky.
- The full-moon table. All 754 full moons from 1970 to 2030 in the database's table fall within 3.4 minutes of JPL's DE440s ephemeris (median 1.3 minutes), and none is missing.
- The night counts. Recomputed from scratch here, the database's night count agrees on 6,174 of 6,178 records. Two of the four disagreements are a matter of convention: two records from Eilat on 3 August 2016, almost exactly between two full moons (14.7 days from each), which the database assigns to the nearer full-moon date and this page to the nearer full-moon instant; the two distances differ by less than an hour. The other two are a small error in the database: an Indian reef at UTC+5:30, where the full-moon table only has columns for whole-hour time zones. The full moon of 21 March 2008 fell at 18:40 UTC, which is 00:10 on the 22nd in India, and the database dated it the 21st, so both records there are one night off.
- This page's own ephemeris (the Sun and Moon from Meeus's Astronomical Algorithms, the same engine as this site's sky map) was measured against JPL on every full moon from 1970 to 2030 (worst 5.1 minutes) and on 400 random evenings at the database's reefs: sunset within 4 seconds, moonrise within 16 seconds, and whether the Moon was up at sunset the same on all 400.
6. What this cannot tell you
- It is observational. Lin and colleagues moved the dark dusk with shade cloth and watched the spawning move. The database can only compare cycles that happened to differ, and anything else that differs with them (tides, weather, the observers) rides along.
- The records are coarse for this question. A species on one reef scatters by about 1.8 nights around its own average across records, because spawning runs over several nights and the database lists each night separately. A one-night shift in a third of cycles is small against that, which is why the intervals are wide and why the regional ones mostly cannot decide.
- Not every record saw the natural sky. 2,609 records are ex situ, corals watched in tanks rather than on the reef. Restricting to the 3,569 in situ records gives the same answer overall (β −0.24, −0.92 to 0.36). Artificial light at night is its own confound: Davies and colleagues (2023) found that for most genera, corals on light-polluted reefs spawn one to three days closer to the full moon than on unlit ones, and suggest that artificial light changes when a dusk is perceived as dark.
- It tests the timer as a general rule, not as a mechanism. A timer that runs only in some species, or only in some seasons, or that needs several dark evenings rather than one (as the 2025 Palau result suggests) could be real and still not show up here. What the database rules out is the simple, general version: first dark dusk, then a fixed count of nights, across corals.
- Nothing here is new to the corals. They spawned a few nights after full moon, in the hours after dark, the whole time. The open question is only which feature of the Moon's cycle they read, and the answer in these records is: not, in any way that shows, the evening it first failed to be in the sky at dusk.
The check
- Run it yourself: node verify-before-the-moon-comes-up.mjs in an empty folder downloads this page's engine and data and checks every number above: the ephemeris against JPL, the database's full-moon table and night counts, every record re-placed on its evening, every test re-run, and the page's printed figures against the results (the script).
- In the page: the evenings in section 1 are computed live in your browser; the button in section 4 reruns the bootstrap on the records you downloaded.
- The data: spawn.json is every record, the database's own night counts beside it, and each evening's sunset, moonrise and dark gap as computed here. results.json is every test. jpl.json is the JPL reference.
- A correction made before publishing: the first count of spawnings that began in the dark used a shortcut (the Moon down at sunset and rising after the start) and gave 3,239. The verifier's second method, the Moon's altitude at each start instant, gave 63 more: young crescents near new moon, up at sunset and set before spawning began. The altitude is right, and it is the number printed.
- What was fixed in advance and what was not: the held-out test and its two secondaries were written down and pushed before being run. The six regional looks came before that and are exploratory. The permutation test, the 30-minute definition, the in-situ restriction and the joint model came after, and are sensitivity analyses. One sentence of the pre-registration, describing the exploratory results, was wrong (it said the five regions other than the central Great Barrier Reef scattered around zero; Fiji did not), and is corrected there in a dated erratum rather than edited.