English
a11yglass · Accessibility check for websites

Checked 9/24/2026 · https://www.heise.de/

F
0 / 100
5 critical · 2 to check

5 critical barriern · plus 2 to check.

Since the previous scan: no change.

How is the score formed? (100 starting points)
40 of 519 images without an alt attribute-18
4 form fields without a recognisable label-18
16 link(s) without a recognisable name in the HTML-18
6 button(s) without a name in the HTML-18
5 CSS rulen with possibly too low text contrast-18
No <h1> heading in the delivered HTML-7
6 duplicate id attributes-7
Result0 / 100
✕Contrast (1)✕Text alternatives (1)✕Labelling (3)?Structure (1)✓Language✓Zoom?Robustness (1)

Perceivable

CriticalWCAG 1.1.1 Non-text Content

40 of 519 images without an alt attribute

Images loaded via JavaScript are not counted here.

  • <img src="data:image/svg+xml;base64,PD94bWwgdmVyc2" width="3377" height="1898">
  • <img src="data:image/svg+xml;base64,PD94bWwgdmVyc2" width="1920" height="1079">
  • <img src="data:image/svg+xml;base64,PD94bWwgdmVyc2" width="3200" height="1798">
  • <img src="data:image/svg+xml;base64,PD94bWwgdmVyc2" width="300" height="250">

This is what you should do: Give each <img> an alt: a short description for meaningful images, alt="" for purely decorative ones.

CriticalWCAG 1.3.1 Info and Relationships / 4.1.2 Name, Role, Value

4 form fields without a recognisable label

Check whether there is an aria-label set via JavaScript.

  • <input type="text" name="q" placeholder="Suchen">
  • <input type="text" name="q" placeholder="Suchen">
  • <select name="in">
  • <input type="text" name="fs" placeholder="Im Preisvergleich suchen">

This is what you should do: Link each field to a <label for> element or set aria-label / aria-labelledby. A placeholder alone is not enough.

CriticalWCAG 1.4.3 Contrast (Minimum)

5 CSS rulen with possibly too low text contrast

Required: 4.5:1 (normal) or 3:1 (large text). With an “assumed page background” the actual background could not be determined reliably — check in the browser if in doubt. Found among others: `.dark a-gift-link dialog`: #e0e0e0 auf #fff (Vorfahren-Hintergrund) = 1.32:1 · `.a-android-native-app-prompt__close-banner`: #323232 auf rgba(0,0,0,0) = 1.64:1 · `a-opt-in[is-active] .opt-in__footnote`: #959595 auf #ffffff (Standard) (Seitenhintergrund, angenommen) = 3.00:1 · `.a-android-native-app-prompt__load-app`: #fff auf #27a209 = 3.36:1 · `a-topic .topic-label`: #fff auf #ed3725 = 4.06:1

.dark a-gift-link dialog, .a-android-native-app-prompt__close-banner, a-opt-in[is-active] .opt-in__footnote, .a-android-native-app-prompt__load-app, a-topic .topic-label

This is what you should do: Darken the text colour or lighten the background until the relevant minimum value is reached. Never use colour as the only distinguishing feature.

Operable

CriticalWCAG 2.4.4 Link Purpose / 4.1.2 Name, Role, Value

16 link(s) without a recognisable name in the HTML

Empty links or just an icon/image without alt. An aria-label set via JavaScript is not recognised here.

  • <a-click-performance>
  • <a name="topnavi.ho.magazine-nav.ct" class="hover:bg-brand dark:hover:
  • <a name="topnavi.ho.magazine-nav.ix" class="hover:bg-brand-alternative
  • <a name="topnavi.ho.magazine-nav.foto" class="hover:bg-brand dark:hove

This is what you should do: Add visible link text, or use aria-label or an image with alt for icon links.

CriticalWCAG 4.1.2 Name, Role, Value

6 button(s) without a name in the HTML

Buttons without text and without an aria-label are mute to screen readers — unless the name is set via JavaScript.

  • <button class="scroll-left text-ho-text">
  • <button class="scroll-right text-ho-text">
  • <button class="scroll-left text-ho-text">
  • <button class="scroll-right text-ho-text">

This is what you should do: Add button text or set an aria-label.

To checkWCAG 1.3.1 Info and Relationships / 2.4.6 Headings and Labels

No <h1> heading in the delivered HTML

Each page should begin with exactly one h1. On pages built via JavaScript the h1 may only appear in the browser — then check in the rendered DOM.

body

This is what you should do: Insert a meaningful <h1> as the first heading (ideally already server-side).

Robust

To checkWCAG 4.1.1 Parsing (deprecated, but still relevant for links)

6 duplicate id attributes

e.g. heisetopnavi_search, HEI_M_Incontent-2-label, HEI_M_Incontent-2, circle. Breaks label-for and aria links.

[id]

This is what you should do: Assign unique ids.

Next steps

  1. 40 of 519 images without an alt attribute. Give each <img> an alt: a short description for meaningful images, alt="" for purely decorative ones.
  2. 4 form fields without a recognisable label. Link each field to a <label for> element or set aria-label / aria-labelledby. A placeholder alone is not enough.
  3. 16 link(s) without a recognisable name in the HTML. Add visible link text, or use aria-label or an image with alt for icon links.
  4. 6 button(s) without a name in the HTML. Add button text or set an aria-label.
  5. 5 CSS rulen with possibly too low text contrast. Darken the text colour or lighten the background until the relevant minimum value is reached. Never use colour as the only distinguishing feature.
Monitor this page automatically?

Weekly re-scan, JS-rendered, email on new barriers — coming soon.

Create an accessibility statement →

Method & limits

On 9/24/2026 the HTML that www.heise.de delivers on a first visit without login was checked, plus up to four linked CSS files from the same domain. Checked: colour contrast (from CSS), text alternatives, form labelling, names of controls, heading structure, page title and page language, zoom lock, duplicate ids, positive tabindex values, landmarks.

Not checked: anything that arises via JavaScript, keyboard operability, visible focus, focus order, screen-reader announcement, content behind login, subpages. The automated test finds roughly 20–35% of WCAG breaches — the rest needs a manual check. A snapshot, not a legal decision.

Overlay widgets (accessibility buttons that switch contrast or font size) do not make a site conformant — the barriers found have to be fixed in the source code. Why overlays don't help

Check another website