How the UVA Index is calculated
This is the technical companion to the calculator. It walks through exactly how we estimate surface UVA irradiance (the unweighted 315–400 nm band, in W/m²), how we turn that into the 0–11+ UVA Index, every parameter and coefficient we use — and, just as importantly, the factors we deliberately leave out.
The model in one line
UVA irradiance is a clear-sky baseline (set by the sun's angle) multiplied by a chain of correction factors, each between roughly 0 and 1.1, for the conditions of the moment:
Every factor defaults to 1 (no effect) when its input is
missing, so the estimate degrades gracefully rather than failing. Each
factor is also shown in the calculator's Model breakdown table,
so any reading can be traced back to its parts.
Step 1 — Solar position (the clear-sky baseline)
The single biggest driver of UVA is how high the sun is in the sky. We
compute the solar zenith angle θ (0° =
directly overhead, 90° = on the horizon) in the browser from your
latitude, longitude and the chosen instant, using the
NOAA solar position algorithm — the same maths behind
the NOAA Solar Calculator.
The clear-sky baseline is then:
- UVA_MAX = 66 W/m² — the surface UVA for an overhead sun (θ = 0) under a clear sky, in line with published values for peak surface UVA.
- k = 1.2 — the exponent controlling how fast UVA falls off as the sun gets lower. A value near 1.1–1.3 matches published clear-sky curves; higher means a steeper drop toward sunset.
When the sun is below the horizon the baseline is zero, so night-time UVA is reported as 0.
Step 2 — Altitude
There is less atmosphere to scatter and absorb UV at higher elevations, so UVA rises with altitude. We use Open-Meteo's terrain elevation for your point and apply a simple linear enhancement:
That is roughly +6% per kilometre of elevation — deliberately below the 8–10%/km usually quoted for UV, because that figure is erythemal and much of the altitude enhancement comes from reduced ozone and Rayleigh scattering, both of which favour short wavelengths. UVA at altitude works through the reasoning.
Step 3 — Aerosols (haze, dust, pollution)
Airborne particles scatter and absorb UV. We take the live aerosol optical depth (AOD) from Open-Meteo's air-quality data and apply Beer–Lambert attenuation along the sun's actual path through the atmosphere:
- × 1.3 scales the reported broadband AOD up to a UVA-band optical depth (aerosol extinction is stronger at shorter wavelengths).
-
× 0.45 keeps only the optical depth that is
genuinely lost. UV aerosol mostly scatters rather
than absorbs, and that scattering is strongly forward-peaked, so
most of the "extinguished" light still reaches the ground as diffuse
skylight. Attenuating the full optical depth would model only the
direct beam and badly over-penalize total ground-level UVA — a
moderate haze should cost roughly 10–20%, not 45%. The factor is
1 − SSA × forwardwith single-scattering albedo ≈ 0.92 and a recovered forward fraction ≈ 0.6. -
airmass =
1 / cos(θ)(a simple secant approximation, capped near the horizon at θ = 89° so it can't blow up). It accounts for the longer slant path the sun's rays travel when it is low.
Step 4 — Cloud cover
Clouds are the most variable influence on ground-level UVA, so the model uses the best input available for your location, in two tiers.
Preferred — derived from live UV data. Open-Meteo publishes both the actual UV Index and a clear-sky UV Index for the same hour. Their ratio is a measured erythemal cloud transmission for the real sky overhead, which beats any parameterisation of a cover percentage. Because UVA penetrates cloud better than the UVB-dominated erythemal UV, we lift that transmission for the UVA band:
The exponent is below 1, so any attenuation is softened and the gap widens as cloud thickens — matching the observed spectral behaviour. A heavy overcast cutting erythemal UV to 30% leaves about 38% of the UVA.
Fallback — parametric, from cloud cover. When the live UV pair is unavailable, we fall back to the reported total cloud-cover percentage:
The curve is deliberately gentle, because a reported "100% cover" is a statement about sky coverage, not optical depth — an overcast sky is far more often thin stratus than a storm base. At 100% cover this leaves about 60% of the clear-sky UVA. Clouds dim UVA; they rarely eliminate it. UVA on cloudy days covers the underlying physics and the observed transmission by cloud type.
Step 5 — Surface reflectance (albedo)
Bright ground bounces UVA back up, adding to what reaches you. We apply a small multiplier based on the surface you select:
| Surface | Factor | Why |
|---|---|---|
| Grass / default | ×1.00 | Low reflectance baseline |
| Water | ×1.00 | Low diffuse UVA reflectance |
| Sand / beach | ×1.04 | Dry sand reflects ~15–25% |
| Snow | ×1.10 | Fresh snow is highly reflective |
The enhancements are deliberately modest: even very bright surfaces add only a limited amount to the downwelling UVA at a point. The much larger upwelling flux — snow reflects 80–90% of UVA straight back up — lands on your chin, nose and eyes rather than on a horizontal surface, so it doesn't belong in this term. Reflected UVA explains the distinction and lists albedo by surface.
From irradiance to the 0–11+ index
The raw irradiance in W/m² is precise but unfamiliar, so we put it on a 0–11+ scale just like the UV Index. The conversion is a single constant:
The divisor of 6 is chosen so a clear-sky overhead sun (~66 W/m²) reads about 11 — the same top-of-scale feel as a peak tropical UV Index. Because the index is strictly proportional to the irradiance, both numbers tell the same story. The category bands reuse the familiar WHO UV Index words and colours:
| UVA Index | Band | ≈ Irradiance |
|---|---|---|
| 0–2 | Low | < ~15 W/m² |
| 3–5 | Moderate | ~15–35 W/m² |
| 6–7 | High | ~35–47 W/m² |
| 8–10 | Very High | ~47–65 W/m² |
| 11+ | Extreme | ~66+ W/m² |
The inputs, at a glance
| Input | Source | Used for |
|---|---|---|
| Latitude / longitude | Geolocation or place search | Solar position |
| Date & time | You | Solar position |
| Solar zenith angle | Computed (NOAA) | Baseline + airmass |
| Terrain elevation | Open-Meteo Forecast | Altitude factor |
| Cloud cover | Open-Meteo Forecast | Cloud factor |
| Aerosol optical depth | Open-Meteo Air-Quality | Aerosol factor |
| Ground surface | You | Albedo factor |
| UV Index (cross-check) | Open-Meteo Air-Quality | Sanity check only |
The same model is also evaluated at every hour of the day to draw the UVA Index through the day chart, using each hour's own cloud and aerosol values.
What we don't take into account
This is an estimate built for clarity and transparency, not a calibrated radiometric measurement. Several real effects are simplified or left out on purpose — knowing them tells you when to trust the number and when to treat it as a rough guide:
- Total-column ozone. Ozone absorbs mostly UVB and only weakly affects UVA. The model has an ozone term but the free air-quality feed reports surface ozone (µg/m³), not the total-column Dobson Units the term needs — so we leave it at no-effect and show surface ozone for information only.
- Direct vs diffuse split. We model the total UVA arriving on a flat, open, horizontal surface. We don't separate the beam coming straight from the sun from the diffuse skylight, nor model the sky's brightness distribution.
- Spectral detail. UVA is treated as one band. We don't resolve the wavelength-by-wavelength structure within 315–400 nm, where atmospheric effects vary across the band.
- Cloud type and structure. Only a single cloud-cover percentage is used. Cloud optical thickness, layering, and broken-cloud "edge" effects (which can briefly raise UVA above clear-sky) are not modelled.
- Local geometry and shade. Buildings, trees, terrain, surface tilt and orientation, and your body's posture all change real exposure and are not considered.
- Glass and indoor settings. The estimate is for being outdoors in the open. UVA passes through window glass while UVB mostly doesn't, so indoor or in-car exposure differs and isn't modelled.
- Other minor absorbers (water vapour, NO₂, etc.) and the wavelength-dependence of surface albedo are not included.
- No ground-truth calibration. The coefficients are set from published literature, not fitted against a local UVA sensor, so absolute values carry real uncertainty.
MODEL block in the open-source code, so the model can
be tuned against reference data without touching the rest of the app. The
full source is on
GitHub.
So how accurate is it?
Treat it as a well-grounded relative guide: it captures how UVA changes with the sun's height, the season, your latitude and altitude, and the day's cloud and haze — and it behaves correctly at the extremes (clear midday sun reads high, night reads zero, heavy overcast drops sharply, higher altitude reads higher). The absolute W/m² figure is a physically reasonable estimate, not an instrument-grade reading. For why this estimate exists at all, see About this site.
Try the calculator and see the breakdown →