---
title: "Accessibility Audit (WCAG 2.2) and Remediation"
canonical: https://wavect.io/services/accessibility-audit/
language: en
description: "Audit web and mobile apps against WCAG 2.2: reproducible findings, prioritized fixes and a retest. Technical evidence, not a certificate or legal opinion."
image: "https://wavect.io/img/general/bak/open_graph_preview.jpg"
---

Accessibility Audit

# An accessibility audit your developers can act on.

Find out where people using a keyboard, a screen reader or zoom get stuck in your product. We evaluate an agreed sample against WCAG 2.2, write findings your team can reproduce, fix what you commission and retest the result.

THE ENGAGEMENT

## One sample. Reproducible findings. Fixes you can verify.

1. **Agree the sample** Journeys, templates, states, devices and assistive technologies.
2. **Evaluate and report** WCAG 2.2 findings with steps, impact and criterion.
3. **Fix and retest** Commissioned repairs, rechecked across the full task.

DIRECT ANSWER

An accessibility audit evaluates a defined sample of a product against WCAG 2.2 success criteria, combining automated checks with manual keyboard, screen-reader and zoom testing. This engagement delivers reproducible findings, prioritized fixes and a retest; it is not a certification or a legal conformity declaration.

Best for

- A web or mobile app whose critical journeys have never been tested beyond an automated scan
- A team that needs technical evidence for its own European Accessibility Act assessment

Consider another approach

- A legal opinion on whether accessibility law applies to you
- Ongoing functional and regression testing of every release

## Sample complete journeys, not just pages

An audit is only as good as its sample. We pick the complete tasks people must finish (signing up, finding something, checking out, submitting a form with validation errors, downloading a document) and the templates and states those tasks touch: dialogs, expandable lists, error messages, empty results. Then we agree browsers, devices and assistive technologies. If you want to prepare that brief yourself or compare offers, use our [buyer guide to scoping an accessibility audit](/software-development-guide/website-accessibility-audit/).

## Automated checks find some issues. People find the rest.

