# CKEditor WCAG 2.0 Compliance

This article decribes CKEditor 4 compatibility with the Web Content Accessibility Guidelines (WCAG) 2.0 standard.

## # Principle 1: Perceivable

Information and user interface components must be presentable to users in ways they can perceive. See reference.

Guideline Level Description of Support Used Techniques
1.1 Text Alternatives: Provide text alternatives for any non-text content so that it can be changed into other forms people need, such as large print, braille, speech, symbols or simpler language.
1.1.1 Non-text Content: All non-text content that is presented to the user has a text alternative that serves the equivalent purpose, except for the situations listed below.
• Controls, Input: If non-text content is a control or accepts user input, then it has a name that describes its purpose.
• Time-Based Media: If non-text content is time-based media, then text alternatives at least provide descriptive identification of the non-text content.
• Test: If non-text content is a test or exercise that would be invalid if presented in text, then text alternatives at least provide descriptive identification of the non-text content.
• Sensory: If non-text content is primarily intended to create a specific sensory experience, then text alternatives at least provide descriptive identification of the non-text content.
• CAPTCHA: If the purpose of non-text content is to confirm that content is being accessed by a person rather than a computer, then text alternatives that identify and describe the purpose of the non-text content are provided, and alternative forms of CAPTCHA using output modes for different types of sensory perception are provided to accommodate different disabilities.
• Decoration, Formatting, Invisible: If non-text content is pure decoration, is used only for visual formatting, or is not presented to users, then it is implemented in a way that it can be ignored by assistive technology.
A
• All non-text content, be it UI icons or the <iframe> element used as the editing area, or any other form of non-text content, is assocciated with a proper textual label via standard HTML elements and attributes or via WAI-ARIA bindings.
• All images conveying information have proper alt attributes.
• Form controls are created using standard HTML elements and are provided with a textual label using proper HTML elements.
• All decorative images have an empty alt attribute or are inserted via CSS.
1.2 Time-based Media: Provide alternatives for time-based media.
1.2.1 Audio-only and Video-only (Prerecorded): For prerecorded audio-only and prerecorded video-only media, the following are true, except when the audio or video is a media alternative for text and is clearly labeled as such:
• Prerecorded Audio-only: An alternative for time-based media is provided that presents equivalent information for prerecorded audio-only content.
• Prerecorded Video-only: Either an alternative for time-based media or an audio track is provided that presents equivalent information for prerecorded video-only content.
A N/A. There is no time-based media content in the editor.
1.2.2 Captions (Prerecorded): Captions are provided for all prerecorded audio content in synchronized media, except when the media is a media alternative for text and is clearly labeled as such. A N/A. There is no time-based media content in the editor.
1.2.3 Audio Description or Media Alternative (Prerecorded): An alternative for time-based media or audio description of the prerecorded video content is provided for synchronized media, except when the media is a media alternative for text and is clearly labeled as such. A N/A. There is no time-based media content in the editor.
1.2.4 Captions (Live): Captions are provided for all live audio content in synchronized media. AA N/A. There is no time-based media content in the editor.
1.2.5 Audio Description (Prerecorded): Audio description is provided for all prerecorded video content in synchronized media. AA N/A. There is no time-based media content in the editor.
1.3 Adaptable: Create content that can be presented in different ways (for example simpler layout) without losing information or structure.
1.3.1 Info and Relationships: Information, structure, and relationships conveyed through presentation can be programmatically determined or are available in text. A
• The editor is marked as an application using WAI-ARIA landmarks.
• The editor has an appropriate textual label that contains its name.
• Form controls are created using standard HTML elements and are provided with a textual label using proper HTML elements.
• All form fields inside the editor that are required are properly marked as such using the aria-required attribute.
• Related form controls are grouped using the <fieldset> element and are given a descriptive name using the <legend> element.
• All UI elements that cannot be expressed using standard HTML elements are provided with textual labels via WAI-ARIA bindings.
• All UI elements that have a changeable state expose their current state to Assistive Technology via standard HTML attributes. If the state cannot be expressed that way, WAI-ARIA bindings are used.
• All information conveyed with color, including the color selector, is also available without color through textual labels or exposing its current value to Assistive Technology.
1.3.2 Meaningful Sequence: When the sequence in which content is presented affects its meaning, a correct reading sequence can be programmatically determined. A
• CKEditor is not a document, it is an application. Its visual structure does, however, match the order of its DOM elements.
• UI elements are grouped in a logical way, e.g. tolbar buttons are grouped by their functionality.
1.3.3 Sensory Characteristics: Instructions provided for understanding and operating content do not rely solely on sensory characteristics of components such as shape, size, visual location, orientation, or sound. A All editor UI elements have proper textual labels.
1.4 Distinguishable: Make it easier for users to see and hear content including separating foreground from background.
1.4.1 Use of Color: Color is not used as the only visual means of conveying information, indicating an action, prompting a response, or distinguishing a visual element. A All information conveyed with color, including the color selector, is also available without color through textual labels or exposing its current value to Assistive Technology.
1.4.2 Audio Control: If any audio on a Web page plays automatically for more than 3 seconds, either a mechanism is available to pause or stop the audio, or a mechanism is available to control audio volume independently from the overall system volume level. A N/A. There is no audio content in the editor.
1.4.3 Contrast (Minimum): The visual presentation of text and images of text has a contrast ratio of at least 4.5:1, except for the following:
• Large Text: Large-scale text and images of large-scale text have a contrast ratio of at least 3:1;
• Incidental: Text or images of text that are part of an inactive user interface component, that are pure decoration, that are not visible to anyone, or that are part of a picture that contains significant other visual content, have no contrast requirement.
• Logotypes: Text that is part of a logo or brand name has no minimum contrast requirement.
AA
• CKEditor is able to use the High Contrast mode of the operating system. It is optimized to use Windows High Contrast mode.
• The editor can be styled with user stylesheets. The users can thus provide their own high contrast stylesheets.
1.4.4 Resize text: Except for captions and images of text, text can be resized without assistive technology up to 200 percent without loss of content or functionality. AA CKEditor is designed in a way that enables the use of user agent zoom feature.
1.4.5 Images of Text: If the technologies being used can achieve the visual presentation, text is used to convey information rather than images of text except for the following:
• Customizable: The image of text can be visually customized to the user's requirements;
• Essential: A particular presentation of text is essential to the information being conveyed.
AA
• All editor UI elements are based on textual elements that are presented as icons using CSS.
• CKEditor is designed to use the High Contrast mode of the operating system and is optimized to use with Windows High Contrast mode. If the editor is used in this mode, all buttons are presented as textual.
• CKEditor can be styled with user stylesheets.

