67% of Portugal municipalities do not pass the automated accessibility check

Automated accessibility audit of Portugal municipality websites against WCAG 2.1 AA (EU Directive 2016/2102). Scores reflect homepage-only scanning using axe-core.

Download CSV · Press Dossier (PDF) · Methodology

67% of municipalities do not pass the automated accessibility check.

Municipality WCAG compliance scores — automated scan of homepage only
MunicipalityWebsiteScoreIssues
Vila Viçosacm-vilavicosa.pt100.00
Vila Pouca de Aguiarcm-vpaguiar.pt100.00
Vila Franca do Campocmvfc.pt100.00
Boticascm-boticas.pt100.00
Gaviãocm-gaviao.pt100.00
Mondim de Bastocm-mondimdebasto.pt100.00
Miracm-mira.pt100.00
Albufeiracm-albufeira.pt100.00
Chaveschaves.pt100.00
Barrancoscm-barrancos.pt100.00
Penichecm-peniche.pt100.00
Arganilcm-arganil.pt100.00
Vila do Condecm-viladoconde.pt100.00
Aviscm-avis.pt100.00
Santa Marta de Penaguiãocm-smpenaguiao.pt100.00
Vila Nova de Famalicãofamalicao.pt100.00
Ribeira de Penacm-rpena.pt100.00
Guardamun-guarda.pt100.00
Sabugalcm-sabugal.pt100.00
Alandroalcm-alandroal.pt100.00
Mortáguacm-mortagua.pt100.00
Trancosocm-trancoso.pt100.00
Coruchecm-coruche.pt100.00
Penalva do Castelocm-penalvadocastelo.pt100.00
Mourãocm-mourao.pt100.00
Lousadacm-lousada.pt100.00
Praia da Vitóriacmpv.pt100.00
Amadoracm-amadora.pt100.00
Ponta Delgadacm-pontadelgada.pt100.00
Castelo de Paivacm-castelo-paiva.pt100.00
Arruda dos Vinhoscm-arruda.pt100.00
Valongocm-valongo.pt100.00
Reguengos de Monsarazcm-reguengos-monsaraz.pt100.00
Arraioloscm-arraiolos.pt100.00
Borbacm-borba.pt100.00
Ribeira Grandecm-ribeiragrande.pt100.00
Montemor-o-Novocm-montemornovo.pt100.00
Santo Tirsocm-stirso.pt100.00
Murçacm-murca.pt100.00
Angra do Heroísmoangradoheroismo.pt100.00
Barreirocm-barreiro.pt100.00
Vendas Novascm-vendasnovas.pt100.00
Guimarãescm-guimaraes.pt100.00
Sernancelhecm-sernancelhe.pt100.00
Redondocm-redondo.pt100.00
Vila Velha de Ródãocm-vvrodao.pt100.00
Vale de Cambracm-valedecambra.pt100.00
Madalenacm-madalena.pt100.00
Lourinhãcm-lourinha.pt100.00
Almeirimcm-almeirim.pt100.00
Oeirasoeiras.pt100.00
Mafracm-mafra.pt100.00
Portelcm-portel.pt100.00
Alcoutimcm-alcoutim.pt100.00
Moimenta da Beiracm-moimenta.pt100.00
Vila Florcm-vilaflor.pt100.00
Marvãocm-marvao.pt100.00
Mirandelacm-mirandela.pt100.00
Penamacorcm-penamacor.pt100.00
Golegãcm-golega.pt100.00
Chamuscacm-chamusca.pt100.00
Viana do Alentejocm-vianadoalentejo.pt100.00
Esposendecm-esposende.pt100.00
São Pedro do Sulcm-spsul.pt100.00
Almadacm-almada.pt100.00
Évoracm-evora.pt100.00
Azambujacm-azambuja.pt100.00
Caldas da Rainhamcr.pt100.00
Óbidoscm-obidos.pt100.00
Fornos de Algodrescm-fornosdealgodres.pt100.00
Sobral de Monte Agraçocm-sobral-monte-agraco.pt100.00
Viana do Castelocm-viana-castelo.pt100.00
Paredescm-paredes.pt100.00
Sátãocm-satao.pt100.00
Manteigascm-manteigas.pt100.00
São João da Madeiracm-sjm.pt100.00
Águedacm-agueda.pt100.00
Abrantescm-abrantes.pt100.00
Alcobaçacm-alcobaca.pt100.00
Mêdacm-meda.pt100.00
Moracm-mora.pt100.00
Matosinhoscm-matosinhos.pt85.71
Armamarcm-armamar.pt85.71
Oliveira do Bairrocm-olb.pt85.71
Vila Verdecm-vilaverde.pt85.71
Elvascm-elvas.pt85.71
Covilhãcm-covilha.pt85.71
Alter do Chãocm-alter-chao.pt85.71
Ílhavocm-ilhavo.pt85.71
Peso da Réguacm-pesoregua.pt85.71
Moitacm-moita.pt85.71
Santiago do Cacémcm-santiagocacem.pt68.19
Penafielcm-penafiel.pt68.115
Marinha Grandecm-mgrande.pt68.19
Alvaiázerecm-alvaiazere.pt68.11
Nazarécm-nazare.pt68.19
Vimiosocm-vimioso.pt68.11
Ovarcm-ovar.pt68.11
Vila Franca de Xiracm-vfxira.pt68.113
Oliveira do Hospitalcm-oliveiradohospital.pt68.13
Baiãocm-baiao.pt68.13
Odemiracm-odemira.pt68.111
Olhãocm-olhao.pt68.12
Coimbracm-coimbra.pt68.11
Lourescm-loures.pt68.11
Calhetacmcalheta.pt68.111
Pedrógão Grandecm-pedrogaogrande.pt68.13
Castro Verdecm-castroverde.pt68.16
Celorico da Beiracm-celoricodabeira.pt68.11
Bombarralcm-bombarral.pt68.14
Santa Cruz da Graciosacm-graciosa.pt68.11
Ansiãocm-ansiao.pt68.11
Vagoscm-vagos.pt68.19
Cubacm-cuba.pt68.12
Macedo de Cavaleiroscm-macedodecavaleiros.pt68.14
Ponte de Sorcm-pontedesor.pt68.117
Leiriacm-leiria.pt68.19
Carrazeda de Ansiãescm-carrazedadeansiaes.pt68.114
Idanha-a-Novacm-idanhanova.pt68.11
Anadiacm-anadia.pt58.42
Mesão Friocm-mesaofrio.pt58.410
Amarantecm-amarante.pt58.42
Ouriquecm-ourique.pt58.47
Porto de Mósmunicipio-portodemos.pt58.47
Fronteiracm-fronteira.pt58.42
Espinhoportal.cm-espinho.pt58.416
Valpaçosvalpacos.pt58.411
São João da Pesqueirasjpesqueira.pt58.42
Albergaria-a-Velhacm-albergaria.pt58.42
Município do Corvocm-corvo.pt46.340
Funchalfunchal.pt46.317
Sabrosasabrosa.pt46.37
Campo Maiorcm-campo-maior.pt46.323
Arcos de Valdevezcmav.pt46.35
Palmelacm-palmela.pt46.320
Porto Santocm-portosanto.pt46.340
Batalhacm-batalha.pt46.318
Mogadouromogadouro.pt46.33
Montalegrecm-montalegre.pt46.32
Sintracm-sintra.pt46.325
Penacovacm-penacova.pt46.310
Souselcm-sousel.pt46.31
Cinfãescm-cinfaes.pt46.319
Sever do Vougacm-sever.pt46.34
Hortacmhorta.pt46.354
Tondelacm-tondela.pt46.326
Nisacm-nisa.pt46.37
Mouracm-moura.pt46.315
Castanheira de Peracm-castanheiradepera.pt46.33
Almeidacm-almeida.pt46.345
Celorico de Bastomun-celoricodebasto.pt46.34
Santa Cruzcm-santacruz.pt46.311
Maiacm-maia.pt46.312
Figueiró dos Vinhoscm-figueirodosvinhos.pt46.35
Miranda do Dourocm-mdouro.pt46.34
Odivelascm-odivelas.pt39.75
Murtosacm-murtosa.pt39.754
Cratocm-crato.pt39.75
Portalegrecm-portalegre.pt39.72
Póvoa de Lanhosocm-povoadelanhoso.pt39.712
Felgueirascm-felgueiras.pt39.75
Pinhelcm-pinhel.pt39.718
Caminhacm-caminha.pt39.712
Barceloscm-barcelos.pt39.73
Constânciacm-constancia.pt31.527
Alcanenacm-alcanena.pt31.517
Ribeira Bravacm-ribeirabrava.pt31.533
Castro Dairecm-castrodaire.pt31.563
Miranda do Corvocm-mirandadocorvo.pt31.53
Sourecm-soure.pt31.540
Paredes de Couraparedesdecoura.pt31.525
Porto Monizportomoniz.pt31.515
Oliveira de Azeméiscm-oaz.pt31.510
Montijomun-montijo.pt31.531
Castro Marimcm-castromarim.pt31.5108
Maçãocm-macao.pt31.542
Ponte de Limacm-pontedelima.pt31.57
Alenquercm-alenquer.pt31.54
Mangualdecmmangualde.pt31.52
Montemor-o-Velhocm-montemorvelho.pt31.518
Oliveira de Fradescm-ofrades.com31.59
Vila do Bispocm-viladobispo.pt31.55
Ferreira do Zêzerecm-ferreiradozezere.pt31.538
Figueira de Castelo Rodrigocm-fcr.pt31.56
Condeixa-a-Novacm-condeixa.pt31.55
Câmara de Loboscm-camaradelobos.pt31.55
Tomarcm-tomar.pt31.544
Viseucm-viseu.pt31.516
Vila Nova de Foz Côacm-fozcoa.pt31.534
Vila Nova de Paivacm-vnpaiva.pt31.54
Aveirocm-aveiro.pt27.043
Valençacm-valenca.pt27.055
Tabuaçocm-tabuaco.pt27.07
Vieira do Minhocm-vminho.pt27.020
Aroucacm-arouca.pt27.089
Amaresamares.pt27.029
Almodôvarcm-almodovar.pt27.010
Seixalcm-seixal.pt27.091
Marco de Canavesescm-marco-canaveses.pt21.511
Castelo de Videcm-castelo-vide.pt21.56
Paços de Ferreiracm-pacosdeferreira.pt21.52
Sinessines.pt21.57
Portimãocm-portimao.pt21.517
Entroncamentocm-entroncamento.pt21.519
Setúbalmun-setubal.pt21.518
Oleiroscm-oleiros.pt21.522
Sesimbrasesimbra.pt21.522
Lamegocm-lamego.pt21.528
Alijócm-alijo.pt21.519
Vila Nova de Cerveiracm-vncerveira.pt21.528
Ponte da Barcacmpb.pt21.513
Sardoalcm-sardoal.pt21.522
Póvoa de Varzimcm-pvarzim.pt21.528
Santa Cruz das Florescmscflores.pt21.547
Benaventecm-benavente.pt21.551
Mealhadacm-mealhada.pt21.513
Penedonocm-penedono.pt21.59
Góiscm-gois.pt21.538
Lagoscm-lagos.pt21.598
Figueira da Fozcm-figfoz.pt18.420
Cabeceiras de Bastocabeceirasdebasto.pt18.448
Taroucacm-tarouca.pt18.427
Pampilhosa da Serracm-pampilhosadaserra.pt18.463
Alcácer do Salcm-alcacerdosal.pt18.422
Alfândega da Fécm-alfandegadafe.pt18.445
Monfortecm-monforte.pt18.411
Tábuacm-tabua.pt18.45
Gondomarcm-gondomar.pt18.46
Vila do Portocm-viladoporto.pt14.619
Pombalcm-pombal.pt14.613
Mértolacm-mertola.pt14.619
Terras de Bourocm-terrasdebouro.pt14.66
Cartaxocm-cartaxo.pt14.633
Alvitocm-alvito.pt14.65
Alcochetecm-alcochete.pt14.618
Fundãocm-fundao.pt14.612
Belmontecm-belmonte.pt14.626
Nordestecmnordeste.pt14.612
Cantanhedecm-cantanhede.pt14.675
Cadavalcm-cadaval.pt12.512
Fafecm-fafe.pt12.532
São Roque do Picocm-saoroquedopico.pt12.534
Santanacm-santana.com9.916
Castelo Brancocm-castelobranco.pt9.98
Estarrejacm-estarreja.pt9.937
Taviracm-tavira.pt9.943
Resendecm-resende.pt9.915
Lagoalagoa-acores.pt9.930
Vila de Reicm-viladerei.pt9.921
Sertãcm-serta.pt9.940
Vinhaiscm-vinhais.pt8.528
Vouzelacm-vouzela.pt8.591
Freixo de Espada à Cintacm-freixoespadacinta.pt8.57
Seiacm-seia.pt6.847
Penelacm-penela.pt6.843
Carregal do Salcm-carregal.pt6.811
Melgaçocm-melgaco.pt6.819
Santa Maria da Feiracm-feira.pt6.830
Ponta do Solcm-pontadosol.pt6.814
Vila Nova de Poiarescm-vilanovadepoiares.pt5.87
Cascaiscascais.pt5.849
Gouveiacm-gouveia.pt4.627
Machicocm-machico.pt4.617
Aguiar da Beiracm-aguiardabeira.pt4.628
Torres Vedrascm-tvedras.pt4.6113
Nelascm-nelas.pt4.013
São Vicentecm-saovicente.pt3.118
Ferreira do Alentejoferreiradoalentejo.pt2.743
Estremozcm-estremoz.pt2.138
Lousãcm-lousa.pt1.823
Vila Nova de Gaiacm-gaia.pt1.420
Portocm-porto.pt0.840