We evaluate against [WCAG 2.2](https://www.w3.org/TR/WCAG22/) at the level you choose, usually AA. Tools catch part of the problems; the rest needs a person working through the task.

Automated checks

Scanners across the sample for contrast, missing names, structure and misused ARIA. Every warning is triaged, because a tool result is not a finding until someone confirms it.

Keyboard and focus

Every task without a mouse: focus order, visible focus, keyboard traps in dialogs, skip links and where focus lands after an action.

Screen reader and zoom

Agreed screen reader and browser pairs (for example VoiceOver with Safari, NVDA with Firefox), text resizing and content reflow on narrow screens.

Native mobile apps

Where mobile is in scope: iOS and Android screens with the platform screen readers, larger system text sizes and touch target checks.

## Findings your developers can reproduce and fix

Each finding records the page and state, environment, steps, observed and expected behavior, user impact, the WCAG criterion and a recommended repair. Findings are ranked by how much they stop someone completing the task, not by the number of tool warnings. You also get a tested-scope statement: what was evaluated, how, and what was not. The audit covers how the product works for disabled people; general functional and regression testing stays with [Software QA](/services/software-quality-assurance/).

## Illustrative finding: a dialog that traps the keyboard

Illustrative, not an audited client page. A keyboard user opens a filter dialog but cannot reach its close control, so the page behind it becomes unreachable. The finding names the template and state, the browser and keyboard steps, the user impact, the expected focus behavior and WCAG 2.2 success criterion 2.1.2 No Keyboard Trap, with a proposed repair. After the fix, the retest repeats the whole task: open, use, close, and focus returning to the control that opened the dialog.

## Audit, remediate, retest. Each is its own decision.

Scope and quote each phase separately. A sample gives evidence about the tested scope; it does not show that every page is accessible.

1. **Audit** - Receive the issue register, the tested-scope statement, method and environment details and a prioritized fix list.
2. **Remediation** - We fix the commissioned issues in your code, or your team fixes them using our findings and component guidance.
3. **Retest** - The original steps and neighbouring states are checked again. The register links each finding to its repair and retest result.

## Use the evidence, keep the legal decision with counsel

The European Accessibility Act and the national laws implementing it, such as Germany’s BFSG, have made accessibility a release topic for many digital products sold in the EU. Whether and how they apply to your product is a legal question for your counsel. We provide technical evidence: what was tested, against which criteria, what failed and what was fixed. We do not issue certificates or conformity declarations. If your scope calls for testing with disabled participants or an external specialist evaluator, the proposal names who does it. New screens are cheaper to get right before they are built; for that, see [UX/UI Design](/services/ux-ui-design/).

// proof

## Accessibility inside product delivery

We have no published client accessibility audit yet. These cases are adjacent work, not WCAG conformance audits. Aniron: responsive layouts and accessibility addressed alongside functional delivery of a developer portal. Scramble Wallet: accessibility fixed as part of foundation work for non-crypto users aged 50+. Soundromeda: the reproduce, rank and retest discipline the findings format relies on.

### [Aniron](/case-studies/aniron/)
- **Status:** Live
- **Outcome:** Developer portal - Customer onboarding, API-key controls, prepaid-credit top-ups and usage visibility delivered.
- **Summary:** Wavect was the main contributor to Aniron's developer application, covering API keys, prepaid credits, usage visibility and …
- **Stack:** TypeScript, Next.js, React

### [Scramble Wallet](/case-studies/scramble-wallet/)
- **Status:** Live
- **Outcome:** 50+ - Target User Age
- **Summary:** Multi-browser extension, Tron added, iOS + Android via multiple routes, built on a forked Enkrypt, debt paid down release by …
- **Stack:** VueJS, Typescript, NestJS

### [Soundromeda](/case-studies/soundromeda/)
- **Status:** Live
- **Outcome:** Production - Vibe-Coded → Hardened
- **Summary:** QA-led hardening took a vibe-coded game prototype to a state grant committees backed.

These are selected projects, not our full portfolio. We have shipped 100+ products since 2018.

## Questions before you start

### Is an automated scan enough?

No. Scans find part of the issues and help prevent regressions. The tasks that matter still need keyboard, screen-reader and zoom testing by a person.

### Do we get a certificate?

No. You get an issue register, a tested-scope statement and retest records. W3C does not certify WCAG conformance, and we do not declare legal conformity.

### Are fixes included?

Only if you commission them. Audit, remediation and retest are scoped separately, so your own team can do the fixing.

### Which WCAG level do you test against?

Usually WCAG 2.2 level AA. We agree the target and any additional criteria in the proposal.

### Have you audited products like ours before?

This is a separately scoped, newer offer and we have not published a client accessibility audit. The method follows W3C evaluation guidance, and the cases on this page show adjacent product work where accessibility was part of delivery.

## Choose your next step

- [Prepare an accessibility audit brief](/software-development-guide/website-accessibility-audit/)
- [Independent release testing](/services/software-quality-assurance/)
- [Design new screens accessibly](/services/ux-ui-design/)

## Structured Data

```json
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@id": "https://wavect.io/#organization",
      "@type": [
        "Organization",
        "ProfessionalService",
        "LocalBusiness"
      ],
      "employee": [
        {
          "@id": "https://wavect.io/team/kevin-riedl/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Kevin Riedl",
          "url": "https://wavect.io/team/kevin-riedl/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        },
        {
          "@id": "https://wavect.io/team/christof-jori/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Christof Jori",
          "url": "https://wavect.io/team/christof-jori/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        }
      ],
      "founder": [
        {
          "@id": "https://wavect.io/team/kevin-riedl/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Kevin Riedl",
          "url": "https://wavect.io/team/kevin-riedl/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        },
        {
          "@id": "https://wavect.io/team/christof-jori/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Christof Jori",
          "url": "https://wavect.io/team/christof-jori/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        }
      ],
      "legalRepresentative": [
        {
          "@id": "https://wavect.io/team/kevin-riedl/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Kevin Riedl",
          "url": "https://wavect.io/team/kevin-riedl/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        },
        {
          "@id": "https://wavect.io/team/christof-jori/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Christof Jori",
          "url": "https://wavect.io/team/christof-jori/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        }
      ],
      "name": "Wavect GmbH",
      "subjectOf": {
        "@id": "https://wavect.io/verified-claims.json#dataset",
        "@type": "Dataset",
        "creator": {
          "@id": "https://wavect.io/#organization",
          "@type": [
            "Organization",
            "ProfessionalService",
            "LocalBusiness"
          ]
        },
        "description": "A machine-readable registry of quantitative and qualitative claims published by Wavect, with review dates, localized page appearances and public third-party citations where available.",
        "inLanguage": "en",
        "isAccessibleForFree": true,
        "license": "https://creativecommons.org/licenses/by/4.0/",
        "name": "Wavect verified publication claims",
        "url": "https://wavect.io/verified-claims.json"
      },
      "url": "https://wavect.io/"
    },
    {
      "@id": "https://wavect.io/team/kevin-riedl/#person",
      "@type": "Person",
      "jobTitle": "Managing Director",
      "name": "Kevin Riedl",
      "sameAs": [
        "https://www.wikidata.org/wiki/Q139796365",
        "https://www.linkedin.com/in/wsdt",
        "https://github.com/wsdt"
      ],
      "url": "https://wavect.io/team/kevin-riedl/",
      "worksFor": {
        "@id": "https://wavect.io/#organization",
        "@type": [
          "Organization",
          "ProfessionalService",
          "LocalBusiness"
        ]
      }
    },
    {
      "@id": "https://wavect.io/team/christof-jori/#person",
      "@type": "Person",
      "jobTitle": "Managing Director",
      "name": "Christof Jori",
      "sameAs": [
        "https://www.wikidata.org/wiki/Q139796367",
        "https://www.linkedin.com/in/jocr77/",
        "https://github.com/jo-chris"
      ],
      "url": "https://wavect.io/team/christof-jori/",
      "worksFor": {
        "@id": "https://wavect.io/#organization",
        "@type": [
          "Organization",
          "ProfessionalService",
          "LocalBusiness"
        ]
      }
    },
    {
      "@id": "https://wavect.io/#website",
      "@type": "WebSite",
      "inLanguage": [
        "en",
        "de",
        "es",
        "zh"
      ],
      "name": "Wavect",
      "potentialAction": {
        "@type": "SearchAction",
        "query-input": "required name=search_term_string",
        "target": {
          "@type": "EntryPoint",
          "urlTemplate": "https://wavect.io/search/?q={search_term_string}"
        }
      },
      "publisher": {
        "@id": "https://wavect.io/#organization",
        "@type": [
          "Organization",
          "ProfessionalService",
          "LocalBusiness"
        ]
      },
      "url": "https://wavect.io/"
    }
  ]
}
```

```json
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@id": "https://wavect.io/services/accessibility-audit/#service",
      "@type": "Service",
      "areaServed": [
        {
          "@type": "Country",
          "name": "Austria"
        },
        {
          "@type": "Place",
          "name": "Worldwide"
        }
      ],
      "category": "Product Design & Quality",
      "dateModified": "2026-10-30",
      "description": "Audit web and mobile apps against WCAG 2.2: reproducible findings, prioritized fixes and a retest. Technical evidence, not a certificate or legal opinion.",
      "name": "Accessibility Audit (WCAG 2.2) and Remediation",
      "provider": {
        "@id": "https://wavect.io/#organization",
        "@type": [
          "Organization",
          "ProfessionalService",
          "LocalBusiness"
        ]
      },
      "serviceType": "Accessibility Audit",
      "url": "https://wavect.io/services/accessibility-audit/"
    },
    {
      "@type": "BreadcrumbList",
      "itemListElement": [
        {
          "@type": "ListItem",
          "item": "https://wavect.io/",
          "name": "Home",
          "position": 1
        },
        {
          "@type": "ListItem",
          "item": "https://wavect.io/services/overview/",
          "name": "Services",
          "position": 2
        },
        {
          "@type": "ListItem",
          "item": "https://wavect.io/services/overview/#design",
          "name": "Product Design & Quality",
          "position": 3
        },
        {
          "@type": "ListItem",
          "item": "https://wavect.io/services/accessibility-audit/",
          "name": "Accessibility Audit",
          "position": 4
        }
      ]
    },
    {
      "@id": "https://wavect.io/services/accessibility-audit/#webpage",
      "@type": "WebPage",
      "dateModified": "2026-10-30",
      "description": "Audit web and mobile apps against WCAG 2.2: reproducible findings, prioritized fixes and a retest. Technical evidence, not a certificate or legal opinion.",
      "inLanguage": "en",
      "isPartOf": {
        "@id": "https://wavect.io/#website",
        "@type": "WebSite"
      },
      "mainEntity": {
        "@id": "https://wavect.io/services/accessibility-audit/#service"
      },
      "name": "Accessibility Audit (WCAG 2.2) and Remediation",
      "url": "https://wavect.io/services/accessibility-audit/"
    }
  ]
}
```

```json
{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "No. Scans find part of the issues and help prevent regressions. The tasks that matter still need keyboard, screen-reader and zoom testing by a person."
      },
      "name": "Is an automated scan enough?"
    },
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "No. You get an issue register, a tested-scope statement and retest records. W3C does not certify WCAG conformance, and we do not declare legal conformity."
      },
      "name": "Do we get a certificate?"
    },
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Only if you commission them. Audit, remediation and retest are scoped separately, so your own team can do the fixing."
      },
      "name": "Are fixes included?"
    },
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Usually WCAG 2.2 level AA. We agree the target and any additional criteria in the proposal."
      },
      "name": "Which WCAG level do you test against?"
    },
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "This is a separately scoped, newer offer and we have not published a client accessibility audit. The method follows W3C evaluation guidance, and the cases on this page show adjacent product work where accessibility was part of delivery."
      },
      "name": "Have you audited products like ours before?"
    }
  ],
  "speakable": {
    "@type": "SpeakableSpecification",
    "cssSelector": [
      ".faq-question",
      ".faq-answer"
    ]
  }
}
```
