Noctography
Noctography
Noctography Paul Haworth Nightscapes
Where are you shooting
Favourites
Sky darkness {{ skyLine }}

{{ greeting }}

{{ greetLine }}

Best window tonight
{{ bestRange }}

{{ bestSub }}

Mist {{ fogLine }}

Cloud
{{ cloudVal }} {{ cloudSub }}
Air temperature {{ airVal }} {{ airSub }}
Wind {{ windVal }} {{ windSub }}
Sun set / rise {{ sunVal }} {{ sunSub }} {{ solLine }}
Moon {{ moonVal }} {{ moonSub }} {{ lunLine }}
Darkness {{ darkRange }} {{ darkSub }}
Real-world Bortle {{ rwbVal }} {{ rwbSub }}
Aurora · peak Kp {{ kpVal }} {{ kpSub }}
Milky Way core {{ mwVal }} {{ mwSub }}
ISS {{ issVal }} {{ issSub }}
Starlink {{ slVal }} {{ slSub }}
Looking ahead Next 10 nights

{{ aheadLead }}

{{ a.dayName }} {{ a.dayNum }} Cloud {{ a.cloudLabel }} Moon {{ a.moon }} Sky {{ a.sky }} Met {{ a.met }} Kp {{ a.kp }} Sun {{ a.sunSet }} {{ a.sunRise }} Moon {{ a.moonRise }} {{ a.moonSet }}
{{ aheadHint }}
Cloud — share of the sky covered through the dark hours. Green is clear, amber is patchy, grey is covered. Sky — real-world Bortle, your site with that night's moon and haze counted in. Met — meteors an hour at their best. Kp — aurora strength, 5 and up is worth watching. Sun — sunset above, sunrise below. Moon — moonrise above, moonset below.
Eclipses ahead {{ e.line }}
Tools
More coming soon
Meteor outlook

{{ ribbonTitle }}

Each column is one night, read dusk at the top to dawn at the bottom.

{{ c.k }} {{ c.v }}
{{ ribbonRead }}
DUSK 00:00 DAWN
{{ ribbonEl }}
{{ scrollHint }}
Meteor rate Moon up, left edge Cloud, right edge Twilight

{{ nightTitle }}

{{ nightSub }}
{{ s.k }} {{ s.v }} {{ s.s }}
{{ chartEl }}
Capturing images

{{ camLine }}

{{ airLine }}

{{ sw.verdict }}

{{ b.k }} {{ b.note }}
{{ m.k }} {{ m.v }}

{{ sw.facts }}

What the numbers mean

The headline figure is meteors per hour you could expect to see, not the shower's quoted ZHR. One relation is evaluated every 15 minutes through the night, separately for every active shower and the sporadic background:

rate = ZHR(t) × sin(h) × r^(lm − 6.5) × clear × 0.75

ZHR(t) is the shower's strength at this point in its cycle, anchored to solar longitude rather than calendar date, with a narrow peak and a broad component for streams with long wings. sin(h) is the radiant altitude, tapered below 8° for extinction and terrain. r is the population index — an exponent, not a multiplier, which is why one lost magnitude of sky darkness roughly halves the rate.

Limiting magnitude is built in linear brightness units: airglow floor at 22.0, artificial ground light from the atlas, twilight, then moonlight from the Krisciunas & Schaefer (1991) model with Kasten & Young airmass so a setting moon fades rather than snapping off. Thin cloud counts twice — it blocks part of the sky and scatters town glow and moonlight back down, so the same 60% high cloud costs nothing at a pristine site and about a magnitude at Bortle 5. Humidity above 65% adds haze. Everything is then scaled by 0.75, because ZHR assumes a perfect observer watching the whole sky at once.

Real-world Bortle is that same limiting-magnitude model turned back into a Bortle class. The atlas tells you what a site reads on a perfect moonless night; this tells you what it reads tonight, with the moon, the haze and the town glow bouncing off thin cloud all counted. It is evaluated at the zenith every 15 minutes and quoted as the median across the dark hours, so a single bright half-hour does not define the night. A Bortle 3 site under a gibbous moon genuinely performs like a Bortle 5 one, and that is the number worth planning against.

Shower parameters are hand-encoded from the International Meteor Organization's calendar and working list, with no outburst or dust-trail predictions. Cloud, humidity, temperature and dew point come from Open-Meteo, interpolated smoothly between hourly samples. Sky darkness comes from David Lorenz's 2025 light pollution atlas, baked into the app and used as a continuous measurement — Bortle class is shown for familiarity only. Beyond 16 days the cloud figure is what this place typically does at that time of year, averaged over three years and a ±3 day window: useful for choosing a week, and it tells you nothing about the night itself.

More

Constantly being updated

Noctography is where I keep the tools I actually use in the field. I'm adding to them all the time. If there's an idea you have, let me know via the Feedback button.

Data sources

Where every number comes from

Noctography has no server of its own. It reads these feeds directly from your device and does the astronomy in the browser. Credit where it is due.

Live feeds
CelesTrak — orbital elements celestrak.org Two-line elements for the International Space Station and for launches in the last thirty days. Dr T.S. Kelso's service, free for public use. The orbits themselves are propagated on your device, not fetched as a list of passes.
Baked into the app, no network Method Worked out here, not fetched
Real-world Bortle Not a published figure. The Lorenz atlas value for your site, plus moonlight (Krisciunas & Schaefer), haze from Open-Meteo humidity, and town glow scattered back down by Open-Meteo cloud — evaluated at the zenith through the dark hours and converted back to a Bortle class. Shown so a dark site under a bright moon is not mistaken for a dark night.
Satellite passes SGP4, the standard orbit model, run in the browser against CelesTrak elements. A pass counts only when the satellite is in sunlight while you are not, and brightness comes from the usual range-and-phase-angle magnitude model. Only passes worth going outside for are named: the station has to reach magnitude −1 or better and climb above 20°, a train has to hold magnitude 3.2 and 25°. Anything fainter gets lost in the sky it crosses, so it is left out rather than listed. Three stars means bright and high, judged on each object's own scale. Starlink is only reported for launches inside the last eight days, while a batch is still strung out in a line; after that they spread around the orbit and stop being a spectacle.
Mist and fog risk Radiation fog needs three things at once: air close to its dew point, almost no wind to mix it away, and a clear sky to radiate heat to — which is exactly the night you would otherwise drive out for. Temperature, dew point, wind and forecast visibility come from Open-Meteo; the warning fires when all three line up, and defers to the visibility forecast where one exists.
Eclipses Worked out from the same sun and moon positions as everything else: a lunar eclipse when the moon enters the Earth's shadow cone, a solar one when the moon's disc crosses the sun as seen from your position on the globe rather than from its centre — which is what makes a solar eclipse local. Enough to tell you one is coming and roughly when. Times are to the nearest few minutes and the covered fraction is approximate, so check a dedicated prediction before planning a trip around one.
Looking ahead Ten nights ranked on clear sky first, then real-world darkness, then how much is going on overhead. Cloud is live forecast for about 16 days and climatology beyond it, shown faded when it is climatology. Aurora is only shown for nights the NOAA forecast actually reaches.

Sun, moon and radiant positions are computed on your device with no third party library. Nothing you enter, and no location, is sent anywhere except to the feeds above in order to fetch a forecast.