Method / Sky brightness
Sky brightness from satellite data
Every exposure calculation starts with how bright your sky is. This is how First Rig estimates it from where you stand: a published, reproducible model driven by the VIIRS satellite’s night-time radiance, calibrated against ground measurements, and tested against measurements it never saw. The accuracy numbers below are the whole story, including the parts that are not flattering.
The model
Light escaping upward from every lit square half-kilometer within 300 km scatters back down from the atmosphere. Nearby light counts for more than distant light, and the fall-off steepens with distance. The sum of that weighted light, scaled by one calibration constant, is the artificial part of your zenith sky. Add the natural sky and convert to magnitudes.
How this is computed
S = Σ rᵢ · Aᵢ · dᵢ^−α(dᵢ) every VIIRS cell within 300 km
α(d) = 2.47 · (d / 350 km)^0.158
ZLR = S / 66.89 artificial light ÷ 171 µcd/m²
10^(−0.4 m) = 10^(−0.4 × 21.83) + ZLR × 10^(−0.4 × 22.0)r is the VIIRS radiance of a cell in nW cm⁻² sr⁻¹, A its area in km², d its distance from you in km. ZLR is the artificial light at the zenith in units of 171 µcd/m² (22.0 mag/arcsec²), the unit the calibration measurements are published in. Luminances add, so the artificial light is added to the natural sky before converting back to magnitudes. The natural sky is 21.83 mag/arcsec² (200 µcd/m²): the median the National Park Service measured on 295 moonless nights at dark sites, 2012–2025, once the artificial light was taken out. The often-quoted 22.0 is a textbook minimum (solar minimum, away from the Milky Way and zodiacal light); real natural skies are rarely that dark.
Source: Functional form: Duriscoe, Anderson, Luginbuhl & Baugh (2018), JQSRT 214, 133–145, doi:10.1016/j.jqsrt.2018.04.028, Eq. 9 and 11 (CC BY 4.0). Natural sky: median of 295 NPS Night Skies Program nights, 2012–2025 (decision D-29). Constants re-fitted by First Rig, September 2026; code in packages/physics/src/skyglow.ts and tools/skyglow/.
Why these constants, and not the published ones
Duriscoe et al. published the form with a = 2.3 and b = 0.28. They fitted it for the average brightness of the whole sky, using sites chosen well away from towns. Applied to the zenith, those constants are right in the desert and wrong in the suburbs: against 45 fixed sky-quality meters from farmland to city centers they read about half a magnitude too dark on average, and against handheld readings in suburbs 1–2 mag too dark. Nearby light matters more to the zenith than the all-sky fit allows.
So we kept their functional form and re-fitted its two constants for the zenith. The calibration level comes from the NPS camera measurements in their paper (the most careful photometry available); the shape also uses 1,072 handheld Globe at Night readings from 2024, with a free offset so that handheld readings, which run 0.47 mag/arcsec² brighter than the model even at the darkest sites, shape the curve without setting its level. The fit is steeper everywhere inside 300 km:
| Distance | α published | α ours | Weight published | Weight ours |
|---|---|---|---|---|
| 1 km | 0.45 | 0.98 | 1.0 | 1.0 |
| 3 km | 0.61 | 1.16 | 0.51 | 0.28 |
| 10 km | 0.85 | 1.41 | 0.14 | 0.039 |
| 30 km | 1.16 | 1.68 | 0.020 | 0.0034 |
| 100 km | 1.62 | 2.03 | 0.00058 | 0.000089 |
| 300 km | 2.20 | 2.41 | 0.0000035 | 0.0000011 |
The textbook Walker’s law, a single exponent of 2.5 at every distance, does far worse on the same data: 1.45 mag/arcsec² RMS, because it throws away the light domes of cities 100–300 km away that dark sites actually see.
How well it works
Each row is a comparison against measurements the model was not fitted to, except the last. Error is predicted minus measured, in mag/arcsec²; positive means the model says your sky is darker than it is.
| Measured against | Nights / sites | Bias | Typical error | RMS | Right Bortle | Within one class |
|---|---|---|---|---|---|---|
| NPS Night Skies Program, artificial light onlyCalibrated CCD camera, natural sky modeled out | 206 | +0.03 | ±0.10 | 0.26 | 70% | 97% |
| NPS Night Skies Program, total zenithSame nights, natural sky included | 300 | +0.02 | ±0.20 | 0.32 | 44% | 93% |
| Kyba et al. 2015 fixed SQM stationsFour continents, 2011–12, clear-midnight medians | 45 | +0.05 | ±0.25 | 0.65 | 51% | 93% |
| Globe at Night 2025Handheld SQM, crowd-sourced | 1,368 | +0.65 | ±0.51 | 1.06 | 39% | 79% |
| Duriscoe et al. 2018 sitesIn sample: these set the calibration level | 21 | −0.01 | — | 0.10 | 86% | 100% |
Typical error is the median absolute error; RMS is dominated by the worst few sites.
- At a dark site, the natural sky is the error bar. The model assumes a natural zenith of 21.83. On the NPS nights, the natural part alone ran from 21.46 to 22.22 (median 21.83), with airglow, the Milky Way and zodiacal light. No light-pollution model can do better than that spread under a Bortle 1–3 sky. Assuming 22.0 instead, as most models do, left a +0.15 bias on these nights; the measured median removes it. That comparison is partly circular, since the median comes from the same nights, and the other rows are not.
- The fixed-station misses are local. The four worst of Kyba’s 45 stations are a site among the Dutch greenhouses (the model reads 2.3 too bright), two sites whose own lighting is below the satellite’s half-kilometer resolution, and one whose published coordinates put it 85 km out of Tucson. Without them the typical error is 0.2–0.3.
- Handheld readings run bright. Globe at Night readings are 0.47 brighter than the model at every sky brightness, even at dark sites where the model cannot be that wrong. The likely causes are uncalibrated meters and a porch light in the field of view; we cannot tell which from the data. The gap grows to about 1 mag in bright suburbs, where a streetlight 50 m away can dominate a meter and no satellite pixel resolves it.
From ratio to Bortle
The Bortle scale is a visual scale with no meter readings of its own. Mapping it to mag/arcsec² is a convention, and published mappings disagree by up to a class; ours is the table below, applied at the lower edge of each range.
This model never says Bortle 1. With no artificial light at all it returns the typical natural sky, 21.83 mag/arcsec², and the table puts Bortle 1 at 21.9 or darker. A Bortle 1 night is a pristine site on a night when the airglow is also low, which a satellite map of artificial light cannot know about. At the darkest sites, read our answer as “Bortle 2 or better”.
| ZLR (× 171 µcd/m²) | mag/arcsec² | Bortle |
|---|---|---|
| 0 | 21.83 | 2 |
| 0.1 | 21.74 | 2 |
| 0.5 | 21.44 | 3 |
| 1 | 21.16 | 4 |
| 3 | 20.45 | 4 |
| 10 | 19.38 | 5 |
| 30 | 18.27 | 7 |
| 100 | 16.99 | 8–9 |
| Bortle | mag/arcsec² |
|---|---|
| 1 | ≥ 21.9 |
| 2 | 21.6 – 21.9 |
| 3 | 21.3 – 21.6 |
| 4 | 20.4 – 21.3 |
| 5 | 19.1 – 20.4 |
| 6 | 18.4 – 19.1 |
| 7 | 18.0 – 18.4 |
| 8–9 | < 18.0 |
What it cannot tell you
- It is the zenith only. A city’s light dome on the horizon can be several times brighter than the sky overhead, and it is what ruins a low target. This number does not include it.
- Moonless, cloudless and snow-free. Moonlight overwhelms everything here; cloud over a town reflects its light back and can brighten the sky more than tenfold; snow raises it too.
- The natural sky is a constant. Real natural skies vary by about ±0.4 mag/arcsec² with airglow, the Milky Way and zodiacal light.
- Your own lights. The satellite sees half-kilometer squares. A neighbor’s floodlight, a parking lot, the light over your own door is invisible to it and may matter more than anything on this page.
- Blue light is under-counted. The satellite’s sensor is nearly blind below 500 nm, so a town that switched to white LEDs looks dimmer from orbit than it is to your camera.
- Haze, terrain and altitude are fixed. The calibration sites are clear, dry and mostly in the western US. In hazier climates, expect brighter skies near towns and dimmer domes far from them. That has not been checked, and it is marked unverified.
- It is for about 1:30 a.m. That is when the satellite passes. Skies are often a few tenths brighter in the evening.
Why not the atlas everyone uses
Most light-pollution maps in astronomy apps are drawn from the 2016 World Atlas of Artificial Night Sky Brightness. It is careful science, and it is licensed for non-commercial use only. First Rig is a business, so we built our own model from openly licensed data instead, and publish it here so you can check it. We use two published facts from the atlas paper (the natural sky value and its luminance equivalents); we do not use its data.
Data and credits
- Satellite radiance: VIIRS Nighttime Lights (VNL) V2, annual 2024, average-masked
- Earth Observation Group, Payne Institute for Public Policy, Colorado School of Mines. Elvidge, C.D., Zhizhin, M., Ghosh, T., Hsu, F-C., Taneja, J. (2021), “Annual time series of global VIIRS nighttime lights derived from monthly averages: 2012 to 2019”, Remote Sensing 13(5), 922. Licensed CC BY 4.0. Obtained through the OpenLandMap mirror (T. Hengl, Zenodo record 17294744, CC BY 4.0).
- Model form and calibration sites
- Duriscoe, D.M., Anderson, S.J., Luginbuhl, C.B., Baugh, K.E. (2018), “A simplified model of all-sky artificial sky glow derived from VIIRS Day/Night band data”, JQSRT 214, 133–145, doi:10.1016/j.jqsrt.2018.04.028. Open access, CC BY 4.0. Their Table 1 measurements set our calibration level.
- Handheld sky-quality readings
- Globe at Night, NSF NOIRLab, 2024 and 2025 data. Licensed CC BY 4.0. Used to fit and test the model; not redistributed.
- Validation: NPS night-sky measurements
- U.S. National Park Service, Natural Sounds and Night Skies Division. A U.S. Government work, used for validation only.
- Validation: fixed SQM stations
- Kyba, C.C.M. et al. (2015), “Worldwide variations in artificial skyglow”, Scientific Reports 5, 8409, supplementary tables S2 and S3. Used for validation only.
- Natural sky value
- Falchi, F. et al. (2016), “The new world atlas of artificial night sky brightness”, Science Advances 2, e1600377. The value only; no atlas data is used.