5G Netz (1 issues)
News tiles links' purpose not determinable
+
Alle Geräte (1 issues)
Product card link purpose not determinable
+
Apple Watch Familienkonfiguration (2 issues)
Purpose of link cannot be programmatically determined
+
Link to PDF document does not indicate so
+
Apple iPad Air 11 2025 (1 issues)
Purpose of link cannot be programmatically determined
+
Kider Uhr GPS Oneshop (1 issues)
Link text "Anzeigen" in section "Zur Hilfe-Seite mit häufigen Fragen und Antworten" does not describe link purpose
+
Kids-Watch (1 issues)
Link text "Anzeigen" in section "Zur Hilfe-Seite mit häufigen Fragen und Antworten" does not describe link purpose
+
Magenta TV Streaming Dienste Partner DAZN (1 issues)
"Alle Paketdetails anzeigen" & "Jetzt dazubuchen" purpose ambiguous
+
Magenta Tarife Young (1 issues)
Link purpose not directly determinable
+
Mobile Router (1 issues)
Product card link purpose not determinable
+
Mobilfunk Netzausbau (2 issues)
Link purpose "Mehr erfahren" not determinable
+
Link purpose in "Tarife" carousel not determinable
+
Smartphones (1 issues)
Product card link purpose not determinable
+
Smartwatches (1 issues)
Product card link purpose not determinable
+
Sport (2 issues)
Tariff option "Mehr Infos" links' purpose not determinable
+
Link texts in FAQ section do not provide simple access to link purpose
+
Tablets (1 issues)
Product card link purpose not determinable
+
Tarife (1 issues)
Content card link purpose not determinable
+
Tastenhandys (1 issues)
Product card link purpose not determinable
+
VIP Lieferung (1 issues)
"Datenschutzhinweise" link starts document download
+
Vertragsverlängerung (1 issues)
Link purpose of product tiles not determined by accessible name
+
Xiaomi 15 (1 issues)
Purpose of link cannot be programmatically determined
+
Accompanying Files
Observation Details
The accessible name of product tiles is set within a <span> inside the <a> tag.
<a ...><span ...>Galaxy S25 Ultra</span></a>The accessible name does not include the manufacturer's name but only the product's model name. While for a Samsung Galaxy S25 Ultra in the context of the Telekom website, the model name might be enough to identify the link's purpose, it will fall apart on devices like the Xiaomi 15 Ultra.
Generally, the assumption of a user's knowledge should not be made, making it hard even for devices like (Samsung) Galaxy S25 Ultra or (Google) Pixel 9a.
Remediation Notes
Setting the accessible name of the product tile link to the span.A11yText__a11y__XYZ is a viable option but it should be using the product's manufacturer and model name.
A better approach would be to use aria-labelledby, using the existing visible text. To follow this approach, the manufacturer and model name must have an id attribute set. The product tile link could then follow a structure like this:
<a href="..." aria-labelledby="product__manufacturer__X product__model__X">
<h3>
<span id="product__manufacturer__X">
<span id="product__model__X">
</h3>
...
</a>Observation Details
The link text "hier" does not convey the link's purpose on its own. The context (surrounding paragraph) does not convey the purpose either.
Remediation Notes
Use link text to convey the link's purpose. Clearly stating, where exactly a link goes, will help all users.
Accompanying Files
Observation Details
The product card link is empty, resulting in a null accessible name. As such it is announced only as "link" to assistive technology.
As the product cards are not semantically structured e.g. by using <article> for the whole card and a heading <h3> with the product name, there is no programmatically determinable context that makes the link purpose clear to the user.
Interactive, focusable elements like links must have an accessible name. The name should state the link's purpose. If not directly, it must be determinable by context.
Remediation Notes
Ensure, link purpose is determinable. This can be done by adding "GERÄT XYZ in den Warenkorb legen" as text alternative. Ideally, a proper semantic structure on product card is used.
<article>
<h3 id="heading-PRODUCT">PRODUCT NAME</h3>
...
<a href="..." id="link-PRODUCT" aria-labelledby="heading-PRODUCT link-PRODUCT">
Produktdetails
</a>
</article>Accompanying Files
Observation Details
The content card link is empty, resulting in a null accessible name. As such it is announced only as "link" to assistive technology.
As the content cards are not semantically structured e.g. by using <article> for the whole card, a clear heading structure, etc., there is no programmatically determinable context that makes the link purpose clear to the user.
Interactive, focusable elements like links must have an accessible name. The name should state the link's purpose. If not directly, it must be determinable by context.
Remediation Notes
Ensure, link purpose is determinable. Ideally, a proper semantic structure on content card is used. As the base structure is already visually presented as such a card, consider the following structure:
<nav aria-labelledby="heading-tariff-list">
<h2 id="heading-tariff-list">Alle Tarifgruppen im Überblick</h2>
<ul>
<!-- Content Card -->
<li>
<article class="card">
<div>
<h3 id="heading-TARIFF">TARIFF GROUP NAME</h3>
<p>TARIFF DESCRIPTION</p>
<a href="..." id="link-TARIFF">Zu den TARIFF GROUP-Tarifen</a>
</div>
<div style="order:-1;">
<img src="..." alt="PROPER TEXT ALTERNATIVE" />
</div>
</article>
</li>
<!-- More Cards -->
</ul>
</nav>Setting up the link with a pseudo element like this:
.card a::before {
content: '';
position: absolute;
inset: 0;
z-index: 1;
}And the card itself with:
.card {
position: relative;
}
/* Add focus state to card when link WITHIN is focused */
.card:focus-within,
.card:hover {
outline: 2px solid magenta;
box-shadow: 8px 8px black;
}
/* Remove focus outline from link */
.card:focus-within :focus {
outline: none;
}Will make the card be focus visible, while the link in it still is the focused element with the correct accessible name.
Ensure, adding proper text alternative to the images.
Accompanying Files
Observation Details
The button (using link markup) for "Alle Paketdetails anzeigen" and "Jetzt dazubuchen" exists multiple times. As the accessible name for both is a duplicate, a user might not be able to figure out its purpose. Without proper structure of surrounding elements (e.g. correct heading structure for the two "Pakete") the links cannot be disambiguated.
Remediation Notes
Ensure, accessible names of links are unique. If they are not, ensure the context does provide enough information to disambiguate. While enriching the accessible name by using ARIA label or labelledby could be an option, also ensure correct heading structure. A user might be focused on the "Jetzt dazubuchen" button and to figure out what purpose the button has, will navigate to the previous heading in content which unfortunately will be "Live und jederzeit auf Abruf" for both CTAs.
Accompanying Files
Observation Details
The image links in the news tiles in "Neue Ideen für eine neue Welt" section have no programmatically determinable link purpose. Semantic HTML links using the <a> element are getting their accessible name by their content. In case of the news tiles, the link's accessible name is the alt attribute of the included image which is "Smartphone AR" for all images in all news tiles.
As the news tiles also do not follow semantic structure, the link is placed before the tile's heading element and as such is logically, hierarchically content of the previous heading (Neue Ideen für eine neue Welt).
The "mehr erfahren" link at the tiles' bottom, while placed below the corresponding heading and as such has some context given, is not ideally named as well.
Remediation Notes
Multiple issues need to be remediated for the news tile's links. Ideally the tile should follow a semantic HTML "card" structure as outlined in numerous observations before already.
To just remediate the link purpose issue of the given observation, the link's accessible name (coming from the images alt right now) must communicate the link's purpose. For the "Mehr erfahren" link, one option could be use an id on the tile's heading and use it to label the link like this: <a href="..." aria-labelledby="news-card-heading-testsieger" id="news-card-link-testsieger">Mehr erfahren</a>. When doing so, ensure the heading actually describes the link's purpose.
It is however not recommended to just fix this, as the tile (card) has more issues that could be remediated by following the structure of a semantically correct marked up HTML card:
A good idea about the card structure can be found in observation "Content card link purpose not determinable" (2.4.4 Link Purpose (In Context)) for audit sample "Tarife". Basically, you limit one card (<article>) to one link (<a>), place the card's heading as the first card's first child element and visually place the image at the top by using CSS order.
Accompanying Files
Observation Details
The purpose for "Mehr erfahren" link in section "Helfen Sie dabei unser 5G-Netz noch größer zu machen!" is not easily programmatically determinable. The link on its own uses accessible name "Mehr erfahren", it has no directly surrounding text (paragraph), and the parent heading does not identify the link's purpose correctly.
Purpose can be determined by reading the full section from heading to link. This however cannot be declared "context".
Remediation Notes
Possible remediation options in order from preferred:
Use purposeful button text like "Immobilie oder Grundstück zur Vermietung anbieten", which in context with the heading determines the purpose
Rewrite the heading to identify section's purpose like "Vermieten Sie an uns und helfen Sie uns, das 5G-Netz noch größer zu machen", which again in context lets the link purpose be determined
Any combination of heading and button text rewrite
What is not preferred is to use ARIA, when there is a non-ARIA way to do so. If above-mentioned options cannot be used, the use of aria-labelledby is another option. Usually this is done by labelling the button by referring to the headings id. In this case this will not work without rewriting the heading anyways and as such is not a viable option. The way for aria-labelledby to work in this situation would be to add a hidden (class="visually-hidden") text that makes the link's purpose determinable. This comes with the caveat that the visual link text ("Mehr erfahren") must be part (and ideally the first part) of the accessible name (See 2.5.3 Label in Name).
Accompanying Files
Observation Details
HTML markup for links in "Tarife" carousel (showing one as an example):
<a
href="/unterwegs/handyvertrag"
id=""
title=""
class="..."
target="_self"
data-tealium-rel="..."
onclick=""
>
<div class="...">
<div class="...">
<div class="...">
<img
src="/resources/images/594932/telekom-smartphone-tarife.jpg"
alt="Icon Smartphone"
title=""
class="..."
height="255"
width="451"
loading="lazy"
style="height: 100.517%;"
id="e_594932"
usemap=""
/>
</div>
</div>
<h3 class="...">Handyverträge</h3>
<p class="...">Telefonieren und surfen mit Ihrem Smartphone.</p>
</div>
</a>The HTML link element <a> takes its accessible name from its contents. In this case, the contents are:
Image (
alt="Icon Smartphone")Heading "Handyverträge"
Paragraph "Telefonieren und surfen mit Ihrem Smartphone."
Making the accessible name of the link "Icon Smartphone Handyverträge Telefonieren und surfen mit Ihrem Smartphone."
Remediation Notes
See observation Content card link purpose not determinable (2.4.4 Link Purpose (In Context)) for remediation in the ideal way of creating accessible content cards.
Side notes: The link element also has a null id, a null title, and a null onclick attribute set. A link should not use the title attribute at all, a null id attribute sets id="" which leads to "duplicate ID" errors easily, and an onclick should never be useful on a link anyways. Ensure, removing non-used markup.
Accompanying Files
Observation Details
The tariff options in section "Die Sportoptionen im Überblick" use "Mehr Infos" links. The links' purpose cannot be determined in a simple way, as the links' accessible names are not enriched, not is the visual context determinable programmatically via surrounding paragraph text or accurate heading structure.
Link purpose must be determinable either directly (AAA criterion) or at least with given code context.
Remediation Notes
When a generic "Mehr Infos" link is used, ensure the link purpose can be determined by its context. For a button style link as used here, the context would be the most recent heading that should describe the sections topic. In this case, the "tile" (card) should use a semantic HTML heading element to describe the content's purpose, thus providing enough context to determine the "Mehr Infos" link's purpose as well.
As links can be displayed in a "link list" (e.g. Screen reader macOS VoiceOver → Rotor) or navigated in order from link to link, ideally each link with unique link target has a unique accessible name.
As a last resort, this can be done by using ARIA attributes like aria-labelledby to use the card's heading to provide a unique accessible name like "Mehr Infos zur MegaSport 12M Option".
Observation Details
While this is not a failure of this criterion, it is a usability issue to have link texts that not directly include the link's purpose. In the FAQ section "Häufig gestellte Fragen rund um Sport bei MagentaTV", the following link texts are present:
www.magentasport.de → The link target URL should no be used as link text as it duplicates the information of the link target.
MagentaTV
MagentaTV Stick
Hier
hier
Links 2-5 are using one or two word link texts which forces the user to rely on link context to determine the purpose of the link. If a link's purpose can be determined by direct context (e.g. a single-word link text within a single sentence) it is no failure of this success criterion. If however the purpose cannot be easily determined by the context, it is seen as a failure. Arguably, a long paragraph is not enough context to pass this criterion, as to determine the link purpose, a user of assistive technology would ideally need to perceive the full paragraph (again).
Another issue arises, as screen readers will announce text parts but "stop" with changes within the paragraph. If a single-word link is used within a sentence, the user must click through to the next element like this:
Eine Alternative bietet der [CLICK]
MagentaTV [CLICK]
Anschluss der Telekom, den Sie zum Empfang von MagentaSport nutzen können.Remediation Notes
By using full sentence link texts within paragraphs, a user of assistive technology can easily determine the link's purpose. The user can also do so without clicking ahead on each HTML element change. A possible change would be from the original
Hier können Sie püfen, ob Sie bereits einen Telekom Login haben, oder Sie können sich auch ohne Telekom-Vertrag einen neuen Telekom Login anlegen.
to an alternative version of
Hier können Sie püfen, ob Sie bereits einen Telekom Login haben, oder Sie können sich auch ohne Telekom-Vertrag einen neuen Telekom Login anlegen.
This will provide the link purpose within a single announcement of assistive technology without the need to click ahead, remember contents before or after the link or re-listen to whole paragraphs of text.
A link like
Streaming: Streamen Sie einfach das Programm über die MagentaSport App, den MagentaTV Stick, den Amazon Fire TV Stick oder Apple TV. Oder alternativ über Google Chromecast oder Apple Airplay.
could be moved to the end of the list item to achieve the same user experience
Streaming: Streamen Sie einfach das Programm über die MagentaSport App, den MagentaTV Stick, den Amazon Fire TV Stick oder Apple TV. Oder alternativ über Google Chromecast oder Apple Airplay. Hier erfahren Sie mehr über den MagentaTV Stick und passende Tarife.
Observation Details
Link text "Anzeigen" does not provide link purpose on its own. As the link is not part of an HTML paragraph element, the link does not have immediate text context. Also, the previous paragraph does only add "Zur Hilfe-Seite mit häufigen Fragen und Antworten" to the context. While the parent heading is "Kids Watch: So einfach geht's" and could help, identifying link purpose, the heading is not close enough to be count as context for purpose of this success criterion.
Remediation Notes
Use link text to describe link purpose or provide link purpose in immediate context. A purposeful link text could be "Die häufigsten Fragen und Antworten zur Kids Watch XPLORA X4 Play eSIM anzeigen".
Side note: The "info box" content could also be improved further by consolidating all tutorials, "Anleitungen", "Erklärvideos", "Hinweise", etc. into one help section like:
(download buttons)
Xplora App auf Ihr Smartphone herunterladen (beachten Sie, dass die XPLORA Kids Watch X6 Play eSIM nicht mit den Apps XPLORA 3 & 3S und 4 & Go kompatibel ist)
QR-Code auf dem Display der Uhr scannen und die Uhr mit dem Smartphone koppeln.
Xplora App öffnen und damit den eSIM Aktivierungscode aus dem Aktivierungsschreiben scannen* - alternativ startet der Download des eSIM Profils automatisch. Fertig!
Hier können Sie sich die schriftliche Installations-Anleitung als PDF herunterladen, sich ein Erklärvideo zum Entkoppeln der Uhr anschauen oder sich die häufigsten Fragen und Antworten zur Kids Watch XPLORA X6 Play eSIM anzeigen lassen.
Accompanying Files
Observation Details
The product card link is empty, resulting in a null accessible name. As such it is announced only as "link" to assistive technology.
As the product cards are not semantically structured e.g. by using <article> for the whole card and a heading <h3> with the product name, there is no programmatically determinable context that makes the link purpose clear to the user.
Interactive, focusable elements like links must have an accessible name. The name should state the link's purpose. If not directly, it must be determinable by context.
Remediation Notes
Ensure, link purpose is determinable. This can be done by adding "GERÄT XYZ in den Warenkorb legen" as text alternative. Ideally, a proper semantic structure on product card is used.
<article>
<h3 id="heading-PRODUCT">PRODUCT NAME</h3>
...
<a href="..." id="link-PRODUCT" aria-labelledby="heading-PRODUCT link-PRODUCT">
Produktdetails
</a>
</article>Accompanying Files
Observation Details
The product card link is empty, resulting in a null accessible name. As such it is announced only as "link" to assistive technology.
As the product cards are not semantically structured e.g. by using <article> for the whole card and a heading <h3> with the product name, there is no programmatically determinable context that makes the link purpose clear to the user.
Interactive, focusable elements like links must have an accessible name. The name should state the link's purpose. If not directly, it must be determinable by context.
Remediation Notes
Ensure, link purpose is determinable. This can be done by adding "GERÄT XYZ in den Warenkorb legen" as text alternative. Ideally, a proper semantic structure on product card is used.
<article>
<h3 id="heading-PRODUCT">PRODUCT NAME</h3>
...
<a href="..." id="link-PRODUCT" aria-labelledby="heading-PRODUCT link-PRODUCT">
Produktdetails
</a>
</article>Accompanying Files
Observation Details
The product card link is empty, resulting in a null accessible name. As such it is announced only as "link" to assistive technology.
As the product cards are not semantically structured e.g. by using <article> for the whole card and a heading <h3> with the product name, there is no programmatically determinable context that makes the link purpose clear to the user.
Interactive, focusable elements like links must have an accessible name. The name should state the link's purpose. If not directly, it must be determinable by context.
Remediation Notes
Ensure, link purpose is determinable. This can be done by adding "GERÄT XYZ in den Warenkorb legen" as text alternative. Ideally, a proper semantic structure on product card is used.
<article>
<h3 id="heading-PRODUCT">PRODUCT NAME</h3>
...
<a href="..." id="link-PRODUCT" aria-labelledby="heading-PRODUCT link-PRODUCT">
Produktdetails
</a>
</article>Accompanying Files
Observation Details
The product card link is empty, resulting in a null accessible name. As such it is announced only as "link" to assistive technology.
As the product cards are not semantically structured e.g. by using <article> for the whole card and a heading <h3> with the product name, there is no programmatically determinable context that makes the link purpose clear to the user.
Interactive, focusable elements like links must have an accessible name. The name should state the link's purpose. If not directly, it must be determinable by context.
Remediation Notes
Ensure, link purpose is determinable. This can be done by adding "GERÄT XYZ in den Warenkorb legen" as text alternative. Ideally, a proper semantic structure on product card is used.
<article>
<h3 id="heading-PRODUCT">PRODUCT NAME</h3>
...
<a href="..." id="link-PRODUCT" aria-labelledby="heading-PRODUCT link-PRODUCT">
Produktdetails
</a>
</article>Accompanying Files
Observation Details
The product card link is empty, resulting in a null accessible name. As such it is announced only as "link" to assistive technology.
As the product cards are not semantically structured e.g. by using <article> for the whole card and a heading <h3> with the product name, there is no programmatically determinable context that makes the link purpose clear to the user.
Interactive, focusable elements like links must have an accessible name. The name should state the link's purpose. If not directly, it must be determinable by context.
Remediation Notes
Ensure, link purpose is determinable. This can be done by adding "GERÄT XYZ in den Warenkorb legen" as text alternative. Ideally, a proper semantic structure on product card is used.
<article>
<h3 id="heading-PRODUCT">PRODUCT NAME</h3>
...
<a href="..." id="link-PRODUCT" aria-labelledby="heading-PRODUCT link-PRODUCT">
Produktdetails
</a>
</article>Accompanying Files
Observation Details
Link text "Anzeigen" does not provide link purpose on its own. As the link is not part of an HTML paragraph element, the link does not have immediate text context. Also, the previous paragraph does only add "Zur Hilfe-Seite mit häufigen Fragen und Antworten" to the context. While the parent heading is "Kinderuhr mit GPS Anio 6: So einfach geht's" and could help, identifying link purpose, the heading is not close enough to be count as context for purpose of this success criterion.
Remediation Notes
Use link text to describe link purpose or provide link purpose in immediate context. A purposeful link text could be "Die häufigsten Fragen und Antworten zur Kinderuhr mit GPS Anio 6 anzeigen".
Side note: The "info box" content could also be improved further by consolidating all tutorials, "Anleitungen", "Erklärvideos", "Hinweise", etc. into one help section like:
(download buttons)
SIM-Karte in Uhr einlegen (PIN der SIM-Karte muss deaktiviert sein. Wenn Sie die SIM-Karte bei uns angefordert haben, ist dies bereits voreingestellt.)
Anio App installieren
(download buttons)QR-Code auf dem Display der Uhr scannen und die Uhr mit dem Smartphone koppeln. Fertig!
Hier können Sie sich ein Erklärvideo zur Einrichtung der Uhr anschauen oder sich die häufigsten Fragen und Antworten zur Anio 6 anzeigen lassen.
Ensure, the "Erklärvideo" uses a button element, when opening in a dialog window.
Accompanying Files
Observation Details
Context of "Jetzt als Zweitkarte buchen"
preceding heading, level 2: "Unser Tipp für Mobilfunkkunden"
preceding heading, level 1: "Apple Watch für Kinder"
Context implies "Jetzt Apple Watch für Kinder als Zweitkarte buchen"
The purpose of a link must not solely rely on visually perceived aspects like layout, proximity, placement. The purpose of a link should be understandable from the link text itself or its programmatic context, ensuring it's accessible to assistive technologies and a wider range of users.
Relying solely on visual cues to convey a link's purpose makes it inaccessible to:
Users of assistive technology like screen readers.
Users with cognitive disabilities who might not interpret visual layouts correctly.
Users with customized displays (e.g. unexpected viewport sizes, or turned off styles).
Remediation Notes
As interactive elements, links must have accessible names. Ensure, HTML link elements are not "empty", i.e. without link text content.
Ensure, link purpose can be determined from link text content or its programmatic context. Ideally, the link text itself will convey the link purpose. If it is not possible to use link text content, proper programmatic context may be:
the link's surrounding paragraph, if the paragraph itself has the purpose to introduce the link and is not too long, as e.g. a user of assistive technology would have to perceive the paragraph in full to understand the link purpose.
the link's directly preceding heading (e.g. the heading of a product card may be used to determine the purpose of this card's CTA link)
This issue can be fixed, ensuring accurate heading structure. See 1.3.1 Info and Relationships and 2.4.6 Headings and Labels for more information.
Observation Details
Link "Apple Watch mit MultiSIM" links to PDF document FLY_01_O23091_WBM_Apple_Liporello_RZ.indd. This is not indicated at the link or in the link's context (surrounding content).
While not a strict failure of success criterion 2.4.4 Link Purpose, it is considered best practice to indicate such unexpected behavior. Using visual and text content in expected ways, ensures good user experiences, not only for users of assistive technology but for all users. In this realm, the differences of links <a href="..."> and buttons <button> usually are indicated visually. Clicking a link, a user expects moving to a new resource. Clicking a button, a user expects to (usually) stay on the resource and performing an action, like opening a dialog window, adding a product to a cart, expanding/collapsing accordion items, etc.
Clicking a visual button "Apple Watch mit MultiSIM" that is used as a link already is unexpected behavior given "button vs. link". Linking to a PDF document then is further unexpected behavior that ideally should be indicated prior to the user's action.
Accompanying Files
Observation Details
Links without programmatically determinable context; not part of a paragraph, preceding heading is main heading with device name
"Weitere Details"
link "Zum iPad Vergleich" is nested in another link with the same link target. Outer link is missing accessible name
The purpose of a link must not solely rely on visually perceived aspects like layout, proximity, placement. The purpose of a link should be understandable from the link text itself or its programmatic context, ensuring it's accessible to assistive technologies and a wider range of users.
Relying solely on visual cues to convey a link's purpose makes it inaccessible to:
Users of assistive technology like screen readers.
Users with cognitive disabilities who might not interpret visual layouts correctly.
Users with customized displays (e.g. unexpected viewport sizes, or turned off styles).
Remediation Notes
As interactive elements, links must have accessible names. Ensure, HTML link elements are not "empty", i.e. without link text content.
Ensure, link purpose can be determined from link text content or its programmatic context. Ideally, the link text itself will convey the link purpose. If it is not possible to use link text content, proper programmatic context may be:
the link's surrounding paragraph, if the paragraph itself has the purpose to introduce the link and is not too long, as e.g. a user of assistive technology would have to perceive the paragraph in full to understand the link purpose.
the link's directly preceding heading (e.g. the heading of a product card may be used to determine the purpose of this card's CTA link)
Observation Details
Links without programmatically determinable context; not part of a paragraph, preceding heading is main heading with device name
Produkthinweise – "Weitere Details"
The purpose of a link must not solely rely on visually perceived aspects like layout, proximity, placement. The purpose of a link should be understandable from the link text itself or its programmatic context, ensuring it's accessible to assistive technologies and a wider range of users.
Relying solely on visual cues to convey a link's purpose makes it inaccessible to:
Users of assistive technology like screen readers.
Users with cognitive disabilities who might not interpret visual layouts correctly.
Users with customized displays (e.g. unexpected viewport sizes, or turned off styles).
Remediation Notes
As interactive elements, links must have accessible names. Ensure, HTML link elements are not "empty", i.e. without link text content.
Ensure, link purpose can be determined from link text content or its programmatic context. Ideally, the link text itself will convey the link purpose. If it is not possible to use link text content, proper programmatic context may be:
the link's surrounding paragraph, if the paragraph itself has the purpose to introduce the link and is not too long, as e.g. a user of assistive technology would have to perceive the paragraph in full to understand the link purpose.
the link's directly preceding heading (e.g. the heading of a product card may be used to determine the purpose of this card's CTA link)
Observation Details
Link "Datenschutzhinweise" will download a PDF document. PDF documents must be made accessible as well. As PDF documents are out of scope for this audit, the document's accessibility is not evaluated.
As the user experience for all users is the same with this observation, it is not considered a failure under success criterion 2.4.4 Link Purpose (In Context).
Remediation Notes
It is best practice to inform users of the purpose of a link before the link is clicked. In this case, informing about the download of a PDF document would be best practice.
Ideally, the document is opened in the browser instead of being downloaded right away, so the user can decide if downloading the document is necessary and wanted.
Either way, a hint about the click linking to a PDF document instead of a website may be given to the user, e.g. as "Datenschutzhinweise (PDF)".
Side note: the nesting of interactive elements is noted in another observation as well. The link inside the input label will reduce the target area of the input and may lead to mis-clicking. Ideally, the Instructions, including the link to the document / website, is preceding the actual input element. The structure could be based on:
<p id="hint-datenschutzhinweise">... <a href="...">Datenschutzhinweise (PDF)</a> ...</p>
<input type="checkbox" id="input-datenschutzhinweise" aria-describedby="hint-datenschutzhinweise">
<label for="input-datenschutzhinweise">Ich habe die Datenschutzhinweise ...</label>
Purpose of link cannot be programmatically determined
+
Observation Details
The purpose of a link must not solely rely on visually perceived aspects like layout, proximity, placement. The purpose of a link should be understandable from the link text itself or its programmatic context, ensuring it's accessible to assistive technologies and a wider range of users.
Relying solely on visual cues to convey a link's purpose makes it inaccessible to:
Users of assistive technology like screen readers.
Users with cognitive disabilities who might not interpret visual layouts correctly.
Users with customized displays (e.g. unexpected viewport sizes, or turned off styles).
Remediation Notes
As interactive elements, links must have accessible names. Ensure, HTML link elements are not "empty", i.e. without link text content.
Ensure, link purpose can be determined from link text content or its programmatic context. Ideally, the link text itself will convey the link purpose. If it is not possible to use link text content, proper programmatic context may be:
the link's surrounding paragraph, if the paragraph itself has the purpose to introduce the link and is not too long, as e.g. a user of assistive technology would have to perceive the paragraph in full to understand the link purpose.
the link's directly preceding heading (e.g. the heading of a product card may be used to determine the purpose of this card's CTA link)