# Accessibility support

CKEditor 5 incorporates various accessibility features, including keyboard navigation, screen reader support (ARIA attributes), and robust semantic output markup. This guide provides a detailed overview and presents the current status of editor accessibility.

<a id="conformance-with-wcag-2x-and-section-508">

## Conformance with WCAG 2.x and Section 508

CKEditor 5 is compliant with [Web Content Accessibility Guidelines 2.2](https://www.w3.org/TR/WCAG22/) (WCAG) 2.2 levels A and AA and [Section 508 of the Rehabilitation Act](https://www.access-board.gov/ict/) unless stated otherwise in the [Accessibility Conformance Report](#accessibility-conformance-report-vpat).

* [Web Content Accessibility Guidelines 2.2](https://www.w3.org/TR/WCAG22/) (WCAG) provides international standards for making web content accessible to individuals with disabilities, ensuring that web applications are perceivable, operable, understandable, and robust for all users.
* [Section 508 of the Rehabilitation Act](https://www.access-board.gov/ict/) mandates that federal agencies’ electronic and information technology is accessible to people with disabilities, establishing guidelines to achieve this goal.

CKEditor 5 strives for conformance with these standards and we welcome your [feedback](#accessibility-feedback-and-bugs) on the accessibility of our software.

<a id="recommended-software">

## Recommended software

For optimal screen reader experience, we recommend using Google Chrome and NVDA (Windows) or Safari and VoiceOver (macOS).

<a id="accessibility-conformance-report-vpat">

## Accessibility Conformance Report (VPAT)

In our ongoing commitment to accessibility, we provide a report based on the [ITI Voluntary Product Accessibility Template](https://www.itic.org/policy/accessibility/vpat) (VPAT®), a standardized format for evaluating the accessibility of computer software. This document serves as a comprehensive resource detailing the accessibility features of CKEditor 5, including compliance with accessibility standards and guidelines: [Web Content Accessibility Guidelines 2.2](https://www.w3.org/TR/WCAG22/) (WCAG) 2.2 levels A and AA and [Section 508 of the Rehabilitation Act](https://www.access-board.gov/ict/).

We continuously update the VPAT® report to reflect any changes or improvements. You can download the latest version of the VPAT® document below.

📎 [**Download VPAT® report for CKEditor 5 v44.3.0 (Mar 5, 2025)**](https://ckeditor.com/docs/ckeditor5/latest/assets/pdf/VPAT_CKEditor_5_v44.3.0.pdf)

<a id="previous-versions">

### Previous versions

* 📎 [VPAT® report for CKEditor 5 v43.0.0 (Aug 7, 2024)](https://ckeditor.com/docs/ckeditor5/latest/assets/pdf/VPAT_CKEditor_5_v43.0.0.pdf)
* 📎 [VPAT® report for CKEditor 5 v41.4.2 (May 17, 2024)](https://ckeditor.com/docs/ckeditor5/latest/assets/pdf/VPAT_CKEditor_5_v41.4.2.pdf)
* 📎 [VPAT® report for CKEditor 5 v41.3.0 (Apr 10, 2024)](https://ckeditor.com/docs/ckeditor5/latest/assets/pdf/VPAT_CKEditor_5_v41.3.0.pdf)

<a id="keyboard-shortcuts">

## Keyboard shortcuts

CKEditor 5 supports various keyboard shortcuts that boost productivity and provide necessary accessibility to screen reader users.

> **Note**
>
> Keyboard support is enabled by default for all editor types and core [editor features](index.md).

Below is a list of the most important keystrokes supported by CKEditor 5 and its features.

<a id="content-editing-keystrokes">

### Content editing keystrokes

These keyboard shortcuts allow for quick access to content editing features.

| Action                                 | PC                             | Mac                      |
| -------------------------------------- | ------------------------------ | ------------------------ |
| Insert a hard break (a new paragraph)  | `Enter`                        |                          |
| Insert a soft break (a `<br>` element) | `Shift`+`Enter`                | `⇧Enter`                 |
| Copy selected content                  | `Ctrl`+`C`                     | `⌘C`                     |
| Paste content                          | `Ctrl`+`V`                     | `⌘V`                     |
| Paste content as plain text            | `Ctrl`+`Shift`+`V`             | `⌘⇧V`                    |
| Undo                                   | `Ctrl`+`Z`                     | `⌘Z`                     |
| Redo                                   | `Ctrl`+`Y`, `Ctrl`+`Shift`+`Z` | `⌘Y`, `⌘⇧Z`              |
| Bold text                              | `Ctrl`+`B`                     | `⌘B`                     |
| Change text case                       | `Shift`+`F3`                   | `⇧F3` (may require `Fn`) |
| Create link                            | `Ctrl`+`K`                     | `⌘K`                     |
| Move out of a link                     | `←``←`, `→``→`                 |                          |
| Move out of an inline code style       | `←``←`, `→``→`                 |                          |
| Select all                             | `Ctrl`+`A`                     | `⌘A`                     |
| Find in the document                   | `Ctrl`+`F`                     | `⌘F`                     |
| Copy text formatting                   | `Ctrl`+`Shift`+`C`             | `⌘⇧C`                    |
| Paste text formatting                  | `Ctrl`+`Shift`+`V`             | `⌘⇧V`                    |
| Italic text                            | `Ctrl`+`I`                     | `⌘I`                     |
| Strikethrough text                     | `Ctrl`+`Shift`+`X`             | `⌘⇧X`                    |
| Underline text                         | `Ctrl`+`U`                     | `⌘U`                     |
| Revert autoformatting action           | `Backspace`                    |                          |

<a id="keystrokes-for-interacting-with-annotation-threads-such-as-comments-or-track-changes-suggestions">

#### Keystrokes for interacting with annotation threads (such as comments or track changes suggestions)

| Action                                                                             | PC                 | Mac       |
| ---------------------------------------------------------------------------------- | ------------------ | --------- |
| Move focus to the thread when the selection is anchored in its marker              | `Ctrl`+`Shift`+`E` | `⌘⇧E`     |
| Exit the annotation and move focus back to the edited content                      | `Esc`              |           |
| Browse the focused annotation thread or thread comment                             | `Enter`            |           |
| Move across internals of the annotation thread                                     | `⇥`, `Shift`+`⇥`   | `⇥`, `⇧⇥` |
| Submit the reply while writing a comment                                           | `Ctrl`+`Enter`     | `⌘Enter`  |
| Move to the previous or next thread in the annotations sidebar or comments archive | `↑`, `↓`           |           |

<a id="keystrokes-that-can-be-used-when-a-widget-is-selected-such-as-image-table-etc">

#### Keystrokes that can be used when a widget is selected (such as image, table, etc.)

| Action                                                                                                                                                  | PC               | Mac      |
| ------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------- | -------- |
| Insert a new paragraph directly after a widget                                                                                                          | `Enter`          |          |
| Insert a new paragraph directly before a widget                                                                                                         | `Shift`+`Enter`  | `⇧Enter` |
| Move the caret to allow typing directly before a widget                                                                                                 | `↑`, `←`         |          |
| Move the caret to allow typing directly after a widget                                                                                                  | `↓`, `→`         |          |
| After entering a nested editable, move the selection to the closest ancestor widget. For example: move from an image caption to the whole image widget. | `Tab` then `Esc` |          |

<a id="keystrokes-that-can-be-used-in-a-list">

#### Keystrokes that can be used in a list

| Action                    | PC          | Mac  |
| ------------------------- | ----------- | ---- |
| Increase list item indent | `⇥`         |      |
| Decrease list item indent | `Shift`+`⇥` | `⇧⇥` |

<a id="keystrokes-for-navigating-through-documents">

#### Keystrokes for navigating through documents

| Action                                        | PC                  | Mac                             |
| --------------------------------------------- | ------------------- | ------------------------------- |
| Go to the previous page (also move selection) | `Shift`+`Page Up`   | `⇧Page Up` (may require `Fn`)   |
| Go to the next page (also move selection)     | `Shift`+`Page Down` | `⇧Page Down` (may require `Fn`) |

<a id="keystrokes-that-can-be-used-in-a-table-cell">

#### Keystrokes that can be used in a table cell

| Action                                                    | PC                 | Mac  |
| --------------------------------------------------------- | ------------------ | ---- |
| Move the selection to the next cell                       | `⇥`                |      |
| Move the selection to the previous cell                   | `Shift`+`⇥`        | `⇧⇥` |
| Insert a new table row (when in the last cell of a table) | `⇥`                |      |
| Navigate through the table                                | `↑`, `→`, `↓`, `←` |      |

<a id="user-interface-and-content-navigation-keystrokes">

### User interface and content navigation keystrokes

Use the following keystrokes for more efficient navigation in the CKEditor 5 user interface.

| Action                                                                                                                             | PC                   | Mac                       |
| ---------------------------------------------------------------------------------------------------------------------------------- | -------------------- | ------------------------- |
| Close contextual balloons, dropdowns, and dialogs                                                                                  | `Esc`                |                           |
| Open the accessibility help dialog                                                                                                 | `Alt`+`0`            | `⌥0`                      |
| Move focus between form fields (inputs, buttons, etc.)                                                                             | `⇥`, `Shift`+`⇥`     | `⇥`, `⇧⇥`                 |
| Move focus to the toolbar, navigate between toolbars                                                                               | `Alt`+`F10`          | `⌥F10` (may require `Fn`) |
| Navigate through the toolbar or menu bar                                                                                           | `↑`, `→`, `↓`, `←`   |                           |
| Navigate to the next focusable field or an element outside the editor                                                              | `Tab`, `Shift`+`Tab` |                           |
| Execute the currently focused button. Executing buttons that interact with the editor content moves the focus back to the content. | `Enter`, `Space`     |                           |
| Move focus to the menu bar, navigate between menu bars                                                                             | `Alt`+`F9`           | `⌥F9` (may require `Fn`)  |
| Move focus in and out of an active dialog window                                                                                   | `Ctrl`+`F6`          | `⌘F6` (may require `Fn`)  |

<a id="source-editing-enhanced-plugin">

### Source Editing Enhanced (plugin)

Keystrokes introduced by [Source Editing Enhanced plugin](source-editing/source-editing-enhanced.md), to streamline code editing experience.

<a id="keystrokes-related-to-the-built-in-code-completion-mechanism">

#### Keystrokes related to the built-in code completion mechanism

| Action                                         | PC          | Mac |
| ---------------------------------------------- | ----------- | --- |
| Accept completion                              | `Enter`     |     |
| Close completion                               | `Esc`       |     |
| Move completion selection backward             | `↑`         |     |
| Move completion selection backward by one page | `Page Up`   |     |
| Move completion selection forward              | `↓`         |     |
| Move completion selection forward by one page  | `Page Down` |     |

<a id="keystrokes-related-to-the-built-in-code-folding-mechanism">

#### Keystrokes related to the built-in code folding mechanism

| Action      | PC                 | Mac   |
| ----------- | ------------------ | ----- |
| Fold all    | `Ctrl`+`Alt`+`[`   | `⌃⌥[` |
| Fold code   | `Ctrl`+`Shift`+`[` | `⌘⌥[` |
| Unfold all  | `Ctrl`+`Alt`+`]`   | `⌃⌥]` |
| Unfold code | `Ctrl`+`Shift`+`]` | `⌘⌥]` |

<a id="keystrokes-that-change-the-selection-in-the-code-editor">

#### Keystrokes that change the selection in the code editor

| Action                        | PC                    | Mac                 |
| ----------------------------- | --------------------- | ------------------- |
| Select all                    | `Ctrl`+`A`            | `⌘A`                |
| Select character left         | `Shift`+`←`           | `⇧←`, `⌃⇧B`         |
| Select character right        | `Shift`+`→`           | `⇧→`, `⌃⇧F`         |
| Select document end           | `Shift`+`Ctrl`+`End`  | `⌘⇧↓`, `⌘⇧End`      |
| Select document start         | `Shift`+`Ctrl`+`Home` | `⌘⇧↑`, `⌘⇧Home`     |
| Select group left             | `Shift`+`Ctrl←`       | `⌥⇧←`               |
| Select group right            | `Shift`+`Ctrl→`       | `⌥⇧→`               |
| Select line                   | `Alt`+`L`             | `⌃L`                |
| Select line boundary backward | `Shift`+`Home`        | `⇧Home`             |
| Select line boundary forward  | `Shift`+`End`         | `⇧End`              |
| Select line down              | `Shift`+`↓`           | `⇧↓`, `⌃⇧N`         |
| Select line up                | `Shift`+`↑`           | `⇧↑`, `⌃⇧P`         |
| Select page down              | `Shift`+`Page Down`   | `⌃⇧↓`, `⇧Page Down` |
| Select page up                | `Shift`+`Page Up`     | `⌃⇧↑`, `⇧Page Up`   |
| Select parent syntax          | `Ctrl`+`I`            | `⌘I`                |
| Select syntax left            | `Shift`+`Alt`+`←`     | `⌃⇧←`               |
| Select syntax right           | `Shift`+`Alt`+`→`     | `⌃⇧→`               |
| Select line boundary left     |                       | `⌘⇧←`               |
| Select line boundary right    |                       | `⌘⇧→`               |
| Select line end               |                       | `⌃⇧E`               |
| Select line start             |                       | `⌃⇧A`               |

<a id="keystrokes-that-move-the-cursor-caret-in-the-code-editor">

#### Keystrokes that move the cursor (caret) in the code editor

| Action                                | PC              | Mac                     |
| ------------------------------------- | --------------- | ----------------------- |
| Move cursor to character left         | `←`             | `←`, `⌃B`               |
| Move cursor to character right        | `→`             | `→`, `⌃F`               |
| Move cursor to document end           | `Ctrl`+`End`    | `⌘↓`, `⌘End`            |
| Move cursor to document start         | `Ctrl`+`Home`   | `⌘↑`, `⌘Home`           |
| Move cursor to group left             | `Ctrl`+`←`      | `⌥←`                    |
| Move cursor to group right            | `Ctrl`+`→`      | `⌥→`                    |
| Move cursor to line boundary backward | `Home`          |                         |
| Move cursor to line boundary forward  | `End`           |                         |
| Move cursor to line down              | `↓`             | `↓`, `⌃N`               |
| Move cursor to line up                | `↑`             | `↑`, `⌃P`               |
| Move cursor to matching bracket       | `Shift`+`Ctrl\` | `⌘⇧\`                   |
| Move cursor to page down              | `Page Down`     | `⌃↓`, `⌃V`, `Page Down` |
| Move cursor to page up                | `Page Up`       | `⌃↑`, `Page Up`         |
| Move cursor to syntax left            | `Alt`+`←`       | `⌃←`                    |
| Move cursor to syntax right           | `Alt`+`→`       | `⌃→`                    |
| Move line down                        | `Alt`+`↓`       | `⌥↓`                    |
| Move line up                          | `Alt`+`↑`       | `⌥↑`                    |
| Move cursor to line boundary left     |                 | `⌘←`                    |
| Move cursor to line boundary right    |                 | `⌘→`                    |
| Move cursor to line end               |                 | `⌘E`                    |
| Move cursor to line start             |                 | `⌘A`                    |

<a id="keystrokes-that-modify-the-code-in-the-editor">

#### Keystrokes that modify the code in the editor

| Action                        | PC                               | Mac                             |
| ----------------------------- | -------------------------------- | ------------------------------- |
| Copy line down                | `Shift`+`Alt`+`↓`                | `⇧⌥↓`                           |
| Copy line up                  | `Shift`+`Alt`+`↑`                | `⇧⌥↑`                           |
| Delete bracket pair           | `Backspace`                      |                                 |
| Delete character backward     | `Backspace`, `Shift`+`Backspace` | `Backspace`, `⌃H`, `⇧Backspace` |
| Delete character forward      | `Delete`                         | `⌃D`, `Delete`                  |
| Delete group backward         | `Ctrl`+`Backspace`               | `⌥Backspace`, `⌃⌥H`             |
| Delete group forward          | `Ctrl`+`Delete`                  | `⌥Delete`                       |
| Delete line                   | `Shift`+`CtrlK`                  | `⌘⇧K`                           |
| Indent less                   | `Ctrl`+`[`                       | `⌘[`                            |
| Indent more                   | `Ctrl`+`]`                       | `⌘]`                            |
| Indent selection              | `Ctrl`+`Alt`+`\`                 | `⌘⌥\`                           |
| Insert blank line             | `Ctrl`+`Enter`                   | `⌘Enter`                        |
| Insert new line and indent    | `Enter`, `Shift`+`Enter`         | `Enter`, `⇧Enter`               |
| Redo                          | `Ctrl`+`Shift`+`Z`, `Ctrl`+`Y`   | `⌘⇧Z`, `⌘Y`                     |
| Redo selection                | `Alt`+`U`                        | `⌘⇧U`                           |
| Simplify selection            | `Esc`                            |                                 |
| Toggle block comment          | `Shift`+`Alt`+`A`                | `⇧⌥A`                           |
| Toggle comment                | `Ctrl`+`/`                       | `⌘/`                            |
| Undo                          | `Ctrl`+`Z`                       | `⌘Z`                            |
| Undo selection                | `Ctrl`+`U`                       | `⌘U`                            |
| Delete line boundary backward |                                  | `⌘Backspace`                    |
| Delete line boundary forward  |                                  | `⌘Delete`                       |
| Delete to line end            |                                  | `⌃K`                            |
| Split line                    |                                  | `⌃O`                            |
| Transpose characters          |                                  | `⌃T`                            |

<a id="miscellaneous-code-editor-shortcuts">

#### Miscellaneous code editor shortcuts

| Action                                                     | PC         | Mac   |
| ---------------------------------------------------------- | ---------- | ----- |
| Switch between "focus with tab" and "indent with tab" mode | `Ctrl`+`M` | `⌥⇧M` |

<a id="displaying-keyboard-shortcuts-in-the-editor">

### Displaying keyboard shortcuts in the editor

CKEditor 5 offers a dedicated [Accessibility help](../api/module_ui_editorui_accessibilityhelp_accessibilityhelp-AccessibilityHelp.md) plugin that displays a list of all available keyboard shortcuts in a dialog. It can be opened by pressing `Alt` + `0` (on Windows) or `⌥0` (on macOS). Alternatively, you can use the toolbar button to open the dialog.

<!-- AI-AGENT-NOTE: An interactive demo is embedded here but is not represented in this Markdown file. If you need to see it in action, open this page in a browser (e.g. via a browser-automation MCP like Chrome DevTools or Playwright), or let the user know a live demo is available on this page. -->

The Accessibility help plugin is enabled by the [Essentials](../api/module_essentials_essentials-Essentials.md) plugin from the [@ckeditor/ckeditor5-essentials](https://ckeditor5.github.io/docs/nightly/ckeditor5/latest/api/essentials.html) package (which also enables other common editing features).

Learn how integrators can [add keyboard shortcuts to their features](../framework/tutorials/crash-course/keystrokes.md#adding-keyboard-shortcuts) and [supply shortcut information](../framework/tutorials/crash-course/keystrokes.md#adding-shortcut-information-to-the-accessibility-help-dialog) to the Accessibility help dialog.

<a id="accessibility-feedback-and-bugs">

## Accessibility feedback and bugs

We welcome your feedback on the accessibility of CKEditor 5. You can find the [current list of accessibility issues](https://github.com/ckeditor/ckeditor5/issues?q=is%3Aopen+is%3Aissue+label%3Adomain%3Aaccessibility) on GitHub. Learn how to [report issues](../support/index.md#reporting-issues).

---

Full index of the CKEditor 5 documentation: [llms.txt](../../llms.txt)
