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.

Why a model at all? No mainstream free weather API serves pure UVA — they all publish the erythemally-weighted UV Index, which is mostly UVB. So instead of reading UVA off an API, we derive it from the physics of where the sun is, plus live atmospheric data that we know affects UVA.

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:

UVA = baseline × altitude × aerosol × cloud × albedo

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:

baseline = UVA_MAX × cos(θ)k

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:

altitude factor = 1 + 0.06 × (elevation_m ÷ 1000)

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:

aerosol factor = exp( −(AOD × 1.3) × airmass )

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:

cloud factor = 1 − 0.7 × (cover ÷ 100)3

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:

SurfaceFactorWhy
Grass / default×1.00Low reflectance baseline
Water×1.00Low diffuse UVA reflectance
Sand / beach×1.04Dry sand reflects ~15–25%
Snow×1.10Fresh 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:

UVA Index = UVA irradiance ÷ 6

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 IndexBand≈ Irradiance
0–2Low< ~15 W/m²
3–5Moderate~15–35 W/m²
6–7High~35–47 W/m²
8–10Very High~47–65 W/m²
11+Extreme~66+ W/m²

The inputs, at a glance

InputSourceUsed for
Latitude / longitudeGeolocation or place searchSolar position
Date & timeYouSolar position
Solar zenith angleComputed (NOAA)Baseline + airmass
Terrain elevationOpen-Meteo ForecastAltitude factor
Cloud coverOpen-Meteo ForecastCloud factor
Aerosol optical depthOpen-Meteo Air-QualityAerosol factor
Ground surfaceYouAlbedo factor
UV Index (cross-check)Open-Meteo Air-QualitySanity 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:

Built to be recalibrated. Every coefficient above lives in one 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 →