Scores reflect automated testing only (axe-core against WCAG 2.1 AA). Automated tools detect approximately 30–50% of WCAG criteria. A site that does not pass the automated check is certainly non-compliant. A site that passes may still have barriers detectable only through manual review.

Top 10 most common accessibility violations

Most frequent axe-core rule violations across municipality homepages
#RuleDescriptionImpactOccurrencesSites affected
1color-contrastEnsure the contrast between foreground and background colors meets WCAG 2 AA minimum contrast ratio thresholdsserious1,752130
2link-nameEnsure links have discernible textserious1,039116
3image-altEnsure <img> elements have alternative text or a role of none or presentationcritical24733
4button-nameEnsure buttons have discernible textcritical8923
5listitemEnsure <li> elements are used semanticallyserious8016
6aria-required-parentEnsure elements with an ARIA role that require parent roles are contained by themcritical7111
7aria-prohibited-attrEnsure ARIA attributes are not prohibited for an element's roleserious6010
8meta-viewportEnsure <meta name="viewport"> does not disable text scaling and zoomingmoderate5858
9nested-interactiveEnsure interactive controls are not nested as they are not always announced by screen readers or can cause focus problems for assistive technologiesserious5411
10aria-command-nameEnsure every ARIA button, link and menuitem has an accessible nameserious466

Compare with similar countries

View all European countries · Methodology