## # Principle 2: Operable

User interface components and navigation must be operable. See reference.

Guideline Level Description of Support Used Techniques
2.1 Keyboard Accessible: Make all functionality available from a keyboard.
2.1.1 Keyboard: All functionality of the content is operable through a keyboard interface without requiring specific timings for individual keystrokes, except where the underlying function requires input that depends on the path of the user's movement and not just the endpoints. A
• All CKEditor features can be reached with keyboard.
• Keyboard shortcuts are available for the most frequently used features.
2.1.2 No Keyboard Trap: If keyboard focus can be moved to a component of the page using a keyboard interface, then focus can be moved away from that component using only a keyboard interface, and, if it requires more than unmodified arrow or tab keys or other standard exit methods, the user is advised of the method for moving focus away. A
• The focus is trapped inside modal dialogs to prevent users from interacting with currently non-active parts of the web page. The focus is restored when the dialog is closed by clicking an appropriate button or pressing Esc.
• The focus is trapped inside the editor toolbar after pressing Alt+F10. The focus is restored into the editor after pressing Esc.
• Information about how to restore focus after certain actions is described in the editor "Accessibility Instructions" dialog available after pressing Alt+0.
2.2 Enough Time: Provide users enough time to read and use content.
2.2.1 Timing Adjustable: For each time limit that is set by the content, at least one of the following is true:
• Turn off: The user is allowed to turn off the time limit before encountering it; or
• Adjust: The user is allowed to adjust the time limit before encountering it over a wide range that is at least ten times the length of the default setting; or
• Extend: The user is warned before time expires and given at least 20 seconds to extend the time limit with a simple action (for example, "press the space bar"), and the user is allowed to extend the time limit at least ten times; or
• Real-time Exception: The time limit is a required part of a real-time event (for example, an auction), and no alternative to the time limit is possible; or
• Essential Exception: The time limit is essential and extending it would invalidate the activity; or
• 20 Hour Exception: The time limit is longer than 20 hours.
A N/A. There are no timeouts in CKEditor UI elements. The only time-affected elements of the editor UI are notifications of action statuses which do not require any user input.
2.2.2 Pause, Stop, Hide: For moving, blinking, scrolling, or auto-updating information, all of the following are true:
• Moving, blinking, scrolling: For any moving, blinking or scrolling information that (1) starts automatically, (2) lasts more than five seconds, and (3) is presented in parallel with other content, there is a mechanism for the user to pause, stop, or hide it unless the movement, blinking, or scrolling is part of an activity where it is essential; and
• Auto-updating: For any auto-updating information that (1) starts automatically and (2) is presented in parallel with other content, there is a mechanism for the user to pause, stop, or hide it or to control the frequency of the update unless the auto-updating is part of an activity where it is essential.
A N/A. There is no blinking or flickering content in CKEditor. Moveable UI elements such as dialogs can only be moved in a smooth fashion by the user.
2.3 Seizures: Do not design content in a way that is known to cause seizures.
2.3.1 Three Flashes or Below Threshold: Web pages do not contain anything that flashes more than three times in any one second period, or the flash is below the general flash and red flash thresholds. A There is no blinking or flickering content in CKEditor. Moveable UI elements such as dialogs can only be moved in a smooth fashion by the user.
2.4 Navigable: Provide ways to help users navigate, find content, and determine where they are.
2.4.1 Bypass Blocks: A mechanism is available to bypass blocks of content that are repeated on multiple Web pages. A
• Pressing Tab and Shift+Tab to change focus to the editor from the outside will put the focus directly into the editing area, instead of into other focusable elements of the editor (e.g. toolbar buttons).
• The editor toolbar is accessible by pressing Alt+F10 and it is divided into groups that can be navigated via tabbing. The navigation inside the groups is possible with Arrow keys.
• Keyboard shortcuts are available for the most frequently used features.
• The editor is marked as an application using WAI-ARIA landmarks.
• Features that contain multiple options are expressed as collapsible lists or buttons that open modal dialogs.
2.4.2 Page Titled: Web pages have titles that describe topic or purpose. A
• If CKEditor uses an <iframe> element as its editing area, this element is given a proper title via the title attribute that contains the editor name.
• If the editor is used in inline mode, this guideline is non-applicable as the editor is an integral part of a web page.
2.4.3 Focus Order: If a Web page can be navigated sequentially and the navigation sequences affect meaning or operation, focusable components receive focus in an order that preserves meaning and operability. A
• Pressing Tab and Shift+Tab to change focus to the editor from the outside will put the focus directly into the editing area, instead of into other focusable elements of the editor (e.g. toolbar buttons).
• The editor toolbar is accessible by pressing Alt+F10 and it is divided into groups that can be navigated via tabbing. The navigation inside the groups is possible with Arrow keys.
• Keyboard shortcuts are available for the most frequently used features.
• If a modal dialog is open, the focus is moved inside it and trapped until the dialog is closed. The tabbing order inside a dialog is consistent with the visual order.
2.4.4 Link Purpose (In Context): The purpose of each link can be determined from the link text alone or from the link text together with its programmatically determined link context, except where the purpose of the link would be ambiguous to users in general. A All links inside CKEditor contain text that describes their purpose.
2.4.5 Multiple Ways: More than one way is available to locate a Web page within a set of Web pages except where the Web Page is the result of, or a step in, a process. AA N/A. Editor is not a web page, but a component that is located inside a web page.
2.4.6 Headings and Labels: Headings and labels describe topic or purpose. AA
• The editor is connected with a textual label that contains its name.
• All UI elements are connected with textual labels that describe their purpose.
2.4.7 Focus Visible: Any keyboard operable user interface has a mode of operation where the keyboard focus indicator is visible. AA The currently focused element in the editor toolbar has a changed presentation, e.g. a visibly different background color.

