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.
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).
-
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. We use the live total cloud-cover percentage and an empirical transmission curve:
The cubic shape is deliberate: thin or partial cloud lets most UVA through (UVA penetrates cloud better than visible light), while only heavy, full overcast removes a large share. At 100% cover this leaves about 30% of the clear-sky UVA — clouds dim UVA, they rarely eliminate it.
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.
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 →