Plugins in CKEditor 5
Features in CKEditor are introduced by plugins. In fact, without plugins, CKEditor 5 is an empty API with no use. Plugins provided by the CKEditor core team are available in npm (and GitHub, too) in the form of npm packages. A package may contain one or more plugins (for example, the @ckeditor/ckeditor5-image
package contains several granular plugins).
Starting with CKEditor 5 v42.0.0, we collect all plugins in two aggregate packages: ckeditor5
and ckeditor5-premium-features
. Using those two is the recommended way of setup. This way you get easy access to all the plugins, without the need to look which plugin is in which package.
# Common use cases
Plugins can be pretty much anything. They are pieces of code initialized by the editor if they are configured to be loaded. They can use the richness of the CKEditor 5 Framework API to enhance the editor or to better integrate it with your application.
Common use cases for plugins are:
- Editing features, like bold, heading, linking, or any other feature that the user can use to manipulate the content.
- Adding semantic value to the content, like annotations or accessibility features.
- Third-party services integration, for injecting external resources into the content, like videos or social network posts.
- Handling image upload and image manipulation features.
- Providing widgets for easy integration with application structured data.
- Injecting analysis tools that help enhance the quality of the content.
- And other infinite possibilities.
# Creating plugins
Creating your own plugins is a straightforward task, but it requires good knowledge about some aspects of the CKEditor 5 development environment. The following resources are recommended as a starting point:
- The Plugin development guide.
- The Using package generator, that provides a plugin development environment.
A good understanding of the CKEditor 5 Framework is also welcome when it comes to creating plugins.
# Using third-party plugins
A great way to enhance your editor with additional features is by using plugins created by the community. Such plugins are available as npm packages, so a quick search on the “ckeditor5” keyword in npm should work as a starting point.
Once you have plugins you want to include, learn how to install them.
# Plugins and HTML output
Listed below are all official CKEditor 5 packages as well as some partner packages together with their possible HTML output. If a plugin generates a different HTML output depending on its configuration, it is described in the “HTML output” column.
The classes, styles or attributes applied to an HTML element are all possible results. It does not mean they all will always be used.
$block
is a generic structural element that may contain textual content. Features like headings or paragraph implement it to inherit common behaviors. You can read more about it in the Schema guide.
If a given plugin does not generate any output, the “HTML output” is described as “None.” Wildcard character *
means any value is possible.
The data used to generate the following tables comes from the package metadata. You can read more about it in the package metadata guide.
ckeditor5-adapter-ckfinder
Source file: @ckeditor/ckeditor5-adapter-ckfinder/ckeditor5-metadata.json
Plugin | HTML output |
---|---|
CKFinder upload adapter | None. |
ckeditor5-ai
Source file: @ckeditor/ckeditor5-ai/ckeditor5-metadata.json
Plugin | HTML output |
---|---|
AI Assistant | None. |
ckeditor5-alignment
Source file: @ckeditor/ckeditor5-alignment/ckeditor5-metadata.json
Plugin | HTML output |
---|---|
Alignment | <$block style="text-align:*"> By default, the alignment feature uses the |
<$block class="*"> If |
ckeditor5-autoformat
Source file: @ckeditor/ckeditor5-autoformat/ckeditor5-metadata.json
Plugin | HTML output |
---|---|
Autoformat | None. |
ckeditor5-autosave
Source file: @ckeditor/ckeditor5-autosave/ckeditor5-metadata.json
Plugin | HTML output |
---|---|
Autosave | None. |
ckeditor5-basic-styles
Source file: @ckeditor/ckeditor5-basic-styles/ckeditor5-metadata.json
Plugin | HTML output |
---|---|
Bold | <strong> |
Code | <code> |
Italic | <i> |
Strikethrough | <s> |
Subscript | <sub> |
Superscript | <sup> |
Underline | <u> |
ckeditor5-block-quote
Source file: @ckeditor/ckeditor5-block-quote/ckeditor5-metadata.json
Plugin | HTML output |
---|---|
Block quote | <blockquote> |
ckeditor5-bookmark
Source file: @ckeditor/ckeditor5-bookmark/ckeditor5-metadata.json
Plugin | HTML output |
---|---|
Bookmark | <a id="*"> |
ckeditor5-case-change
Source file: @ckeditor/ckeditor5-case-change/ckeditor5-metadata.json
Plugin | HTML output |
---|---|
Case change | None. |
ckeditor5-ckbox
Source file: @ckeditor/ckeditor5-ckbox/ckeditor5-metadata.json
Plugin | HTML output |
---|---|
CKBox | <a data-ckbox-resource-id="*"> <figure data-ckbox-resource-id="*"> <img data-ckbox-resource-id="*"> If |
CKBox Image Edit | None. |
ckeditor5-ckfinder
Source file: @ckeditor/ckeditor5-ckfinder/ckeditor5-metadata.json
Plugin | HTML output |
---|---|
CKFinder | None. |
ckeditor5-cloud-services
Source file: @ckeditor/ckeditor5-cloud-services/ckeditor5-metadata.json
Plugin | HTML output |
---|---|
Cloud Services | None. |
ckeditor5-code-block
Source file: @ckeditor/ckeditor5-code-block/ckeditor5-metadata.json
Plugin | HTML output |
---|---|
Code blocks | <pre> |
<code class="language-*"> By default, the language of the code block is represented as a CSS class prefixed by | |
<code class="*"> The CSS class name can be customized via the |
ckeditor5-comments
Source file: @ckeditor/ckeditor5-comments/ckeditor5-metadata.json
Plugin | HTML output |
---|---|
Comments | <comment |
<comment-end name="*"> <comment-start name="*"> | |
<* The plugin adds the |
ckeditor5-document-outline
Source file: @ckeditor/ckeditor5-document-outline/ckeditor5-metadata.json
Plugin | HTML output |
---|---|
Document outline | None. |
Table of contents | <div class="table-of-contents table-of-contents_empty"> |
<ol> <li> <a> | |
<p class="table-of-contents__placeholder"> |
ckeditor5-easy-image
Source file: @ckeditor/ckeditor5-easy-image/ckeditor5-metadata.json
Plugin | HTML output |
---|---|
Easy Image | None. |
ckeditor5-essentials
Source file: @ckeditor/ckeditor5-essentials/ckeditor5-metadata.json
Plugin | HTML output |
---|---|
Essentials | <br> |
ckeditor5-export-pdf
Source file: @ckeditor/ckeditor5-export-pdf/ckeditor5-metadata.json
Plugin | HTML output |
---|---|
Export to PDF | None. |
ckeditor5-export-word
Source file: @ckeditor/ckeditor5-export-word/ckeditor5-metadata.json
Plugin | HTML output |
---|---|
Export to Word | None. |
ckeditor5-find-and-replace
Source file: @ckeditor/ckeditor5-find-and-replace/ckeditor5-metadata.json
Plugin | HTML output |
---|---|
Find and replace | None. |
ckeditor5-font
Source file: @ckeditor/ckeditor5-font/ckeditor5-metadata.json
Plugin | HTML output |
---|---|
Font background color | <span style="background-color:*"> |
Font color | <span style="color:*"> |
Font size | <span class="text-tiny text-small text-big text-huge"> If the |
<span style="font-size:*"> If the | |
<* The plugin can be configured to return any element with any classes and any inline styles. | |
Font family | <span style="font-family:*"> By default, the font family feature uses the |
<* The plugin can be configured to return any element with any classes and any inline styles. |
ckeditor5-format-painter
Source file: @ckeditor/ckeditor5-format-painter/ckeditor5-metadata.json
Plugin | HTML output |
---|---|
Format painter | None. |
ckeditor5-heading
Source file: @ckeditor/ckeditor5-heading/ckeditor5-metadata.json
Plugin | HTML output |
---|---|
Title | <h1> |
Heading | <h2> <h3> <h4> HTML element may contain classes, styles or attributes, that are created by other plugins, which alter the This element inherits all attributes, classes and styles that are allowed on the |
<*> The plugin can be configured to return any element name as a heading. |
ckeditor5-highlight
Source file: @ckeditor/ckeditor5-highlight/ckeditor5-metadata.json
Plugin | HTML output |
---|---|
Highlight | <mark class="marker-yellow marker-green marker-pink marker-blue pen-red pen-green"> By default, this plugin has 4 markers and 2 pens preconfigured. |
<mark class="*"> The plugin can be configured to set any classes on the |
ckeditor5-horizontal-line
Source file: @ckeditor/ckeditor5-horizontal-line/ckeditor5-metadata.json
Plugin | HTML output |
---|---|
Horizontal line | <hr> |
ckeditor5-html-embed
Source file: @ckeditor/ckeditor5-html-embed/ckeditor5-metadata.json
Plugin | HTML output |
---|---|
HTML embed | <div class="raw-html-embed"> |
<* The plugin can output any arbitrary HTML provided by the user. That HTML is always wrapped with a |
ckeditor5-html-support
Source file: @ckeditor/ckeditor5-html-support/ckeditor5-metadata.json
Plugin | HTML output |
---|---|
General HTML Support | <* The plugin can output any arbitrary HTML configured by config.htmlSupport option. |
Data filter | <* The plugin can output any arbitrary HTML depending on its configuration. |
Data schema | None. |
HTML comment | The plugin can output HTML comments that were added from the editor inital data or by the plugin API. |
Full page HTML | None. |
ckeditor5-image
Source file: @ckeditor/ckeditor5-image/ckeditor5-metadata.json
Plugin | HTML output |
---|---|
Auto image | None. |
Block image | <figure class="image"> |
<img | |
Inline image | <img |
Image | None. |
Image caption | <figcaption> |
Image resize | <figure |
<img | |
Image style | <figure class="image-style-side image-style-align-left image-style-align-right image-style-block-align-center image-style-block-align-left image-style-block-align-right"> |
<figure class="*"> The plugin can be configured to set any class names on the | |
Image toolbar | None. |
Image upload | None. |
Image insert | None. |
Image insert via URL | None. |
ckeditor5-import-word
Source file: @ckeditor/ckeditor5-import-word/ckeditor5-metadata.json
Plugin | HTML output |
---|---|
Import from Word | None. |
ckeditor5-indent
Source file: @ckeditor/ckeditor5-indent/ckeditor5-metadata.json
Plugin | HTML output |
---|---|
Indent | None. |
Indent block | <$block style="margin-left:*; margin-right:*"> By default, the plugin uses inline styles for indentation. |
<$block class="*"> If classes are defined in |
ckeditor5-language
Source file: @ckeditor/ckeditor5-language/ckeditor5-metadata.json
Plugin | HTML output |
---|---|
Text part language | <span |
ckeditor5-link
Source file: @ckeditor/ckeditor5-link/ckeditor5-metadata.json
Plugin | HTML output |
---|---|
Autolink | None. |
Link | <a href="*"> |
<a If | |
<a The plugin can be configured to set any classes, styles or attributes on the | |
Link image | <a href="*"> |
ckeditor5-list
Source file: @ckeditor/ckeditor5-list/ckeditor5-metadata.json
Plugin | HTML output |
---|---|
Legacy list | <ol> <ul> |
<li> HTML element may contain classes, styles or attributes, that are created by other plugins, which alter the | |
Legacy to-do list | <ul class="todo-list"> |
<li> | |
<label class="todo-list__label"> | |
<span class="todo-list__label__description"> | |
<input | |
Legacy list properties | <ol <ul |
List | <ol> <ul> |
<li> | |
To-do list | <ul class="todo-list"> |
<li> | |
<label class="todo-list__label todo-list__label_without-description"> | |
<span class="todo-list__label__description"> | |
<input | |
List properties | <ol <ul |
ckeditor5-list-multi-level
Source file: @ckeditor/ckeditor5-list-multi-level/ckeditor5-metadata.json
Plugin | HTML output |
---|---|
Multi-level list | <ol <ul |
<li> | |
<span class="multi-level-list__marker"> |
ckeditor5-markdown-gfm
Source file: @ckeditor/ckeditor5-markdown-gfm/ckeditor5-metadata.json
Plugin | HTML output |
---|---|
Markdown | None. |
ckeditor5-media-embed
Source file: @ckeditor/ckeditor5-media-embed/ckeditor5-metadata.json
Plugin | HTML output |
---|---|
Media embed | <figure class="media"> |
<oembed url="*"> If | |
<div data-oembed-url="*"> If | |
<* url="*"> If | |
<div style="height:*; padding-bottom:*; position:*"> If | |
<iframe If | |
<* The plugin can be configured to return any element with any class, inline style, and attribute, via | |
Media embed toolbar | None. |
ckeditor5-mention
Source file: @ckeditor/ckeditor5-mention/ckeditor5-metadata.json
Plugin | HTML output |
---|---|
Mention | <span |
ckeditor5-merge-fields
Source file: @ckeditor/ckeditor5-merge-fields/ckeditor5-metadata.json
Plugin | HTML output |
---|---|
Merge fields | None. |
ckeditor5-minimap
Source file: @ckeditor/ckeditor5-minimap/ckeditor5-metadata.json
Plugin | HTML output |
---|---|
Content minimap | None. |
ckeditor5-page-break
Source file: @ckeditor/ckeditor5-page-break/ckeditor5-metadata.json
Plugin | HTML output |
---|---|
Page break | <div |
<span style="display:*"> |
ckeditor5-pagination
Source file: @ckeditor/ckeditor5-pagination/ckeditor5-metadata.json
Plugin | HTML output |
---|---|
Pagination | <* When using |
ckeditor5-paragraph
Source file: @ckeditor/ckeditor5-paragraph/ckeditor5-metadata.json
Plugin | HTML output |
---|---|
Paragraph | <p> HTML element may contain classes, styles or attributes, that are created by other plugins, which alter the This element inherits all attributes, classes and styles that are allowed on the |
ckeditor5-paste-from-office
Source file: @ckeditor/ckeditor5-paste-from-office/ckeditor5-metadata.json
Plugin | HTML output |
---|---|
Paste from Office | None. |
ckeditor5-paste-from-office-enhanced
Source file: @ckeditor/ckeditor5-paste-from-office-enhanced/ckeditor5-metadata.json
Plugin | HTML output |
---|---|
Paste from Office Enhanced | None. |
ckeditor5-real-time-collaboration
Source file: @ckeditor/ckeditor5-real-time-collaboration/ckeditor5-metadata.json
Plugin | HTML output |
---|---|
Presence list | None. |
Real-time collaborative comments | None. |
Real-time collaborative editing | None. |
Real-time collaborative track changes | None. |
Real-time collaborative revision history | None. |
ckeditor5-remove-format
Source file: @ckeditor/ckeditor5-remove-format/ckeditor5-metadata.json
Plugin | HTML output |
---|---|
Remove format | None. |
ckeditor5-restricted-editing
Source file: @ckeditor/ckeditor5-restricted-editing/ckeditor5-metadata.json
Plugin | HTML output |
---|---|
Restricted editing mode | <span class="restricted-editing-exception"> |
Standard editing mode | <span class="restricted-editing-exception"> |
ckeditor5-revision-history
Source file: @ckeditor/ckeditor5-revision-history/ckeditor5-metadata.json
Plugin | HTML output |
---|---|
Revision History | None. |
ckeditor5-select-all
Source file: @ckeditor/ckeditor5-select-all/ckeditor5-metadata.json
Plugin | HTML output |
---|---|
Select all | None. |
ckeditor5-show-blocks
Source file: @ckeditor/ckeditor5-show-blocks/ckeditor5-metadata.json
Plugin | HTML output |
---|---|
Show blocks | None. |
ckeditor5-slash-command
Source file: @ckeditor/ckeditor5-slash-command/ckeditor5-metadata.json
Plugin | HTML output |
---|---|
Slash command | None. |
ckeditor5-source-editing
Source file: @ckeditor/ckeditor5-source-editing/ckeditor5-metadata.json
Plugin | HTML output |
---|---|
Source editing | None. |
ckeditor5-special-characters
Source file: @ckeditor/ckeditor5-special-characters/ckeditor5-metadata.json
Plugin | HTML output |
---|---|
Special characters | None. |
Special characters essentials | None. |
Special characters arrows | None. |
Special characters currency | None. |
Special characters latin | None. |
Special characters mathematical | None. |
Special characters text | None. |
ckeditor5-style
Source file: @ckeditor/ckeditor5-style/ckeditor5-metadata.json
Plugin | HTML output |
---|---|
Style | <* class="*"> The plugin can output any arbitrary HTML depending on its configuration. |
ckeditor5-table
Source file: @ckeditor/ckeditor5-table/ckeditor5-metadata.json
Plugin | HTML output |
---|---|
Table | <figure class="table"> |
<table> <thead> <tbody> <tr> | |
<td <th | |
Table cell properties | <td style="background-color:*; border:*; border-*:*; height:*; padding:*; text-align:*; vertical-align:*; width:*"> <th style="background-color:*; border:*; border-*:*; height:*; padding:*; text-align:*; vertical-align:*; width:*"> |
Table properties | <figure style="float:*; height:*; width:*"> |
<table style="background-color:*; border:*; border-*:*"> | |
Table toolbar | None. |
Table caption | <figcaption data-placeholder="*"> |
Table column resize | <colgroup> |
<col style="width:*"> |
ckeditor5-template
Source file: @ckeditor/ckeditor5-template/ckeditor5-metadata.json
Plugin | HTML output |
---|---|
Template | None. |
ckeditor5-track-changes
Source file: @ckeditor/ckeditor5-track-changes/ckeditor5-metadata.json
Plugin | HTML output |
---|---|
Track changes | None. |
Track changes data | None. |
ckeditor5-typing
Source file: @ckeditor/ckeditor5-typing/ckeditor5-metadata.json
Plugin | HTML output |
---|---|
Text transformation | None. |
ckeditor5-ui
Source file: @ckeditor/ckeditor5-ui/ckeditor5-metadata.json
Plugin | HTML output |
---|---|
Block toolbar | None. |
Accessibility help | None. |
ckeditor5-undo
Source file: @ckeditor/ckeditor5-undo/ckeditor5-metadata.json
Plugin | HTML output |
---|---|
Undo | None. |
ckeditor5-upload
Source file: @ckeditor/ckeditor5-upload/ckeditor5-metadata.json
Plugin | HTML output |
---|---|
Base64 upload adapter | None. |
Simple upload adapter | None. |
ckeditor5-watchdog
Source file: @ckeditor/ckeditor5-watchdog/ckeditor5-metadata.json
Plugin | HTML output |
---|---|
Watchdog | None. |
ckeditor5-word-count
Source file: @ckeditor/ckeditor5-word-count/ckeditor5-metadata.json
Plugin | HTML output |
---|---|
Word count | None. |
mathtype-ckeditor5
Source file: not published yet
Plugin | HTML output |
---|---|
MathType | <* *="*"> For a complete list of available MathML element and attribute names, visit MDN Web Docs for MathML. |
wproofreader-ckeditor5
Source file: not published yet
Plugin | HTML output |
---|---|
WProofreader | None. |
Every day, we work hard to keep our documentation complete. Have you spotted outdated information? Is something missing? Please report it via our issue tracker.
With the release of version 42.0.0, we have rewritten much of our documentation to reflect the new import paths and features. We appreciate your feedback to help us ensure its accuracy and completeness.