## # Principle 3: Understandable

Information and the operation of user interface must be understandable. See reference.

Guideline Level Description of Support Used Techniques
3.1.1 Language of Page: The default human language of each Web page can be programmatically determined. A
• If CKEditor uses an <iframe> element as its editing area, that element is given an appropiate lang attribute.
• If the editor is used in inline mode, it uses the language specified for that web page.
3.1.2 Language of Parts: The human language of each passage or phrase in the content can be programmatically determined except for proper names, technical terms, words of indeterminate language, and words or phrases that have become part of the vernacular of the immediately surrounding text. AA The Language plugin allows the editor user to properly mark parts of text as fragments in a particular language using the lang attribute.
3.2 Predictable: Make Web pages appear and operate in predictable ways.
3.2.1 On Focus: When any component receives focus, it does not initiate a change of context. A All changes must be confirmed by the user by pressing an appropriate button in a dialog or the toolbar. No changes occur just by focusing a UI element.
3.2.2 On Input: Changing the setting of any user interface component does not automatically cause a change of context unless the user has been advised of the behavior before using the component. A No changes of context are caused by just inputting into a form field. All changes must be confirmed by the user by pressing an appropriate button in a dialog or the toolbar.
3.2.3 Consistent Navigation: Navigational mechanisms that are repeated on multiple Web pages within a set of Web pages occur in the same relative order each time they are repeated, unless a change is initiated by the user. AA The position and order of the editor toolbar is the same between navigations to the web page containing the editor.
3.2.4 Consistent Identification: Components that have the same functionality within a set of Web pages are identified consistently. AA
• All editor features that work in a similar manner are described in the same way.
• Icons and textual labels are unique for each editor feature.
• Icon meanings are consistent with commonly used icon meanings throughout software industry.
3.3 Input Assistance: Help users avoid and correct mistakes.
3.3.1 Error Identification: If an input error is automatically detected, the item that is in error is identified and the error is described to the user in text. A
• All form fields inside CKEditor that are required are properly marked as such using the aria-required attribute.
• If an error occurs due to user input, form fields are marked as invalid using the aria-invalid attribute and the JavaScript alert() function is used to display information about the error to the user.
• Errors are automatically detected on form submission and the focus is moved inside the first invalid field.
3.3.2 Labels or Instructions: Labels or instructions are provided when content requires user input. A
• All form controls have descriptive labels that are associated with them using the <label> elements and/or WAI-ARIA bindings.
• Related form controls are grouped using the <fieldset> element and are given a descriptive name using the <legend> element.
3.3.3 Error Suggestion: If an input error is automatically detected and suggestions for correction are known, then the suggestions are provided to the user, unless it would jeopardize the security or purpose of the content. AA
• If an error occurs due to user input, form fields are marked as invalid using the aria-invalid attribute and the JavaScript alert() function is used to display information about the error to the user.
• Information about the required input format is provided via the JavaScript alert() function.
• Errors are automatically detected on form submission and the focus is moved inside the first invalid field.
3.3.4 Error Prevention (Legal, Financial, Data): For Web pages that cause legal commitments or financial transactions for the user to occur, that modify or delete user-controllable data in data storage systems, or that submit user test responses, at least one of the following is true:
• Reversible: Submissions are reversible.
• Checked: Data entered by the user is checked for input errors and the user is provided an opportunity to correct them.
• Confirmed: A mechanism is available for reviewing, confirming, and correcting information before finalizing the submission.
AA
• Note that CKEditor as a component that is designed to be embedded inside web pages must comply with such requirements as it could be embedded inside a web page that causes legal commitments or financial transactions, modifies or deletes data, or submits user test responses.
• CKEditor has a built-in undo and redo manager which ensures that all changes are reversible.
• If an error occurs due to user input, form fields are marked as invalid using the aria-invalid attribute and the JavaScript alert() function is used to display information about the error to the user.
• All changes must be confirmed by the user by pressing an appropiate button in a dialog or the toolbar.

