AccessRecord
AccessRecord
accessrecord.app

Accessibility Conformance Report · Public record

AccessRecord

Version 1.0 · WCAG 2.2 Level AA · Issued 6 Oct 2026

Verified

Covers current release

Reported by
AccessRecord
Product version at issue
1.0
Current shipping version
1.0
Standard claimed
WCAG 2.2 Level AA
Date signed
6 Oct 2026
Criteria reported
55

Conformance summary

41
Supports
3
Partially Supports
0
Does Not Support
11
Not Applicable
0
Not Evaluated

Evaluation notes

Scope: the public marketing pages, the public verification pages, and the signed-in workspace. Method: review of the rendered HTML, the stylesheet and the client source, with contrast measured across the interface colour palette. Issued against WCAG 2.2 Level AA, which includes every WCAG 2.1 Level AA success criterion. Known limitations are recorded against the criteria they affect.

Success criteria

Perceivable20 criteria

Perceivable success criteria
RefSuccess criterionConformanceRemarks
1.1.1Non-text ContentLevel ASupportsEvery icon is a decorative SVG marked aria-hidden="true"; the public pages contain no images at all (checked live).
1.2.1Audio-only and Video-only (Prerecorded)Level ANot ApplicableThe product has no audio or video content.
1.2.2Captions (Prerecorded)Level ANot ApplicableNo video.
1.2.3Audio Description or Media Alternative (Prerecorded)Level ANot ApplicableNo video.
1.2.4Captions (Live)Level AANot ApplicableNo live media.
1.2.5Audio Description (Prerecorded)Level AANot ApplicableNo media.
1.3.1Info and RelationshipsLevel ASupportsPublic pages use <main>, <nav aria-label="Site">, <header> and <footer>; the workspace uses <aside aria-label="Workspace">; every input sits inside a <label>; tables use <th>.
1.3.2Meaningful SequenceLevel ASupportsDOM order matches reading order; nothing is reordered by CSS.
1.3.3Sensory CharacteristicsLevel ASupportsInstructions name fields by their label ("Publisher name", "Version covered"), never by colour, shape or position.
1.3.4OrientationLevel AASupportsNo orientation lock; the layout reflows at any viewport.
1.3.5Identify Input PurposeLevel AASupportsautocomplete="username", "current-password", "new-password" and "one-time-code" are all present in the sign-in and password forms.
1.4.1Use of ColorLevel ASupportsStatus is carried by a word — "Verified", "Stale" — plus a reason sentence, not by colour alone.
1.4.2Audio ControlLevel ANot ApplicableNo audio.
1.4.3Contrast (Minimum)Level AAPartially SupportsMost text passes comfortably (dark slate 17.85:1, mid slate 7.58:1, grey slate 4.76:1 on white). But some secondary text uses #94A3B8, which measures 2.56:1 — below the 4.5:1 minimum. Two places: the "required for this claim" hint in the generator, and the "(A)" / "(AA)" level marker in the record table. Remarks: Secondary text in a light grey measures 2.56:1 against white, below the 4.5:1 minimum. Body text meets AA.
1.4.4Resize TextLevel AASupportsText scales; the viewport meta does not disable zoom.
1.4.5Images of TextLevel AASupportsNo text is rendered as an image; the wordmark is live text.
1.4.10ReflowLevel AASupportsResponsive layout; data tables become stacked cards below 768px, so nothing needs two-direction scrolling at 320px wide.
1.4.11Non-text ContrastLevel AASupportsThe focus indicator is a 2px solid #2563eb outline, measured at 5.17:1 against white.
1.4.12Text SpacingLevel AASupportsNo fixed-height text containers; content does not clip when line height and spacing are increased.
1.4.13Content on Hover or FocusLevel AASupportsThe only hover/focus overlays are dialogs, which are dismissible and do not cover the control that opened them.

Operable20 criteria

