How the numbers are worked out
A photon budget. Every pixel collects light from the target and light from the sky, plus noise the camera adds on its own. Integration time is the point where the target's signal stands far enough above the combined noise.
The model
For a total integration T made of subs of length t, the per-pixel signal-to-noise ratio is
SNR = S·T / √( S·T + B·T + (T/t)·(RN² + D·t) )
where S is the target's photo-electrons per second per pixel, B the sky's, RN the read noise per sub and D the dark current. Solving for T at a chosen SNR:
T = SNR² · (S + B + RN²/t + D) / S²
That one line is the whole calculator. Everything else is working out S and B.
Target signal
Each object's mean surface brightness comes from its catalogue magnitude and size: SB = mag + 2.5·log10(area in arcsec²). That mean is often misleading: a nebula's catalogue magnitude may belong to the embedded star cluster, a galaxy's size may include a faint outer disc nobody images, a planetary's tiny bright ring may sit inside a huge faint halo. For those objects the effective figure is pinned by hand, calibrated against what smart-telescope owners report for the structure they are actually trying to capture, and the target page shows the value used. Open clusters get a nominal value: their stars are point sources and the goal is colour, not depth.
Photons per pixel then follow from the aperture area, the pixel scale squared, a mag-0 flux of 1000 photons/s/cm²/Å, 1000 Å of bandwidth per colour channel and a combined efficiency of 0.5 for sensor QE, optics and filters.
Sky background
| Bortle | Description | Sky brightness (mag/arcsec²) |
|---|---|---|
| 1 | Excellent dark site | 22.0 |
| 2 | Typical dark site | 21.8 |
| 3 | Rural | 21.5 |
| 4 | Rural / suburban transition | 21.0 |
| 5 | Suburban | 20.5 |
| 6 | Bright suburban | 19.8 |
| 7 | Suburban / urban transition | 19.1 |
| 8 | City | 18.5 |
| 9 | Inner city | 17.8 |
Zenith, no Moon. A first-quarter Moon adds roughly one Bortle class; a full Moon two or three.
Altitude and the air
Light from a target low in the sky arrives through more atmosphere. The number of air masses at altitude h follows Kasten and Young: X = 1 / (sin h + 0.50572·(h + 6.07995)−1.6364) — one at the zenith, two at 30°, six at 10°. A typical site takes about 0.2 magnitudes of light per air mass, so a target at 30° arrives about 17% dimmer than the same target overhead, and one at 15° about 40% dimmer.
The tables on this site are zenith figures, because a page about a target and a telescope does not know where you are or when you will point at it. The tonight planner does know: it works out each target's mean altitude across the window it actually has and applies the extinction, which is why its figures run longer than the tables for anything that stays low. The sky is deliberately not dimmed to match — skyglow scatters through the same long path and light domes sit on the horizon, so the sky near the ground is brighter, not fainter. Dimming the target alone understates how much worse low altitude is, and never overstates it.
What counts as dark
Three thresholds, and the planner uses whichever the night offers. Astronomical dark is the Sun more than 18° below the horizon: the point at which faint nebulae and galaxies are worth the integration. Nautical twilight (12°) is already good enough for bright clusters, globulars and planetary nebulae, so those get the wider window and everything else gets the narrow one. Above about 49° of latitude there is no astronomical dark at all around midsummer, and at higher latitudes no nautical dark either; where that happens the planner says so and falls back rather than inventing a time.
Filters
A dual-band filter is modelled as passing 15% of the skyglow, 70% of an emission-line object's light and 15% of a broadband object's. That is why it is a large win on nebulae and a large loss on galaxies and clusters. “No filter” means the scope's own UV/IR-cut, Astro or clear position; the filters guide lists what each maker calls what, and why CLS and UHC filters are not modelled.
Quality levels
| Level | Per-pixel SNR | What it looks like |
|---|---|---|
| Quick look | 3 | Target obvious, still noisy |
| Solid | 6 | Clean enough to share |
| Showpiece | 12 | Smooth faint detail, print-worthy |
SNR is measured per pixel at the scope's native scale for the effective surface brightness above. Downsampling, binning and noise reduction all make an image look better than its per-pixel SNR suggests, which is why "quick look" is usable at all. Two adjustments: objects smaller than 15′ are viewed at full resolution rather than downsampled, so their SNR target rises by up to 1.5×; and every level has a minimum sub count (10, 30 and 90) because stacking software needs frames to reject satellites, wind and bad tracking, whatever the maths says.
Sky brightness from your location
"Use my location" estimates your zenith sky brightness from satellite night-lights data. The source is the VIIRS Day/Night Band annual composite published by NASA (public domain, via the GIBS tile service), resampled to about 2 km. Every lit cell is treated as a light source and its glow spread over the surrounding 250 km with a smooth version of Walker's law (glow falling as distance to the power 2.5, flattened within 3 km). The sum is added to a natural sky of 22.0 mag/arcsec² and the two free parameters are fitted to published sky-meter readings at 25 sites from central London to Death Valley. Expect the estimate to land within one Bortle class of a real sky-meter reading; terrain, coastlines, LED conversions since the composite and the current state of your local streetlights all move it. It is a planning number, and you can always pick a class by hand instead.
Your position never leaves your browser as such: the page fetches one pre-computed 1° × 1° tile (2,500 bytes) and reads the cell you are in. The server sees only which degree square was requested and keeps no access log for this site.
What the model ignores
- Haze and transparency. Extinction with altitude is modelled, but only for a clear night at an average site; plan on the darker side of your Bortle class only on a good one. The Moon is accounted for in the planner and nowhere else.
- Frames the app rejects. Wind, satellites and poor tracking cost real subs; add 10 to 20% in practice.
- Field rotation in Alt-Az mode, which crops the stacked edges over a long session.
- Colour balance. The figures are for a single Bayer channel; a red emission target is mostly red-channel data.
- Your taste. "Solid" is a judgement, not a law.
Read noise figures are not measurements of individual units. Where the maker states one (DwarfLab gives 0.6 e⁻ for the DWARF 3) we use it. Otherwise we take the figure for the same sensor at its high-conversion-gain switch point from ZWO's published camera charts (IMX462 1.0, IMX585 1.0, IMX662 1.2, IMX676 0.8 e⁻; DwarfLab's 0.6 for the IMX678 is also used for the Origin Mark II), which is where the apps are understood to operate; for the Seestar S50 the app's gain of 80 is known and sits exactly there. Where an app's gain is not public (Seestar S30 and S30 Pro, Vaonis, DWARF II, Unistellar, Celestron) the figure is an assumption, and if an app runs its sensor below that switch point the real value is several times higher and dark-site times correspondingly longer. Catalogue magnitudes and sizes are the commonly published values and are approximate; corrections are welcome via the address on the about page.