Services

This page demonstrates SCREEN_READER accessibility violations — ARIA, labels, form controls, and accessible names. The enquiry form, team section, and media embeds each contain real violations with inline descriptions.

Request a Proposal

Tell us about your project and we'll respond within one business day. The form below plants several label and button name violations.

↑ The label's for="contact-email" doesn't match the input's id="enquiry-email" — broken association. Rule: label (Critical · SCREEN_READER).

↑ No <label> on this field (rule: label). autocomplete="company-sector" is not a valid WCAG 1.3.5 token (rule: autocomplete-valid). Both Critical/Moderate · SCREEN_READER.

<select> has no <label>, aria-label, or aria-labelledby — rule: select-name (Critical · SCREEN_READER).

↑ No label (3rd label instance). aria-describedby="field-note" targets a duplicate id — rule: duplicate-id-aria (Serious · SCREEN_READER).

Submit button: aria-label="" removes the accessible name (button-name · Critical). "Save Draft" button: aria-label="Discard form" mismatches visible text (label-content-name-mismatch · Serious). Hidden submit input has empty value (input-button-name · Critical). All SCREEN_READER.

Our Offices

The embedded maps below demonstrate two iframe-related SCREEN_READER violations.

London HQ

<iframe> with no title attribute — rule: frame-title (Serious · SCREEN_READER).

Lagos Office

title="Office Map" — duplicated on the next iframe too. Rule: frame-title-unique (Serious · SCREEN_READER).

Singapore Office

↑ Second title="Office Map" — identical to Lagos iframe above. Axe fires frame-title-unique on both.

Frequently Asked Questions

We serve enterprise and mid-market clients across finance, health, agriculture, and public sector.

↑ The <summary> above is empty — no text, no label. Screen reader users hear "disclosure widget" with no context. Rule: summary-name (Moderate · SCREEN_READER).

What engagement models do you offer?

We offer fixed-price projects, time-and-materials, and embedded team engagements from 1 month to 3 years.

Do you work with existing technology stacks?

Yes — we integrate with your existing infrastructure. We're technology-agnostic and have experience across all major cloud and enterprise platforms.

Platform Features

This section demonstrates custom ARIA widget violations embedded in a typical feature showcase layout.

Conformance Dashboard

WCAG 2.1 AA conformance

div[role="progressbar"] — no aria-label or aria-labelledby. Screen reader says "82 of 100" with no description of what's measured. Rule: aria-progressbar-name (Critical · SCREEN_READER).

Section 508 coverage

div[role="meter"] — no aria-label. Rule: aria-meter-name (Critical · SCREEN_READER).

Receive weekly digest (role="checkbox" — no aria-checked)

div[role="checkbox"] is missing required aria-checked attribute. Screen readers cannot announce the checked state. Rule: aria-required-attr (Critical · SCREEN_READER).

Feature Tabs

Reporting
Integrations
Settings

div[role="tablist"] contains plain <div> children — none have role="tab". Rule: aria-required-children (Critical · SCREEN_READER).

Your session will expire in 5 minutes. Any unsaved work will be lost.

div[role="dialog"] has no aria-label or aria-labelledby. Screen readers announce "dialog" with no purpose. Rule: aria-dialog-name (Serious · SCREEN_READER).

aria-hidden="true" hides this button from screen readers while tabindex="0" keeps it focusable — keyboard users land on an invisible element. Rule: aria-hidden-focus (Serious · SCREEN_READER).

Automated Testing

Runs on every deployment via our CI pipeline.

↑ This card has aria-exploded="true" — not a real WAI-ARIA attribute. Ignored by all ATs. Rule: aria-valid-attr (Critical · SCREEN_READER).

Manual Audits

Quarterly screen-reader testing with real users.

aria-expanded="yes" — invalid value. Must be "true" or "false". Rule: aria-valid-attr-value (Critical · SCREEN_READER).

Compliance Reports

Download latest report →

aria-checked="false" is not allowed on role="link". Only valid on checkbox, radio, switch, etc. Rule: aria-allowed-attr (Serious · SCREEN_READER).

Request an Audit

Get Started

role="superbutton" is not a valid WAI-ARIA role — ATs ignore it. Rule: aria-roles (Critical · SCREEN_READER).

Share Feedback

How would you like to provide feedback?

Online form
Email
Phone call

↑ The three pill buttons use role="option" without a role="listbox" parent (aria-required-parent · Critical). The icon button uses role="menuitem" with no name (aria-command-name · Critical). Both SCREEN_READER.

div[role="textbox"][contenteditable] has no aria-label, aria-labelledby, or title. Screen reader says "text field" with no description of what to type. Rule: aria-input-field-name (Serious · SCREEN_READER).