Operable success criteria
RefSuccess criterionConformanceRemarks
2.1.1KeyboardLevel ASupportsEvery control is a native <button>, <a>, <input>, <select> or <textarea>; no custom key handling is needed.
2.1.2No Keyboard TrapLevel ASupportsNothing traps focus; dialogs close with Escape or the Close button.
2.1.4Character Key ShortcutsLevel ASupportsNo single-character keyboard shortcuts are implemented.
2.2.1Timing AdjustableLevel ANot ApplicableNo task in the product has a time limit. Sign-in throttling is a security control, which is an essential exception.
2.2.2Pause, Stop, HideLevel ASupportsNo auto-playing or auto-updating content. Transitions are short, and prefers-reduced-motion reduces them to 0.001ms.
2.3.1Three Flashes or Below ThresholdLevel ANot ApplicableNo flashing content.
2.4.1Bypass BlocksLevel APartially SupportsThe public marketing pages provide a "Skip to the content" link to <main id="main">. The signed-in workspace does not have a skip link, and its content container is not marked as <main> — so keyboard users tab through the sidebar on every view. Remarks: Skip link present on public pages. The signed-in workspace has no skip link and no main landmark.
2.4.2Page TitledLevel ASupportsEach page has its own descriptive title — checked live on three routes.
2.4.3Focus OrderLevel ASupportsDOM order follows visual order; opening a dialog moves focus into it.
2.4.4Link Purpose (In Context)Level ASupportsLinks carry meaningful text ("Terms of Service", "Start over", the record slug). No bare "click here".
2.4.5Multiple WaysLevel AASupportsPages are reachable from the sidebar navigation, from in-page links, and from the public sitemap.
2.4.6Headings and LabelsLevel AASupportsEach view has a heading; every form control has a visible label.
2.4.7Focus VisibleLevel AASupportsA global :focus-visible outline is defined in the stylesheet — a 2px blue outline with a 2px offset.
2.4.11Focus Not Obscured (Minimum)Level AASupportsThe sticky header and the generator's sticky progress bar are short; the focused control stays visible, and dialogs scroll inside their own container.
2.5.1Pointer GesturesLevel ASupportsNo path-based or multi-point gestures; every action is a single pointer click.
2.5.2Pointer CancellationLevel ASupportsActions fire on the click, not on pointer-down, so a press can be cancelled by moving away.
2.5.3Label in NameLevel ASupportsAccessible names match the visible label text — buttons are their own label, inputs are labelled by the shared field wrapper.
2.5.4Motion ActuationLevel ANot ApplicableNothing is triggered by device motion or user motion.
2.5.7Dragging MovementsLevel AANot ApplicableThere is no drag-and-drop; every selection is a click.
2.5.8Target Size (Minimum)Level AASupportsInteractive controls are at least 24 by 24 CSS pixels; the icon-only buttons are 32 by 32.

Understandable13 criteria

Understandable success criteria
RefSuccess criterionConformanceRemarks
3.1.1Language of PageLevel ASupports<html lang="en"> on every page — checked live on three routes and in the sign-in template.
3.1.2Language of PartsLevel AANot ApplicableThe interface is entirely in English, so no part-level language marking is required.
3.2.1On FocusLevel ASupportsMoving focus onto a control never changes context.
3.2.2On InputLevel ASupportsChanging a field never submits or navigates; changes take effect on an explicit action.
3.2.3Consistent NavigationLevel AASupportsThe sidebar navigation is in the same order on every view.
3.2.4Consistent IdentificationLevel AASupportsThe same components keep the same labels throughout ("Save draft", "Public Links").
3.2.6Consistent HelpLevel ASupportsThe contact address support@accessrecord.app appears in the same place in the footer on every public page.
3.3.1Error IdentificationLevel ASupportsValidation problems are listed in a dialog that names each one — "Enter the version this record covers."
3.3.2Labels or InstructionsLevel ASupportsEvery input has a visible label; optional fields are marked "(optional)"; complex fields carry a hint line.
3.3.3Error SuggestionLevel AASupportsMessages say what to do, not just that something is wrong.
3.3.4Error Prevention (Legal, Financial, Data)Level AASupportsPublishing is an explicit action behind a completeness check; drafts are saved before a record is issued.
3.3.7Redundant EntryLevel ASupportsInformation already entered is not asked for again — the product and version carry into the record.
3.3.8Accessible Authentication (Minimum)Level AASupportsSign-in is username and password with no cognitive test, password managers are supported through autocomplete, and the two-factor code accepts paste.

Robust2 criteria

Robust success criteria
RefSuccess criterionConformanceRemarks
4.1.2Name, Role, ValueLevel ASupportsNative HTML controls throughout; the dialog is role="dialog" with aria-modal and a label; decorative SVGs are hidden from assistive technology.
4.1.3Status MessagesLevel AAPartially SupportsThe app confirms actions with a visual toast ("Draft saved", "Organisation saved"). The toast container has no live region and no status role — I searched the client bundle and found zero occurrences of aria-live — so a screen-reader user is not told these messages happened. Remarks: Status messages are shown visually but not announced to assistive technology; the toast container has no aria-live region.
Nabin KL Karna
Founder
support@accessrecord.app
Attestation
This report was signed by a named individual who accepts responsibility for its accuracy. It is not machine-generated.