A window that easily passes in Málaga can fall short in Burgos. That's not a figure of speech: Spain's building code, the Código Técnico de la Edificación (CTE), divides the country into climate zones and, for each one, sets the maximum amount of heat a window may let escape. The colder the winter, the stricter the limit. And the zone doesn't depend on the province alone, but on altitude too: within the province of Granada there are villages in zone A and villages in zone E.
In this guide you'll find the climate zone of all 47 mainland provinces, with the capital and the altitude bands that change it, the maximum value the CTE sets for each zone and, most usefully, which combinations of profile and glazing meet it and which don't. Spoiler: almost everything comes down to the glass, not the profile.
What the letter and number of your climate zone mean
Each zone is written as a letter and a number, for example D3 in Madrid or B4 in Seville. The letter measures how harsh the winter is: it runs from α, found only in the Canary Islands, to E, the coldest. The number measures the summer, from 1 to 4, and the higher it is, the hotter.
When choosing a window, the letter matters most, because it sets the thermal transmittance limit. The number comes into play in a different decision, how to keep the sun out, and we'll get to that further down.
Climate zone of each province under the CTE
The table shows the zone of each provincial capital and how it changes with the altitude of the municipality, according to table a of Annex B of the DB-HE (2019 version, revised in 2022). If you don't live in the capital, look up your town's altitude and see which band it falls into: what counts is the altitude of the town centre.
| Province | Capital (altitude) | Zone of the capital | Zone by altitude of the municipality |
|---|---|---|---|
| Albacete | Albacete (681 m) | D3 | up to 450 m: C3 · 451–950 m: D3 · above 950 m: E1 |
| Alicante/Alacant | Alicante (5 m) | B4 | up to 250 m: B4 · 251–700 m: C3 · above 700 m: D3 |
| Almería | Almería (16 m) | A4 | up to 100 m: A4 · 101–250 m: B4 · 251–400 m: B3 · 401–800 m: C3 · above 800 m: D3 |
| Araba/Álava | Vitoria-Gasteiz (539 m) | D1 | up to 600 m: D1 · above 600 m: E1 |
| Asturias | Oviedo (231 m) | D1 | up to 50 m: C1 · 51–550 m: D1 · above 550 m: E1 |
| Ávila | Ávila (1131 m) | E1 | up to 550 m: D2 · 551–850 m: D1 · above 850 m: E1 |
| Badajoz | Badajoz (182 m) | C4 | up to 400 m: C4 · 401–450 m: C3 · above 450 m: D3 |
| Barcelona | Barcelona (13 m) | C2 | up to 250 m: C2 · 251–450 m: D2 · 451–750 m: D1 · above 750 m: E1 |
| Bizkaia | Bilbao (6 m) | C1 | up to 250 m: C1 · above 250 m: D1 |
| Burgos | Burgos (859 m) | E1 | up to 600 m: D1 · above 600 m: E1 |
| Cáceres | Cáceres (457 m) | C4 | up to 600 m: C4 · 601–1050 m: D3 · above 1050 m: E1 |
| Cádiz | Cádiz (13 m) | A3 | up to 150 m: A3 · 151–450 m: B3 · 451–600 m: C3 · 601–850 m: C2 · above 850 m: D2 |
| Cantabria | Santander (6 m) | C1 | up to 150 m: C1 · 151–650 m: D1 · above 650 m: E1 |
| Castellón/Castelló | Castellón de la Plana (27 m) | B3 | up to 100 m: B3 · 101–500 m: C3 · 501–600 m: D3 · 601–1000 m: D2 · above 1000 m: E1 |
| Ciudad Real | Ciudad Real (625 m) | D3 | up to 450 m: C4 · 451–500 m: C3 · above 500 m: D3 |
| Córdoba | Córdoba (106 m) | B4 | up to 150 m: B4 · 151–550 m: C4 · above 550 m: D3 |
| Coruña, A | A Coruña (7 m) | C1 | up to 200 m: C1 · above 200 m: D1 |
| Cuenca | Cuenca (997 m) | D2 | up to 800 m: D3 · 801–1050 m: D2 · above 1050 m: E1 |
| Gipuzkoa | Donostia / San Sebastián (7 m) | D1 | up to 400 m: D1 · above 400 m: E1 |
| Girona | Girona (69 m) | C2 | up to 100 m: C2 · 101–600 m: D2 · above 600 m: E1 |
| Granada | Granada (684 m) | C3 | up to 50 m: A4 · 51–350 m: B4 · 351–600 m: C4 · 601–800 m: C3 · 801–1300 m: D3 · above 1300 m: E1 |
| Guadalajara | Guadalajara (685 m) | D3 | up to 950 m: D3 · 951–1000 m: D2 · above 1000 m: E1 |
| Huelva | Huelva (24 m) | A4 | up to 50 m: A4 · 51–150 m: B4 · 151–350 m: B3 · 351–800 m: C3 · above 800 m: D3 |
| Huesca | Huesca (483 m) | D2 | up to 200 m: C3 · 201–400 m: D3 · 401–700 m: D2 · above 700 m: E1 |
| Jaén | Jaén (570 m) | C4 | up to 350 m: B4 · 351–750 m: C4 · 751–1250 m: D3 · above 1250 m: E1 |
| León | León (837 m) | E1 | all altitudes: E1 |
| Lleida | Lleida (167 m) | D3 | up to 100 m: C3 · 101–600 m: D3 · above 600 m: E1 |
| Lugo | Lugo (462 m) | D1 | up to 500 m: D1 · above 500 m: E1 |
| Madrid | Madrid (657 m) | D3 | up to 500 m: C3 · 501–950 m: D3 · 951–1000 m: D2 · above 1000 m: E1 |
| Málaga | Málaga (8 m) | A3 | up to 100 m: A3 · 101–300 m: B3 · 301–700 m: C3 · above 700 m: D3 |
| Murcia | Murcia (43 m) | B3 | up to 100 m: B3 · 101–550 m: C3 · above 550 m: D3 |
| Navarra | Pamplona (450 m) | D1 | up to 100 m: C2 · 101–350 m: D2 · 351–600 m: D1 · above 600 m: E1 |
| Ourense | Ourense (135 m) | C3 | up to 150 m: C3 · 151–300 m: C2 · 301–800 m: D2 · above 800 m: E1 |
| Palencia | Palencia (734 m) | D1 | up to 800 m: D1 · above 800 m: E1 |
| Pontevedra | Pontevedra (20 m) | C1 | up to 350 m: C1 · above 350 m: D1 |
| Rioja, La | Logroño (384 m) | D2 | up to 200 m: C2 · 201–700 m: D2 · above 700 m: E1 |
| Salamanca | Salamanca (798 m) | D2 | up to 850 m: D2 · above 850 m: E1 |
| Segovia | Segovia (1002 m) | D2 | up to 1050 m: D2 · above 1050 m: E1 |
| Sevilla | Sevilla (11 m) | B4 | up to 200 m: B4 · above 200 m: C4 |
| Soria | Soria (1061 m) | E1 | up to 750 m: D2 · 751–800 m: D1 · above 800 m: E1 |
| Tarragona | Tarragona (69 m) | B3 | up to 100 m: B3 · 101–500 m: C3 · above 500 m: D3 |
| Teruel | Teruel (915 m) | D2 | up to 450 m: C3 · 451–500 m: C2 · 501–1000 m: D2 · above 1000 m: E1 |
| Toledo | Toledo (512 m) | D3 | up to 500 m: C4 · above 500 m: D3 |
| Valencia/València | Valencia (16 m) | B3 | up to 50 m: B3 · 51–500 m: C3 · 501–950 m: D2 · above 950 m: E1 |
| Valladolid | Valladolid (690 m) | D2 | up to 800 m: D2 · above 800 m: E1 |
| Zamora | Zamora (649 m) | D2 | up to 800 m: D2 · above 800 m: E1 |
| Zaragoza | Zaragoza (208 m) | D3 | up to 200 m: C3 · 201–650 m: D3 · above 650 m: E1 |
