Back to the sample overview

Accessibility Conformance Report, International Edition (based on VPAT® Version 2.5Rev INT)

Moodle LMS 5.3 (default install): Sample Accessibility Conformance Report

SAMPLE REPORT. Independent sample evaluation by Mark Malthouse, independent accessibility evaluator. Not produced for, reviewed by, or affiliated with Moodle.

This is a sample, made to show the format and method. It records what was observed on 15 October 2026 on a default Moodle LMS 5.3 install with sample course content, run locally by the evaluator.

Mark Malthouse is not IAAP-certified; each criterion lists exactly how it was tested.

This is a technical assessment, not legal advice and not a determination of legal conformance.

Name of Product/VersionMoodle LMS 5.3 (release package moodle-5.3.zip, downloaded 14 October 2026), default settings, Boost theme, PHP 8.4.26, PostgreSQL 17.11, with a scripted sample course.
Report Date15 October 2026 (testing done on 15 October 2026)
Product DescriptionMoodle LMS is an open-source learning management system used by schools, colleges and universities. This sample covers the learner side of the product as a student and a logged-out visitor see it.
Contact Information

Vendor accessibility contact: not applicable to this sample (in a client report, the vendor's own accessibility contact).

Evaluation party: Mark Malthouse, independent accessibility evaluator, mark@markmalthouse.com.

Notes

Scope. 7 user flows, 13 page states, listed in the "Flows tested" section. Pages outside these flows, teacher and administrator screens, the mobile app, and Level AAA criteria were not evaluated.

Test environment. Moodle LMS 5.3 installed from the official release package with default settings, the Boost theme, PHP 8.4.26 and PostgreSQL 17.11, served on the evaluator's computer. A script created one sample course whose content mirrors Moodle's public demo course: an audio message from the tutor, an online-text assignment, a quiz with multiple-choice and matching questions, a forum and a graded item. A test student account was used for all flows except login.

Platform and content. Remarks say "Platform" for issues in Moodle LMS itself and "Sample content" for issues in the course material, which a real customer would write themselves.

User tours. Moodle's first-visit user tours were marked as completed for the test student so they did not cover the pages under test. The tours themselves were not evaluated.

Evaluation Methods Used

Automated checks: axe-core 4.13.0 (through @axe-core/playwright) run on every page state, all rule sets, results saved as JSON. Playwright 1.64.1 driving Chromium 156.0.8078.4 on Windows 11; Firefox 157.0 used to repeat the quiz keyboard test.

WCAG 2.2 and timing checks: focus-not-obscured sampling at each Tab stop (2.4.11), target size measurement with the spacing exception (2.5.8), paste and autocomplete checks on login (3.3.8), and the session timeout warning tested with the timeout shortened to 5 minutes through Moodle's admin/cli/cfg.php (2.2.1). Windows contrast themes were emulated with forced colours.

Keyboard-only walkthrough: every flow was completed with the keyboard (Tab, Shift+Tab, Enter, Space, arrow keys, Escape, Alt+F10). On each page state the Tab key was pressed through the whole page (251 unique Tab stops; repeats caused by the quiz defect are not counted), logging each focused element and comparing focused and unfocused screenshots pixel by pixel to check for a visible focus indicator.

Zoom and reflow: each page state rendered 320 CSS px wide (400% zoom of a 1280 px wide window) and 640 CSS px wide (200%), and in portrait at 768 x 1024, checking for sideways scrolling and cut-off content, with screenshots.

Colour contrast: axe-core text contrast checks; border contrast of form controls computed from styles; pixel sampling of screenshots where text sits over images.

Screen-reader-relevant markup inspection: the Chromium accessibility tree (what screen readers read) saved for each page state, plus scripted checks of accessible names, roles, states, landmarks, headings, form labels and error links, live regions, label-in-name, and language attributes. Text spacing was tested by injecting the WCAG 1.4.12 values.

Screen reader: NVDA 2026.2 with Chrome 156.0.8078.4 and Firefox 157.0, driven by Guidepup automation; spoken output logged and reviewed (login, quiz in focus and browse modes, forum form, forum Message editor and errors, session timeout warning). No testing by people with disabilities.

Limits. Markup inspection shows what a screen reader is given, not how it announces it. Automated tools find only part of accessibility problems, which is why each criterion also lists the manual checks used.

Applicable Standards/Guidelines

This report covers the degree of conformance for the following accessibility standard/guidelines:

Standard/GuidelineIncluded In Report
Web Content Accessibility Guidelines 2.0Level A (Yes), Level AA (Yes), Level AAA (No)
Web Content Accessibility Guidelines 2.1Level A (Yes), Level AA (Yes), Level AAA (No)
Web Content Accessibility Guidelines 2.2Level A (Yes), Level AA (Yes), Level AAA (No)
Revised Section 508 standards published January 18, 2017 and corrected January 22, 2018Yes
EN 301 549 Accessibility requirements for ICT products and services, V3.1.1 (2019-11) and V3.2.1 (2021-03)Yes

EN 301 549 V4.1.1 (published September 2026, aligned with WCAG 2.2) is not yet cited in the Official Journal; the WCAG 2.2 rows above cover its new web criteria.

Terms

The terms used in the Conformance Level information are defined as follows:

Results summary (WCAG 2.2 A and AA)

Conformance LevelLevel A (32)Level AA (24)
Supports2418
Partially Supports44
Not Applicable42

The most serious finding: in a quiz attempt, keyboard users cannot Tab past a multiple-choice question they have not answered (criterion 2.1.1; Moodle tracker MDL-89285). The ranked fix list is in fix-list.html (and fix-list.pdf).

Flows tested

FlowRolePages and statesEvidence folder
F1 Log inLogged-out visitorLogin page; failed login error state; keyboard-only loginevidence/F1-login/
F2 DashboardStudentDashboard with course overview and timelineevidence/F2-dashboard/
F3 Course pageStudentCourse "Psychology in Cinema" with course index drawer and an audio message from the tutorevidence/F3-course/
F4 Assignment submissionStudentAssignment "Reflective journal": view page, Add submission (online text editor), saveevidence/F4-assignment/
F5 Quiz attemptStudentQuiz "Factual recall test" (5 multiple-choice questions and 1 matching question): view page, attempt, summary, submit confirmation, reviewevidence/F5-quiz/
F6 Forum postStudentForum "Course discussion": view page, Add discussion topic form, validation errors, postingevidence/F6-forum/
F7 GradesStudentUser report for the course and grades overviewevidence/F7-grades/

WCAG 2.x Report

Note: When reporting on conformance with the WCAG 2.x Success Criteria, they are scoped for full pages, complete processes, and accessibility-supported ways of using technology as documented in the WCAG 2.x Conformance Requirements.

Each WCAG row also applies to: EN 301 549 V3.2.1 clause 9.[criterion] (Web) and 11.8.2 (Authoring Tool); Revised Section 508 501 (Web) and 504.2 (Authoring Tool). For this web product, the Electronic Docs, Software and Closed contexts are Not Applicable. The Authoring Tool context (the TinyMCE editor in the assignment and forum flows) has the same level as the Web context, because the editor was tested as part of those pages. WCAG 2.2-only criteria do not apply to EN 301 549 V3.2.1 or Revised Section 508.

Table 1: Success Criteria, Level A

CriteriaConformance LevelRemarks and Explanations
1.1.1 Non-text ContentSupports

Informative images have text alternatives and decorative images are hidden from assistive technology (activity icons and user initials sit next to visible names; Font Awesome icons use aria-hidden="true"). axe image and SVG rules passed on all 13 page states. The editor image dialog asks for alternative text (see Section 508 504.3).

How tested: axe-core 4.13 automated scan; markup inspection (Chromium accessibility tree and DOM).

1.2.1 Audio-only and Video-only (Prerecorded)Supports

Platform: authors can add a transcript next to the media or as a linked file, and the media player works by keyboard.

Sample content: the 33-second "Message from your tutor" in the sample course has no transcript; this is a content issue for the course author (see fix list item C1) and does not change the platform rating.

How tested: markup inspection (Chromium accessibility tree and DOM); visual review of screenshots.

1.2.2 Captions (Prerecorded)Not Applicable

No prerecorded video is in the evaluated flows. The course audio is audio-only and is rated under 1.2.1.

How tested: markup inspection (Chromium accessibility tree and DOM).

1.2.3 Audio Description or Media Alternative (Prerecorded)Not Applicable

No prerecorded video is in the evaluated flows.

How tested: markup inspection (Chromium accessibility tree and DOM).

1.3.1 Info and RelationshipsSupports

Headings mark page and block titles; landmarks (navigation, main, regions) are present; every form field has a programmatic label (0 unlabelled controls across 13 page states); quiz answers are radio groups inside a fieldset named "Question 1 Select one:"; grade tables use th with scope; form errors are tied to fields with aria-describedby.

Advisory: some heading levels skip, and the activity description and dates sit outside the main landmark.

How tested: axe-core 4.13 automated scan; markup inspection (Chromium accessibility tree and DOM).

1.3.2 Meaningful SequenceSupports

DOM reading order matched the visual order of each page.

How tested: markup inspection (Chromium accessibility tree and DOM); keyboard-only walkthrough.

1.3.3 Sensory CharacteristicsSupports

Instructions in the 7 flows were read in full. None relied only on shape, colour, size, location or sound.

How tested: manual reading of page text in aria-*.yml snapshots.

1.4.1 Use of ColorSupports

Platform: links in body text are underlined; course completion and quiz navigation state do not rely on colour alone. axe link-in-text-block passed.

Sample content: no colour-only information.

How tested: axe-core 4.13 automated scan; visual review of screenshots.

1.4.2 Audio ControlNot Applicable

No audio plays automatically. The course audio player has autoplay off.

How tested: markup inspection (Chromium accessibility tree and DOM).

Evidence: verify/V3.json
2.1.1 KeyboardPartially Supports

Platform (quiz attempt): when a multiple-choice question has no answer selected, pressing Tab on its first option does not move focus. After 26 more Tab presses focus was still on option a, in both Chromium 156 and Firefox 157. A keyboard user cannot Tab past an unanswered question; the only ways on are to pick an answer with the arrow keys (which records an answer the student may not want) or to use the quiz navigation drawer. The hidden "Clear my choice" radio is checked, focusable and inside aria-hidden.

With NVDA 2026.2: in focus mode (Tab), five more Tab presses on option a produced no speech in Chrome or Firefox, because focus did not move. In browse mode NVDA is not blocked: with Firefox, H moved from "Question 1, heading, level 3" to "Question 2, heading, level 3" and the arrow keys read question 1's status, its question text and its first option; F (next form field) moved on to the question 2 drop-downs in Firefox and through later questions in Chrome. So sighted keyboard users, switch users and screen reader users who use Tab are blocked; screen reader users moving in browse mode can get past.

Known to Moodle: MDL-89285 "qtype_multichoice: Keyboard trap prevents Tab navigation past unanswered single-answer questions" (affects 5.3; status "Component lead review in progress" on 15 October 2026). The older MDL-67188 was closed as a duplicate of MDL-69116, fixed in Moodle 3.8.5 and 3.9.2 in September 2020; the current defect is a later problem.

Everything else in the flows worked by keyboard alone: login, dashboard filters, course index, audio player, the text editor (including Alt+F10 for its toolbar), saving a submission, posting to the forum, the quiz submit dialog and the session timeout dialog.

How tested: keyboard-only walkthrough; repeat test with Tab key presses only, from the top of the page, in Chromium 156 and Firefox 157.

2.1.2 No Keyboard TrapSupports

Shift+Tab and arrow keys always move focus out; the forward-Tab defect is rated under 2.1.1 and 2.4.3.

How tested: keyboard-only walkthrough.

2.1.4 Character Key ShortcutsSupports

Pressing s, n, ?, j, k, g and / with focus on the dashboard page triggered nothing. Editor shortcuts use modifier keys.

How tested: keyboard-only walkthrough.

Evidence: run-F2.json
2.2.1 Timing AdjustableSupports

The default session timeout is 8 hours with a warning 20 minutes before it ends. With the timeout shortened for testing (5 minutes, warning 4 minutes before), the warning appeared as a modal dialog ("No recent activity. Your session is about to time out. Do you want to extend your current session?"), focus moved into it, Tab reached "Extend session", Enter closed it, and the user stayed logged in. The quiz tested has no time limit.

With NVDA and Chrome, Tab in the warning read "Close, button", "Cancel, button", "Extend session, button", and Enter extended the session. NVDA spoke nothing in the 3 seconds after the warning appeared; it had also said nothing for the page load just before, so this may be a test timing effect rather than a product defect, and it is noted as an advisory.

How tested: keyboard-only walkthrough; session timeout set with admin/cli/cfg.php and restored afterwards.

2.2.2 Pause, Stop, HideSupports

No moving, blinking, scrolling or auto-updating content in the flows. Media does not autoplay.

How tested: visual review of screenshots.

2.3.1 Three Flashes or Below ThresholdSupports

No flashing content was seen in any flow.

How tested: visual review of screenshots.

2.4.1 Bypass BlocksSupports

"Skip to main content" is the first Tab stop on every page and moves focus to the main content. Landmarks and headings are present.

How tested: keyboard-only walkthrough; markup inspection (Chromium accessibility tree and DOM).

Evidence: run-F1.json
2.4.2 Page TitledSupports

Every page state had a descriptive title, for example "Psych Cine: Reflective journal - Edit submission | SampleU" and "Factual recall test: Attempt summary | SampleU".

How tested: markup inspection (Chromium accessibility tree and DOM).

2.4.3 Focus OrderPartially Supports

Platform: the quiz Tab defect in 2.1.1 breaks forward focus order on attempt pages. Elsewhere focus order followed the visual order; opening the course index moves focus into it, closing the quiz and timeout dialogs returns focus to the trigger, and forum validation moves focus to the first field with an error.

How tested: keyboard-only walkthrough.

2.4.4 Link Purpose (In Context)Supports

All links checked had clear text or context (activity names, "Review" inside an attempt item, breadcrumbs).

How tested: axe-core 4.13 automated scan; markup inspection (Chromium accessibility tree and DOM); keyboard-only walkthrough.

2.5.1 Pointer GesturesSupports

No feature needs a multipoint or path-based gesture. The editor resize handle is optional and also moves with the arrow keys.

How tested: markup inspection (Chromium accessibility tree and DOM); visual review of screenshots.

2.5.2 Pointer CancellationSupports

Pressing the pointer down on a control, moving off it and releasing did not activate it (tested on #groupingdropdown, #user-menu-toggle, #sortingdropdown on the dashboard). All other controls in the flows are standard links and buttons that act on click, which happens on pointer release.

How tested: pointer test: press on a control, move the pointer off it, release.

Evidence: verify/V9.json
2.5.3 Label in NamePartially Supports

Platform: several controls have an accessible name that does not contain their visible text, so a speech-input user saying the visible words will not activate them:

Dashboard course overview: "All" is named "Grouping drop-down menu", "Sort by course name" is named "Sorting drop-down menu", "Card" is named "Display drop-down menu".

Quiz attempt and review: every "Flag question" (or "Remove flag") button is named "Flagged".

Header: the user menu showing "BG Barbara" is named "User menu". Forum list: the "Started by" sort link is named "Sort by discussion starter name in descending order".

How tested: markup inspection (Chromium accessibility tree and DOM); comparison of visible text with computed names for every link and button.

2.5.4 Motion ActuationNot Applicable

No function is triggered by device motion.

How tested: markup inspection (Chromium accessibility tree and DOM).

3.1.1 Language of PageSupports

Every page sets lang="en".

How tested: markup inspection (Chromium accessibility tree and DOM).

3.2.1 On FocusSupports

No change of context happened on focus at any of the unique Tab stops across the 13 page states.

How tested: keyboard-only walkthrough.

3.2.2 On InputSupports

Changing a quiz drop-down with the arrow keys and selecting a radio answer did not navigate or submit.

How tested: keyboard-only walkthrough.

Evidence: run-F5.json
3.2.6 Consistent Help (Level A 2.2 only)Supports

The only help mechanism, the "?" button ("Show footer") at the bottom right, appears in the same place on every page in the flows.

How tested: visual review of the desktop screenshots of all 13 page states.

3.3.1 Error IdentificationSupports

A failed login shows "Unable to log in. Your login info may be incorrect. Please try again." in a role="alert" box. Posting an empty forum topic marks Subject and Message "Required", sets aria-invalid="true", links the message with aria-describedby and moves focus to Subject; NVDA (Chrome and Firefox) then read "Subject, edit, required, invalid entry, Required, blank".

How tested: keyboard-only walkthrough; markup inspection (Chromium accessibility tree and DOM).

3.3.2 Labels or InstructionsSupports

All visible form fields have visible labels that are also programmatic labels. The password reveal button's unclear name is rated under 2.4.6.

How tested: axe-core 4.13 automated scan; markup inspection (Chromium accessibility tree and DOM).

3.3.7 Redundant Entry (Level A 2.2 only)Supports

No flow asks the user to enter the same information twice in one process. The forum form keeps entered text after a validation error.

How tested: keyboard walkthrough of the login, assignment, quiz and forum flows.

4.1.1 Parsing (WCAG 2.0 and 2.1 only; obsolete and removed in WCAG 2.2)Supports

For WCAG 2.0 and 2.1, the W3C errata and the VPAT 2.5Rev instructions treat this criterion as always supported for HTML. It is obsolete and removed in WCAG 2.2. No duplicate id values were found.

How tested: markup inspection (Chromium accessibility tree and DOM).

4.1.2 Name, Role, ValuePartially Supports

Platform (quiz): the "Clear my choice" radio and link are focusable inside an aria-hidden container (5 per attempt page), which ties to the Tab defect in 2.1.1.

Platform (quiz): the flag button's name is fixed as "Flagged". NVDA read an unflagged question's button as "Flagged, toggle button, not pressed, Flag this question for future reference" and, after pressing it, "Flagged, toggle button, pressed". The state is announced correctly, but the name contradicts it when the question is not flagged.

Platform (login): NVDA read the password reveal button as "Toggle sensitive, button" in Chrome and Firefox, and said nothing when it was pressed, so neither its purpose nor its state is conveyed.

Platform (text editor): the editable area puts aria-label on the iframe body (role "document"), where ARIA does not allow it. Tabbing from Subject into the forum Message editor, NVDA announced only "application" in Chrome, so the field name "Message" was not announced; no speech was captured within 2 seconds in Firefox (not confirmed).

How tested: axe-core 4.13 automated scan; markup inspection (Chromium accessibility tree and DOM); keyboard-only walkthrough; NVDA 2026.2 with Chrome and Firefox.

Table 2: Success Criteria, Level AA

CriteriaConformance LevelRemarks and Explanations
1.2.4 Captions (Live)Not Applicable

No live audio or video in the flows.

How tested: markup inspection (Chromium accessibility tree and DOM).

1.2.5 Audio Description (Prerecorded)Not Applicable

No prerecorded video in the flows.

How tested: markup inspection (Chromium accessibility tree and DOM).

1.3.4 OrientationSupports

Every page state worked in portrait (768 x 1024) and landscape.

How tested: visual review of screenshots; portrait viewport test.

1.3.5 Identify Input PurposeSupports

Login fields use autocomplete="username" and autocomplete="current-password". No other field asks for the user's own personal data.

How tested: markup inspection (Chromium accessibility tree and DOM).

Evidence: verify/W3.json
1.4.3 Contrast (Minimum)Supports

All text passed axe. Where axe could not decide (white text on the login page photo panel), screenshot pixels were sampled: the text measured at least 11:1 against its darkened background.

How tested: axe-core 4.13 automated scan; contrast measurement; pixel sampling with scripts/sample-contrast.mjs.

1.4.4 Resize TextSupports

At 640 CSS px wide (200% zoom of a 1280 px wide window) all content and functions stayed available. The quiz attempt page overflows by 4 px with no loss of content. Browser text-only zoom was not tested.

How tested: reflow at 320 CSS px and 200% zoom equivalent.

1.4.5 Images of TextSupports

The interface uses real text.

How tested: visual review of screenshots.

1.4.10 ReflowPartially Supports

Platform: at 320 CSS px wide (400% zoom of a 1280 px wide window), the "Opened" and "Due" dates on assignment pages do not wrap, so the page scrolls sideways (364 px wide) and the dates are cut off.

Minor: the quiz attempt page is 4 px too wide at 320 px.

At 320 px the floating "Open course index" button sits over the lower left of the screen and covers part of whatever is under it (about 40% of the "Edit submission" button when the page first loads). Scrolling about 100 px moves the content clear, so nothing is lost and no fix is rated here.

Data tables (grades, forum discussion list) scroll inside their own container, which WCAG allows.

How tested: reflow at 320 CSS px and 200% zoom equivalent; visual review of screenshots.

1.4.11 Non-text ContrastPartially Supports

Platform: text fields and switches on the light grey page background (#f8f9fa), such as the forum Subject field, the forum search field and the forum subscription switches, have a #8f959e border, 2.86:1, below 3:1. The same border on white is 3.02:1 and passes.

Platform: the messaging drawer search field has the same border on the drawer background #ebeef0, 2.59:1. It was measured with the drawer closed; the same colours show when it is open.

The focus ring (3.36:1 on white, 3.19:1 on #f8f9fa) and the quiz radio buttons meet 3:1. Quiz drop-downs on the light blue question background have 2.64:1 borders but are also identified by their text and arrow, so they are not counted.

How tested: contrast measurement; visual review of screenshots.

1.4.12 Text SpacingSupports

With WCAG text spacing applied, no visible text was clipped or overlapped on the page states checked. Only visually hidden screen reader text reported as clipped, which is expected.

How tested: injected text spacing CSS, clipped-text check and screenshot review.

1.4.13 Content on Hover or FocusPartially Supports

Platform: the tooltip on the course index drawer button closes with Escape but disappears when the pointer moves from the button onto the tooltip, so it is not hoverable. Screen magnifier users can lose it.

How tested: pointer and keyboard test on the course page.

2.4.5 Multiple WaysSupports

Pages can be reached through the primary navigation, the course index, breadcrumbs, the dashboard and the course list.

How tested: visual review of screenshots; markup inspection (Chromium accessibility tree and DOM).

2.4.6 Headings and LabelsPartially Supports

Platform: the password reveal button on the login page is labelled "Toggle sensitive", which does not tell the user it shows or hides the password. NVDA read it as "Toggle sensitive, button" in Chrome and Firefox. Headings and other labels describe their content.

How tested: markup inspection (Chromium accessibility tree and DOM); NVDA 2026.2 with Chrome and Firefox.

2.4.7 Focus VisibleSupports

Each Tab stop was screenshotted focused and unfocused and the two images compared; every measured stop showed a visible change. On the quiz attempt page the Tab walk never passed question 1, so the later questions, drop-downs and Finish button were measured on the quiz review page instead, and option a's focus ring is visible in the 2.1.1 evidence.

How tested: keyboard-only walkthrough; pixel comparison of focused and unfocused states.

2.4.11 Focus Not Obscured (Minimum) (Level AA 2.2 only)Supports

Tabbing through all 7 page types with the sticky header in place, no focused element was fully hidden once scrolling finished. One stop (the "Course" tab on the course page) looked hidden while the page was still smooth-scrolling; a re-check with a 1.2 second pause showed it fully visible.

How tested: Tab walk on each page type, sampling 9 points of each focused element with elementFromPoint; re-check of the one flagged stop.

2.5.7 Dragging Movements (Level AA 2.2 only)Supports

No student task in the 7 flows needs dragging. The editor resize handle is optional and also moves with the arrow keys. Course and block drag-and-drop are teacher features outside scope.

How tested: keyboard-only and pointer walkthrough of each flow; markup inspection.

2.5.8 Target Size (Minimum) (Level AA 2.2 only)Supports

Every pointer target on the 7 page types was measured. 128 were smaller than 24 by 24 CSS px; all met the spacing exception (a 24 px circle on the target does not overlap another target or its circle) or are browser-default radio buttons and checkboxes. No target failed. The spacing check is geometric, based on bounding boxes.

How tested: script measuring all links, buttons and form controls on each page type.

Evidence: verify/W2.json
3.1.2 Language of PartsSupports

The default install has only English, and the flows contain no passages in another language.

How tested: markup inspection (Chromium accessibility tree and DOM).

3.2.3 Consistent NavigationSupports

The header, navigation, drawers and footer appear in the same order on every page.

How tested: keyboard-only walkthrough; visual review of screenshots.

3.2.4 Consistent IdentificationSupports

Repeated functions use the same names and icons across pages.

How tested: markup inspection (Chromium accessibility tree and DOM).

3.3.3 Error SuggestionSupports

Error messages say what to do: "Required" on empty forum fields, "Your login info may be incorrect. Please try again." on failed login.

How tested: keyboard-only walkthrough.

3.3.4 Error Prevention (Legal, Financial, Data)Supports

Quiz answers can be reviewed on the summary page before submitting, and "Submit all and finish" asks for confirmation in a dialog that can be cancelled. The assignment saves as a draft that can be edited.

How tested: keyboard-only walkthrough; markup inspection (Chromium accessibility tree and DOM).

3.3.8 Accessible Authentication (Minimum) (Level AA 2.2 only)Supports

Login asks only for username and password. Both fields have autocomplete values ("username", "current-password") so password managers can fill them, pasting is not blocked (a keyboard paste into the password field worked), and there is no CAPTCHA or other cognitive test.

How tested: markup inspection; paste event and Ctrl+V paste into both fields.

Evidence: verify/W3.json
4.1.3 Status MessagesSupports

The forum "Post added" message uses role="alert" and the dashboard course list has a polite live region. The login error appears after a full page reload, so it is page content rather than a status message (see Advisory notes).

How tested: markup inspection (Chromium accessibility tree and DOM).

Evidence: run-F6.json

Table 3: Success Criteria, Level AAA

Level AAA criteria were not evaluated and are not included in this report.

Revised Section 508 Report

Chapter 3: Functional Performance Criteria (FPC)

CriteriaConformance LevelRemarks and Explanations
302.1 Without VisionPartially SupportsSee WCAG 2.1.1, 2.4.3, 2.4.6 and 4.1.2, tested with NVDA 2026.2 in Chrome and Firefox. Screen reader users who move with Tab (focus mode) cannot get past an unanswered quiz question, though browse mode (H, arrow keys, F) gets past it; the password reveal button is read as "Toggle sensitive, button" with no state; the forum Message editor is announced only as "application" in Chrome (no speech was captured within 2 seconds in Firefox, not confirmed); the quiz flag reads "Flagged, toggle button, not pressed" on unflagged questions. Forum fields, forum validation errors and the timeout dialog buttons were read correctly; the login error was not announced after the page reload (see Advisory notes).
302.2 With Limited VisionPartially SupportsSee WCAG 1.4.10, 1.4.11 and 1.4.13: sideways scrolling of activity dates at 400% zoom, faint field borders, and a tooltip that closes when the pointer moves onto it.
302.3 Without Perception of ColorSupportsSee WCAG 1.4.1 and 1.4.3.
302.4 Without HearingSupportsSee WCAG 1.2.1.
302.5 With Limited HearingSupportsSee WCAG 1.2.1.
302.6 Without SpeechSupportsNo function in the flows needs speech.
302.7 With Limited ManipulationPartially SupportsSee WCAG 2.1.1 and 2.5.3: the quiz Tab defect affects keyboard and switch users, and names that differ from visible text affect voice control users.
302.8 With Limited Reach and StrengthSupportsEverything in the flows, including the quiz, can be completed with a pointer alone or a keyboard alone; no time-critical or simultaneous actions are needed.
302.9 With Limited Language, Cognitive, and Learning AbilitiesPartially SupportsSee WCAG 2.4.6: the unclear "Toggle sensitive" name. Error messages are clear (3.3.1, 3.3.3) and login needs no cognitive test (3.3.8).

Chapter 4: Hardware

Not Applicable: Moodle LMS is software.

Chapter 5: Software

CriteriaConformance LevelRemarks and Explanations
501.1 Scope, Incorporation of WCAG 2.0 AAHeading cell, no response requiredMoodle LMS is web content and is evaluated against the WCAG tables above.
502 Interoperability with Assistive Technology
502.2.1 User Control of Accessibility FeaturesNot ApplicableApplies to platform software. Moodle LMS runs in a browser and is not a platform.
502.2.2 No Disruption of Accessibility FeaturesSupportsMoodle LMS did not turn off or override browser or operating system accessibility features in the flows. Browser zoom and keyboard navigation kept working.
502.3 Accessibility Services
502.3.1 Object InformationNot ApplicableWeb content; covered by WCAG 4.1.2 above.
502.3.2 Modification of Object InformationNot ApplicableWeb content; covered by WCAG 4.1.2 above.
502.3.3 Row, Column, and HeadersNot ApplicableWeb content; covered by WCAG 1.3.1 above.
502.3.4 ValuesNot ApplicableWeb content; covered by WCAG 4.1.2 above.
502.3.5 Modification of ValuesNot ApplicableWeb content; covered by WCAG 4.1.2 above.
502.3.6 Label RelationshipsNot ApplicableWeb content; covered by WCAG 1.3.1 above.
502.3.7 Hierarchical RelationshipsNot ApplicableWeb content; covered by WCAG 1.3.1 above.
502.3.8 TextNot ApplicableWeb content; covered by WCAG 4.1.2 above.
502.3.9 Modification of TextNot ApplicableWeb content; covered by WCAG 4.1.2 above.
502.3.10 List of ActionsNot ApplicableWeb content; covered by WCAG 4.1.2 above.
502.3.11 Actions on ObjectsNot ApplicableWeb content; covered by WCAG 4.1.2 above.
502.3.12 Focus CursorNot ApplicableWeb content; covered by WCAG 2.4.7 above.
502.3.13 Modification of Focus CursorNot ApplicableWeb content; covered by WCAG 2.4.3 above.
502.3.14 Event NotificationNot ApplicableWeb content; covered by WCAG 4.1.3 above.
502.4 Platform Accessibility FeaturesNot ApplicableApplies to platform software.
503 Applications
503.2 User PreferencesSupportsBrowser zoom and text spacing were respected (WCAG 1.4.4, 1.4.12). With Windows contrast themes emulated (forced colours), text, controls, borders and focus stayed visible on the dashboard, course, forum and quiz pages; only the decorative quiz flag icon disappears, and its text label stays.
503.3 Alternative User InterfacesNot ApplicableMoodle LMS does not provide an alternative user interface that works as assistive technology.
503.4 User Controls for Captions and Audio Description
503.4.1 Caption ControlsNot ApplicableNo video is in the evaluated flows.
503.4.2 Audio Description ControlsNot ApplicableNo video is in the evaluated flows.
504 Authoring Tools
504.2 Content Creation or EditingPartially SupportsThe TinyMCE editor in the assignment and forum flows is an authoring tool. It lets authors create accessible content (headings, lists, links, image alternative text) and its interface works by keyboard, but the editable area naming issue in WCAG 4.1.2 applies.
504.2.1 Preservation of Information Provided for Accessibility in Format ConversionNot ApplicableThe editor saves HTML and does not convert content to another format in the evaluated flows.
504.2.2 PDF ExportNot ApplicableThe editor in the evaluated flows has no PDF export.
504.3 PromptsSupportsThe image dialog asks "How would you describe this image to someone who cannot see it?" with a "Decorative image" option, and Tools > Accessibility checker is available to students.
504.4 TemplatesNot ApplicableThe editor offers no content templates in the evaluated flows.

Chapter 6: Support Documentation and Services

Method for Chapter 6 and EN 301 549 Clause 12: 4 representative public pages (moodle.com/accessibility, the support.moodle.com home page, the support site's accessibility statement, and the moodle.org community forums page) were each requested once, saved, and checked offline with axe-core and by inspection. The MoodleDocs "Accessibility" page was read once as text, because docs.moodle.org answers plain requests with a bot challenge. Target-size and contrast results on the saved copies were not used, because the sites' style sheets were not loaded. Evidence: evidence/docs/.

CriteriaConformance LevelRemarks and Explanations
601.1 Scope
602 Support Documentation
602.2 Accessibility and Compatibility FeaturesPartially SupportsMoodle describes its accessibility commitment, the standards it follows and its own VPATs (moodle.com/accessibility and the MoodleDocs "Accessibility" page). The pages checked do not explain how to use accessibility features such as keyboard shortcuts or screen reader and browser compatibility.
602.3 Electronic Support DocumentationPartially Supportsmoodle.com/accessibility and the two support.moodle.com pages had no WCAG markup failures in axe apart from one: the feedback form on the support accessibility statement has a reCAPTCHA iframe with no title. The moodle.org community page has 3 images without alt text, including the small-screen logo link, which therefore has no accessible name, and list markup errors in its navigation.
602.4 Alternate Formats for Non-Electronic Support DocumentationNot ApplicableAll support documentation is electronic.
603 Support Services
603.2 Information on Accessibility and Compatibility FeaturesSupportsThe support site links to the Moodle LMS VPAT documentation and has its own accessibility statement; moodle.com/accessibility links the VPATs for Moodle LMS, Workplace and the App. Support for self-hosted sites is given by Moodle Partners and the hosting organisation, whose services were not contacted.
603.3 Accommodation of Communication NeedsPartially SupportsThe support site's accessibility statement offers content in other formats on request (accessible PDF, large print, audio) and a way to report barriers. That route is a feedback form that requires an email address and a reCAPTCHA check, and the page names no alternative such as an email address or phone number, so users who cannot complete a CAPTCHA may be blocked. No request was actually sent.

EN 301 549 Report

Clause 4: Functional Performance Statements (FPS)

CriteriaConformance LevelRemarks and Explanations
4.2.1 Usage without visionPartially SupportsSee Section 508 302.1.
4.2.2 Usage with limited visionPartially SupportsSee Section 508 302.2.
4.2.3 Usage without perception of colourSupportsSee Section 508 302.3.
4.2.4 Usage without hearingSupportsSee WCAG 1.2.1.
4.2.5 Usage with limited hearingSupportsSee WCAG 1.2.1.
4.2.6 Usage with no or limited vocal capabilitySupportsSee Section 508 302.6.
4.2.7 Usage with limited manipulation or strengthPartially SupportsSee Section 508 302.7.
4.2.8 Usage with limited reachSupportsSee Section 508 302.8.
4.2.9 Minimize photosensitive seizure triggersSupportsSee WCAG 2.3.1.
4.2.10 Usage with limited cognition, language or learningPartially SupportsSee Section 508 302.9.
4.2.11 PrivacySupportsThe accessibility features in the flows (password reveal, keyboard access, text alternatives) do not expose more personal information than for other users.

Clause 5: Generic Requirements

CriteriaConformance LevelRemarks and Explanations
5.1 Closed functionalityNot ApplicableMoodle LMS is open to assistive technology.
5.2 Activation of accessibility featuresNot ApplicableThe product has no accessibility mode to activate.
5.3 BiometricsNot ApplicableNo biometric login in scope.
5.4 Preservation of accessibility information during conversionNot ApplicableNo format conversion in the flows.
5.5.1 Means of operationNot ApplicableApplies to hardware.
5.5.2 Operable parts discernibilityNot ApplicableApplies to hardware.
5.6.1 Tactile or auditory statusNot ApplicableApplies to hardware.
5.6.2 Visual statusSupportsOn-screen toggles (password reveal eye icon, forum subscription switch, quiz flag) show their state visually.
5.7 Key repeatNot ApplicableKey repeat is handled by the operating system.
5.8 Double-strike key acceptanceNot ApplicableHandled by the operating system.
5.9 Simultaneous user actionsSupportsNo function needs simultaneous actions.

Clause 6: ICT with Two-Way Voice Communication

Notes: The ICT covered by this report has no two-way voice communication. As such, the requirements of this clause do not apply.

Clause 7: ICT with Video Capabilities

CriteriaConformance LevelRemarks and Explanations
7.1.1 Captioning playbackNot ApplicableNo video is in the evaluated flows.
7.1.2 Captioning synchronizationNot ApplicableNo video is in the evaluated flows.
7.1.3 Preservation of captioningNot ApplicableNo video is in the evaluated flows.
7.1.4 Captions characteristicsNot ApplicableNo video is in the evaluated flows.
7.1.5 Spoken subtitlesNot ApplicableNo video is in the evaluated flows.
7.2.1 Audio description playbackNot ApplicableNo video is in the evaluated flows.
7.2.2 Audio description synchronizationNot ApplicableNo video is in the evaluated flows.
7.2.3 Preservation of audio descriptionNot ApplicableNo video is in the evaluated flows.
7.3 User controls for captions and audio descriptionNot ApplicableSee Section 508 503.4.

Clause 8: Hardware

Notes: The ICT covered by this report is not hardware. As such, the requirements of this clause do not apply.

Clause 9: Web

CriteriaConformance LevelRemarks and Explanations
9.1 to 9.4See WCAG 2.x sectionEach WCAG 2.1 A and AA row above applies as EN 301 549 clause 9 plus the WCAG number (for example, 1.1.1 is 9.1.1.1).

Clause 10: Non-web Documents

Notes: No non-web documents are in the evaluated flows. As such, the requirements of this clause do not apply.

Clause 11: Software

Notes: Moodle LMS is a web application, so clauses 11.1 to 11.4 are covered by Clause 9 and the WCAG section. The rows below cover the clauses that still apply to it.

CriteriaConformance LevelRemarks and Explanations
11.5 Interoperability with assistive technologyNot ApplicableSee Section 508 502.3.1 to 502.3.14.
11.6.1 User control of accessibility featuresNot ApplicableSee Section 508 502.2.1.
11.6.2 No disruption of accessibility featuresSupportsSee Section 508 502.2.2.
11.7 User preferencesSupportsSee Section 508 503.2.
11.8.1 Content technologySupportsThe editor produces HTML, which supports accessible content.
11.8.2 Accessible content creationPartially SupportsSee Section 508 504.2.
11.8.3 Preservation of accessibility information in transformationsNot ApplicableSee Section 508 504.2.1.
11.8.4 Repair assistanceSupportsThe editor's Tools > Accessibility checker reports issues in the content.
11.8.5 TemplatesNot ApplicableSee Section 508 504.4.

Clause 12: Documentation and Support Services

CriteriaConformance LevelRemarks and Explanations
12.1.1 Accessibility and compatibility featuresPartially SupportsSee Section 508 602.2.
12.1.2 Accessible documentationPartially SupportsSee Section 508 602.3.
12.2.2 Information on accessibility and compatibility featuresSupportsSee Section 508 603.2.
12.2.3 Effective communicationPartially SupportsSee Section 508 603.3.
12.2.4 Accessible documentationPartially SupportsSee Section 508 602.3.

Clause 13: ICT Providing Relay or Emergency Service Access

Notes: Moodle LMS provides no relay or emergency service access. As such, the requirements of this clause do not apply.

Advisory notes

These do not change any conformance level above but are worth fixing.

Legal Disclaimer

This sample report describes what one evaluator observed on one Moodle install on one date, using the methods listed. It is a technical assessment, not legal advice and not a determination of legal conformance with any law, regulation or contract. It makes no claim that the product is free of other accessibility issues. Moodle did not commission, review or approve it, and results may differ for other versions, themes, plugins, settings or content. "VPAT" is a registered service mark of the Information Technology Industry Council (ITI); this report follows the structure of the VPAT 2.5Rev INT edition and is not endorsed by ITI.