## # Principle 4: Robust

Content must be robust enough that it can be interpreted reliably by a wide variety of user agents, including assistive technologies. See reference.

Guideline Level Description of Support Used Techniques
4.1 Compatible: Maximize compatibility with current and future user agents, including assistive technologies.
4.1.1 Parsing: In content implemented using markup languages, elements have complete start and end tags, elements are nested according to their specifications, elements do not contain duplicate attributes, and any IDs are unique, except where the specifications allow these features. A
• CKEditor markup is syntactically valid HTML.
• There are no duplicate attributes inside the editor markup and all IDs are unique.
4.1.2 Name, Role, Value: For all user interface components (including but not limited to: form elements, links and components generated by scripts), the name and role can be programmatically determined; states, properties, and values that can be set by the user can be programmatically set; and notification of changes to these items is available to user agents, including assistive technologies. A
• The <iframe> element used as the WYSYWIG editing area has a proper title attribute.
• Form controls are created using standard HTML elements and are provided with a textual label using proper HTML elements.
• All UI elements that cannot be expressed using standard HTML elements are provided with textual labels via WAI-ARIA bindings.
• All UI elements that have a changeable state expose their current state to Assistive Technology via standard HTML attributes. If the state cannot be expressed that way, WAI-ARIA bindings are used.