Case study: TRINTA, the tender-intelligence platform we built and run. Read the case

SO-MA Study 2026 · original research

Are Portuguese online stores accessible?

We ran nine automated accessibility checks on the home page of 373 Portuguese brand stores, and only 21 passed all nine. An automated check does not tell you whether a store complies with the law, but it shows where almost all of them fail. Measured on 19 October 2026, public pages only.

  • 373 stores measured
  • 9 checks
  • 19 October 2026

short answer · updated on 19 October 2026

Of the 373 online stores of Portuguese brands we measured on 19 October 2026, 339 failed at least one of nine automated accessibility checks on the home page, and only 21 passed all nine (the other 13 only had heading warnings). The most common failures are links without a name (269 stores), unlabelled form fields (170) and images without alternative text (140). On headings, 238 stores do not pass, but only 52 fail (empty headings); the other 186 get warnings (no H1 or skipped levels). An automated check covers only part of the criteria: it does not prove that a store complies with the law, nor that it does not.

what we found

What fails on a home page, store by store.

  • 269

    of 373 stores have at least one link without a name on the home page

    72.1%

    That is 2,930 of 64,069 links, split almost evenly across three shapes: 1,009 made of an image with no alternative text, 966 made of an unnamed icon and 955 empty.

  • 170

    of 373 stores have form fields without a label

    45.6%

    That is 725 of 2,790 fields. Search is the most common: 137 stores have a search field with no label.

  • 140

    of 373 stores have images without alternative text

    37.5%

    That is 1,256 of 26,242 images.

  • 71

    of 373 stores block or limit zoom on mobile

    19%

The checker’s rating

  • 34 Good starting point (90 or more, no failures) · 9.1%
  • 312 Needs fixes (70 or more) · 83.6%
  • 27 Serious issues (below 70) · 7.2%

Score distribution

Stores per score band (0 to 100), across 373 stores measured.
ScoreStoresShare
100 35 9.4%
90 to 99 161 43.2%
80 to 89 83 22.3%
70 to 79 67 18%
60 to 69 15 4%
50 to 59 9 2.4%
0 to 49 3 0.8%

Failed checks per store

How many of the nine checks each store fails (heading warnings do not count as failures), across 373 stores.
FailuresStoresShare
0 34 9.1%
1 89 23.9%
2 99 26.5%
3 69 18.5%
4 45 12.1%
5+ 37 9.9%

the nine checks

How many stores pass each check.

One failure is enough: a store with a single unnamed link out of two hundred fails the links check. Under each number, how many elements fail in total, across all stores.

How many stores pass each check.
Check Pass Do not pass
Page language declared WCAG 3.1.1 (A) 357 (95.7%) 16
Page title WCAG 2.4.2 (A) 371 (99.5%) 2
Alternative text on images WCAG 1.1.1 (A) 233 (62.5%) 1401,256 of 26,242 failing
Form fields with labels WCAG 1.3.1, 3.3.2, 4.1.2 (A) 203 (54.4%) 170725 of 2,790 failing
Links with a name WCAG 2.4.4, 4.1.2 (A) 104 (27.9%) 2692,930 of 64,069 failing
Buttons with a name WCAG 4.1.2 (A) 247 (66.2%) 126559 of 13,690 failing
Iframes with a title WCAG 4.1.2 (A) 350 (93.8%) 2332 of 46 failing
Heading structure WCAG 1.3.1 (A), 2.4.6 (AA) 135 (36.2%) 238
Zoom allowed WCAG 1.4.4 (AA) 302 (81%) 71

On headings, 113 stores have no H1, 167 skip levels (H2 to H4, for example) and 52 have empty headings; only the last count as failures, the others are warnings. 16 stores do not declare the page language and 71 block or limit zoom.

by platform

Shopify against the other platforms.

The 176 Shopify stores averaged 92.5 and 19 passed all nine checks; the 197 stores on other platforms averaged 81.8 and 2 passed. SO-MA builds Shopify stores: the full method is below, and the checker is public.

Platform detected in the home page code, only when the signature is unambiguous. Platforms with fewer than 10 stores are grouped under Other.
PlatformStoresAveragePass all nine
Shopify 176 92.5 19 (10.8%)
WooCommerce 74 83.8 0 (0%)
Squarespace 14 91.4 0 (0%)
Wix 14 89.3 1 (7.1%)
WordPress (no WooCommerce detected) 10 82.7 1 (10%)
Other or not detected 85 77.2 0 (0%)

Other: not detected 65, PrestaShop 9, Salesforce Commerce Cloud 7, Magento 3, VTEX 1.

Check by check

Share of stores passing each check, on Shopify and on all other platforms together.
CheckShopify (176)Others (197)
Page language declared 95.5% 95.9%
Page title 99.4% 99.5%
Alternative text on images 59.7% 65%
Form fields with labels 74.4% 36.5%
Links with a name 31.3% 24.9%
Buttons with a name 82.4% 51.8%
Iframes with a title 98.9% 89.3%
Heading structure 45.5% 27.9%
Zoom allowed 94.3% 69%

By sector

Average score and stores passing all nine, by sector. Sectors with fewer than 10 stores measured are grouped under Other.
SectorStoresAveragePass all nine
Fashion and apparel 70 87.1 4
Footwear and leather goods 69 86.6 3
Home and interiors 48 86.9 0
Food and wine 71 84.7 4
Beauty and personal care 31 90.6 3
Jewellery and watches 40 88.8 4
Retail and electronics 10 84.2 0
Other sectors 34 86.1 3

the ones that pass

The 20 stores that pass all nine checks.

In alphabetical order, unranked. Passing nine automated checks on the home page does not mean a store complies with the law or is accessible in every way: it means it failed nothing this test measures. One more store also passed, but its home page is over 2 MB and only the first 2 MB were checked, so we do not name it. The other 352 stores measured are not named, here or in the data file.

The 20 named stores, in alphabetical order.
StoreSectorPlatform
Alice Neiva (ex-Tundra) aliceneiva.com Jewellery and watches Shopify
Alves de Sousa alvesdesousa.com Food and wine Wix
bento bento-concept.com Footwear and leather goods WordPress (no WooCommerce detected)
Casa Aragão casaaragao.eu Food and wine Shopify
Cinco cinco-store.com Jewellery and watches Shopify
EXÉ exe.pt Footwear and leather goods Shopify
Fulana Beltrana Sicrana loja.fufu-lojaatelier.com Other sectors Shopify
Gonçalo Peixoto goncalopeixoto.com Fashion and apparel Shopify
Joana Mota Capitão joanamotacapitao.com Jewellery and watches Shopify
Labrador labrador.pt Fashion and apparel Shopify
Le Mot le-mot.com Fashion and apparel Shopify
LUR Natural Skinfood lurskinfood.com Beauty and personal care Shopify
More is Better moreisbetter.pt Footwear and leather goods Shopify
Musa Make Up musaskin.com Beauty and personal care Shopify
Next Memory nextmemory.eu Beauty and personal care Shopify
Poças pocas.pt Food and wine Shopify
Quinta Nova de Nossa Senhora do Carmo shop.quintanova.com Food and wine Shopify
Sacoor Brothers sacoorbrothers.com Fashion and apparel Shopify
Tânia Gil taniagil.com Jewellery and watches Shopify
Templars Arena templarsarena.com Other sectors Shopify

the law, in Portugal

What the European Accessibility Act asks of an online store.

Read in Portugal’s official journal (Diário da República) on 19 Oct 2026. Each line names the article it comes from.

Who is covered, what an audit catches and what SO-MA does (in Portuguese): Website and online store accessibility in Portugal.

The law
The European Accessibility Act is Directive (EU) 2019/882. Portugal transposed it with Decree-Law 82/2022 of 6 December, and the requirements are set out in Ordinance 220/2023 of 20 July.DL 82/2022, summary; Ordinance 220/2023, art. 1 and 2
Since when
It has applied since 28 June 2025 to services provided to consumers from that date.DL 82/2022, art. 39(1)
Online stores
E-commerce services are covered.DL 82/2022, art. 2(3)(g)
Microenterprises
The law does not apply to microenterprises providing the covered services: fewer than 10 people and annual turnover or balance sheet total up to 2 million euros.DL 82/2022, art. 2(5)(b); Directive (EU) 2019/882, art. 3(23)
What it asks of a site
Websites and apps that are perceivable, operable, understandable and robust. The ordinance’s examples: text descriptions of images, every function available from a keyboard, enough time to read and compatibility with assistive technology. For a store, also accessibility information about the products, when the supplier provides it, and accessible identification, security and payment.Ordinance 220/2023, annex I, section III(c) and section IV(g)
And this study?
It measures part of this in the home page code, such as image alternative text and the names of links, buttons and fields. It does not measure keyboard use, reading time, assistive technology or payment, so it does not say whether a store complies.See the limits in the method
Who enforces it
For e-commerce services, ANACOM, the communications regulator.DL 82/2022, art. 28(1)(a)

method

How we measured

Sample

The same 400 online stores of Portuguese brands and retailers as the SO-MA Index 2026, gathered from trade association, award and press lists, without SO-MA client stores. How the list was built is in the Index method.

The sample is not random: these are brands visible enough to appear on those lists. The results describe these 373 stores, not all Portuguese e-commerce.

Sample method, in the Index

Measurement

On 19 October 2026, from Lisbon, using the code of SO-MA's accessibility checker (the same as the free tool), run from a script rather than the site's server. The reader identifies itself as "SO-MA-research (+https://so-ma.studio/ferramentas/acessibilidade/)".

Before anything else we read each server’s robots.txt and requested nothing it disallows. One request per second per store, four stores at a time. Home page only: no logins, no forms, no stored cookies. The measurements made 1,429 requests, robots.txt included.

The repository keeps only each check’s result and the counts (how many links, fields and images, and how many fail). The pages’ HTML stayed on the measuring computer only to review false positives and was deleted at the end. No data about the stores’ customers.

The nine checks

Those of the checker, each with its WCAG criterion and a fixed weight. The 0 to 100 score loses points in proportion to the elements that fail. The rating is the checker’s: good starting point (90 or more and no failures), needs fixes (70 or more), serious issues (below 70).

The nine checks, their WCAG criterion and weight
CheckPointsRule
Page language declared WCAG 3.1.1 (A)10The <html lang> holds a valid language code.
Page title WCAG 2.4.2 (A)5The <title> has text.
Alternative text on images WCAG 1.1.1 (A)20Every image in the HTML has an alt attribute. An empty alt counts: it is the right way to mark a decorative image.
Form fields with labels WCAG 1.3.1, 3.3.2, 4.1.2 (A)15Every field (search, email, quantity) has a label, aria-label or title. A placeholder does not count.
Links with a name WCAG 2.4.4, 4.1.2 (A)15Every link has text, an accessible name or a title.
Buttons with a name WCAG 4.1.2 (A)10Every button has text or an accessible name.
Iframes with a title WCAG 4.1.2 (A)5Every iframe has a title.
Heading structure WCAG 1.3.1 (A), 2.4.6 (AA)10There is an H1 and levels do not skip (otherwise, a warning); no empty heading (otherwise, a failure).
Zoom allowed WCAG 1.4.4 (AA)10The meta viewport does not block zoom (user-scalable=no, or maximum-scale below 2).

Manual review

Before closing the numbers, we reviewed examples of every check by hand on stores across platforms, in the HTML and, in some cases, in a browser. We found two false positives: the menu button name on Squarespace stores, which the page script reveals after loading (confirmed in a browser), and AngularJS templates (ng-attr-alt and ng-bind-html), which the script fills in. We also found a bug in our reader, which read home pages over 2 MB as empty.

We fixed the checker and the reader, added the cases to the checker’s automated proof, in both directions, and re-analysed the same HTML with no new requests to the stores. The fix also applies to the free tool.

After publishing, still on 19 Oct 2026, we found two more errors, each on one store. On one, the whole home page sat inside an element hidden until JavaScript runs: the checker saw nothing to check and scored it anyway. A page with nothing visible now gets no score, and that store left the figures. On the other, a stray second <body> in the code made the checker count 0 words on a page with 1113; the score did not change, only the number of stores with fewer than 50 words. We fixed both, in the free tool too, and measured only those two stores again, on the same day.

Limits

Nine automated checks cover only part of the WCAG criteria. Contrast, keyboard-only navigation, screen readers, plain language, captions and the checkout up to payment are left out.

Home page only. Product, cart and checkout pages were not read.

We read the HTML the server sends, before scripts run. What is built afterwards may have other failures, or fix some. 6 stores showed fewer than 50 words before scripts.

The checker reads at most 2 MB per page. On 12 stores the home page was larger and only the first 2 MB were checked; those stores are not named.

A result like this never proves that a store complies, or does not comply, with Decree-Law 82/2022. And the law does not apply to microenterprises providing the service (art. 2(5)(b)): we do not know which of these stores are.

It is a one-day snapshot: stores change.

Stores not measured

27 of the 400 stores on the list were not measured and are not in any figure: 14 stores refused our reader (403 or 429, almost always bot protection); 6 stores had a robots.txt that errored or did not answer, and the rule then (RFC 9309) is not to read; 3 stores did not answer in time; 2 stores did not answer, or the domain no longer exists; 1 store had nothing visible in the HTML before JavaScript runs (no text, images, links or fields), and a page with nothing to check gets no score; 1 store redirected too many times.

Interests

SO-MA does accessibility audits and the fixes, and builds Shopify stores. That is why we publish the whole method, use a checker anyone can run, and leave our clients’ stores out.

how to cite

Use the numbers, say where they come from.

The aggregated data is public under CC BY 4.0: you can reuse it with attribution.

SO-MA Studio (2026). SO-MA Study 2026: accessibility of Portuguese online stores. Nine automated checks on the home page of 373 stores, on 19 October 2026. https://so-ma.studio/en/portuguese-online-stores-accessibility-study-2026/

SO-MA Study 2026: accessibility of Portuguese online stores. Also in Portuguese.

Go further

frequently asked questions

Questions about the study.

Answered in full.

Are Portuguese online stores accessible?

Most fail at least one basic automated check. In SO-MA’s study of 19 October 2026, only 21 of 373 online stores of Portuguese brands passed nine automated accessibility checks on the home page (language, title, alternative text, labels, named links and buttons, iframes, headings and zoom), and 339 had at least one failure (the other 13 only had heading warnings). The most common failures were links without a name (269 stores), unlabelled form fields (170) and images without alternative text (140). On headings, 238 stores do not pass, but only 52 fail (empty headings); the other 186 get warnings (no H1 or skipped levels). An automated check covers only part of the criteria and does not say whether a store complies with the law.

What is the most common accessibility failure on Portuguese online stores?

Links without a name: 269 of 373 stores had at least one on the home page, which a screen reader announces only as "link". They are made of an image with no alternative text, an unnamed icon (cart, account, social) or nothing at all. Unlabelled form fields come next (170 stores), with search the most common case (137 stores), and then images without alternative text (140). Almost all of it is fixed in the theme.

Are Shopify stores more accessible than others?

On the automated checks, they do better: 176 Shopify stores averaged 92.5 out of 100 and 19 passed all nine checks, against an average of 81.8 and 2 of 197 on other platforms. Still, only 10.8% of Shopify stores pass everything: the theme helps, but it is not enough. SO-MA builds Shopify stores.

Is an automated accessibility test enough to comply with the law?

No. An automated test reads the code and catches what can be measured without people: images without alternative text, unlabelled fields, unnamed links and buttons, headings, language and blocked zoom. It does not test the keyboard, screen readers, contrast on the real design, plain language or the checkout up to payment, and it does not tell you whether a site complies with Decree-Law 82/2022.