CKEditor 4 configuration options compatibility
The following table presents CKEditor 4 configuration options and, if available, their equivalent in CKEditor 5.
In CKEditor 5, the number of options was reduced on purpose. Configuring CKEditor 4 was too troublesome due to the number of available configuration options (around 300). This is why when designing CKEditor 5 from scratch, we decided to come up with a simplified editor, with well-thought default behavior, based on the results of the Editor Recommendations project.
| CKEditor 4 | CKEditor 5 |
|---|---|
|
You can extend the list of HTML tags or attributes that CKEditor 5 should support via the GHS (General HTML Support) feature. The GHS allows adding HTML markup not yet covered by official CKEditor 5 features into the editor's content. Such elements can be loaded, pasted, or output. It does not, however, provide a dedicated UI for the extended HTML markup. You can get full-fledged HTML support by writing a plugin that (ideally) provides also means to control (insert, edit, delete) such markup. For more information on how to create plugins check the Creating a basic plugin article. Looking at the source code of CKEditor 5 plugins may also give you a lot of inspiration. CKEditor 5 will only preserve content that is explicitly converted between the model and the view by the editor plugins. Check the conversion documentation to learn how to extend the conversion rules. |
|
applicationTitle |
N/A. CKEditor 5 does not label the surrounding application region, but you can name the editing area itself. See config.title. |
autoEmbed_widget |
Refer to the Media embed feature guide to learn more about media embedding in CKEditor 5. |
|
|
These settings are no longer needed as CKEditor 5 automatically grows with content by default. Classic editor in CKEditor 5 no longer encapsulates the editing area in an |
autoUpdateElement |
CKEditor 5 always updates the replaced element. This behavior cannot be disabled. |
autocomplete_commitKeystrokes |
The Mentions feature provides autocompletion in CKEditor 5. Use the config.mention.commitKeys option to choose the keys that accept the highlighted item. |
autolink_commitKeystrokes autolink_emailRegex autolink_urlRegex |
Refer to the Autolink section of the Link guide to learn more about support for automatic linking in CKEditor 5. |
baseFloatZIndex |
N/A. There is a dedicated issue about z-index management and making it more open for developers. |
baseHref |
Not supported yet, see the relevant GitHub issue. |
basicEntities |
N/A |
blockedKeystrokes |
N/A |
|
Classic editor in CKEditor 5 no longer encapsulates the editing area in an You can also declare the CSS classes in the configuration. Pass an element definition to the Additionally, all editor types use |
|
|
Classic editor in CKEditor 5 no longer encapsulates the editing area in an You can also set an Additionally, all editor types use |
|
browserContextMenuOnCtrl |
No longer needed as CKEditor 5 does not have a context menu and does not block the native browser context menu. |
clipboard_defaultContentType clipboard_handleImages clipboard_notificationDuration |
N/A for the content type and notification options. To turn pasted and dropped images into base64 strings, as clipboard_handleImages did, use the Base64 upload adapter. Refer to the Image upload guide for the other available strategies. |
cloudServices_tokenUrl |
See config.cloudServices.tokenUrl. |
cloudServices_uploadUrl |
See config.cloudServices.uploadUrl. Check out the comprehensive Image upload guide to learn more. |
|
|
Refer to the Code block feature guide to learn more about support for blocks of pre-formatted code in CKEditor 5. A plugin adding support for the inline |
|
|
Refer to the Font family, size, and color feature guide to learn more about configuring font and background color in CKEditor 5. CKEditor 5 also provides a new highlight plugin. It allows for highlighting parts of the text with the |
contentsCss |
Classic editor in CKEditor 5 no longer encapsulates the editing area in an <iframe>, so such file and configuration setting is no longer needed. If for some reason you need to style the contents of the editing area differently, use the .ck-content selector. |
contentsLangDirection |
Refer to the Setting the language of the content guide to learn how to set the content direction using the config.language configuration option. |
contentsLanguage |
Refer to the Setting the language of the content guide to learn how to set the content language using the config.language configuration option. |
contextmenu_contentsCss |
No longer needed as CKEditor 5 does not have a context menu. |
copyFormatting_allowRules copyFormatting_allowedContexts copyFormatting_disallowRules copyFormatting_keystrokeCopy copyFormatting_keystrokePaste copyFormatting_outerCursor |
Refer to the Format painter guide to learn how the copy formatting functionality works in CKEditor 5. |
coreStyles_bold |
CKEditor 5 uses the <strong> element, see Editor Recommendations - Bold. |
coreStyles_italic |
CKEditor 5 uses the <i> element, see Editor Recommendations - Italic. |
coreStyles_strike |
CKEditor 5 uses the <s> element, see Editor Recommendations - Strikethrough. |
|
CKEditor 5 uses the |
|
|
CKEditor 5 uses the |
|
|
In CKEditor 5 it is possible to apply subscript and superscript to the same element. |
|
|
CKEditor 5 uses the |
|
customConfig |
For performance reasons, CKEditor 5 no longer loads a separate configuration file. Passing configuration options inline reduces the number of HTTP requests. |
dataIndentationChars |
N/A |
defaultLanguage |
The support for multiple translations is handled by the translations service. See the UI language feature guide. |
delayIfDetached delayIfDetached_callback delayIfDetached_interval |
N/A |
devtools_styles devtools_textCallback |
The old CKEditor 4 Developer Tools plugin is not available for CKEditor 5. However, check out the new CKEditor 5 inspector. It is a far more advanced tool that will give you tons of useful information about the state of the editor such as internal data structures, selection, commands, and many more. |
dialog_backgroundCoverColor dialog_backgroundCoverOpacity |
The use of configuration options to style selected parts of the editor was dropped in favor of much more powerful theme customization. |
dialog_buttonsOrder dialog_magnetDistance dialog_noConfirmCancel dialog_startupFocusTab |
N/A |
|
Note: An official integration of the spell and grammar checking functionality for CKEditor 5 is provided by a partner solution, WProofreader. A dedicated configuration option to disable the native browser spell checker is unavailable. However, in case of inline, balloon, and balloon block editors it can be done by setting the Additionally, for all types of editors, including the classic and decoupled ones, you can also call: |
|
disableNativeTableHandles |
No longer needed. CKEditor 5 does not expose native browser table handles. Column resizing is opt-in instead, so it stays unavailable unless you load TableColumnResize. |
disableObjectResizing |
No configuration needed. Resizing is opt-in in CKEditor 5, so it stays unavailable unless you load the plugin that provides it, such as ImageResize for images or TableColumnResize for table columns. |
disableReadonlyStyling |
N/A |
disallowedContent |
See config.allowedContent. No longer needed as CKEditor 5 removes all unwanted markup that cannot be edited with the editor. You can control this by adding plugins to the editor or via the General HTML Support feature. |
div_wrapTable |
N/A |
docType |
N/A. CKEditor 5 no longer encapsulates the editing area in an <iframe>, so the editor is using the same DOCTYPE as the page where it operates. |
easyimage_class easyimage_defaultStyle easyimage_styles easyimage_toolbar |
Refer to the Images feature guides to learn more about image-related features in CKEditor 5. |
editorplaceholder editorplaceholder_delay |
Refer to the Editor placeholder feature guide to learn more about configuring this feature in CKEditor 5. |
emailProtection |
N/A |
embed_provider |
Refer to the Media embed feature guide to learn more about media embedding in CKEditor 5. |
emoji_emojiListUrl emoji_followingSpace emoji_minChars |
You can paste emoji into CKEditor 5 as Unicode content. You can also use the emoji picker of your operating system to insert emoji characters. Use the Ctrl+Cmd+Space keyboard shortcut (macOS) or Win+. (Windows) or the relevant emoji key on the touch keyboard of your device to open the picker. You can configure the automatic text transformation feature to deliver emojis with shortcodes, too. |
enableContextMenu |
N/A. CKEditor 5 does not come with a context menu. A configurable contextual inline toolbar is preferred instead to offer contextual actions for features such as tables or images. See also toolbar. |
enableTabKeyTools |
No configuration needed. CKEditor 5 moves the selection between table cells with Tab and Shift+Tab out of the box, and pressing Tab in the last cell adds a new row, just like in CKEditor 4. Refer to the Accessibility support guide for the full list of table keystrokes. |
|
N/A. CKEditor 5 always creates a new paragraph ( You can use Shift+Enter for creating soft line breaks. If you used this option to build a single-line field, such as a document title or a label, set |
|
entities entities_additional entities_greek entities_latin entities_processNumerical |
N/A |
exportPdf_fileName exportPdf_options exportPdf_service exportPdf_stylesheets exportPdf_tokenUrl |
Refer to the Export to PDF feature guide to learn more about configuring the HTML to PDF converter in CKEditor 5. |
extraAllowedContent |
See config.allowedContent. You can also achieve this via the General HTML Support feature. |
extraPlugins |
Learn how to install plugins in CKEditor 5. |
fileTools_defaultFileName fileTools_requestHeaders |
N/A for the default file name. Request headers are configured per upload adapter in CKEditor 5. When using the Simple upload adapter, set them with the config.simpleUpload.headers option. |
filebrowserBrowseUrl filebrowserFlashBrowseUrl filebrowserFlashUploadUrl filebrowserImageBrowseLinkUrl filebrowserImageBrowseUrl filebrowserImageUploadUrl filebrowserUploadMethod filebrowserUploadUrl filebrowserWindowFeatures filebrowserWindowHeight filebrowserWindowWidth |
There is no equivalent of the file browser plugin in CKEditor 5 yet. See also config.uploadUrl. |
fillEmptyBlocks |
Blocks are always filled in CKEditor 5 because this preserves the intention of the content author (who left such empty lines) in the output data. |
find_highlight |
Refer to the Find and replace feature guide. |
flashAddEmbedTag flashConvertOnEdit flashEmbedTagOnly |
N/A |
floatSpaceDockedOffsetX floatSpaceDockedOffsetY floatSpacePinnedOffsetX floatSpacePinnedOffsetY floatSpacePreferRight |
N/A |
fontSize_defaultLabel fontSize_sizes fontSize_style font_defaultLabel font_names font_style |
Refer to the Font family, size, and color feature guide to learn more about font size, family, and color support in CKEditor 5. |
forceEnterMode |
N/A. See also config.enterMode. |
forcePasteAsPlainText |
N/A. By default, CKEditor 5 removes markup that cannot be edited with the enabled editor plugins. To preserve additional markup, use the General HTML Support feature. |
forceSimpleAmpersand |
N/A |
format_address format_div format_p format_pre |
The Headings feature defines the available block formats through the config.heading.options option, which covers paragraphs and headings. Preformatted text comes from the Code blocks feature instead. There are no equivalents for the <address> and <div> formats, so use General HTML Support to keep them in legacy content. |
format_h1 format_h2 format_h3 format_h4 format_h5 format_h6 |
All headings are configurable via config.heading.options. See also the Headings feature guide. |
format_tags |
To enable additional block tags in CKEditor 5, you may use the General HTML Support feature. Alternatively, you must provide a dedicated plugin. See also config.allowedContent. |
fullPage |
Available through the FullPage API. |
grayt_autoStartup |
An official integration of the spell and grammar checking functionality for CKEditor 5 is provided by a partner solution, WProofreader. |
|
Classic editor in CKEditor 5 no longer encapsulates the editing area in an To set the height dynamically (from JavaScript), use the view writer: You can also set the height in the configuration. Pass an element definition to the See also How to set the height of CKEditor 5 (Classic editor). |
|
htmlEncodeOutput |
N/A. CKEditor 5 outputs HTML markup. See also this StackOverflow question and a dedicated issue. |
ignoreEmptyParagraph |
This is the default behavior in CKEditor 5: editor.getData() returns an empty string when the content holds nothing but an empty paragraph. To get the markup of the empty paragraph instead, call editor.getData( { trim: 'none' } ). |
image2_alignClasses |
Available via more powerful config.image.styles. This also allows for using custom style definitions, not just left, right, and center alignment. See the Image styles feature guide. |
image2_altRequired image2_captionedClass image2_defaultLockRatio image2_disableResizer image2_maxSize image2_prefillDimensions |
Refer to the Image feature guide to learn more about image-related features and customization options in CKEditor 5. |
imageUploadUrl |
See config.uploadUrl. |
image_prefillDimensions image_previewText image_removeLinkByEmptyURL |
Refer to the Image feature guide to learn more about image-related features and customization options in CKEditor 5. |
indentClasses indentOffset indentUnit |
Refer to the Configuring the block indentation feature guide to learn how to customize the indentation behavior using offsets, units, or classes. |
jqueryOverrideVal |
N/A |
justifyClasses |
Refer to the Text alignment feature guide. |
keystrokes |
You can register keystroke handlers using EditingKeystrokeHandler. You can find more information and examples in a dedicated Keystrokes and focus management section. |
language language_list |
The support for many translations is handled by the translations service. See the UI language feature guide. |
linkDefaultProtocol |
config.link.defaultProtocol |
linkJavaScriptLinksAllowed |
N/A. CKEditor 5 does not filter link addresses in the data, so an href that you load or type is preserved and returned by editor.getData(), including a javascript: one. What the editor does is replace unsafe addresses with # in the editing view and in the link preview button. The protocols treated as safe are listed in the config.link.allowedProtocols option and cover http, https, ftp, ftps, and mailto by default. Keep sanitizing link addresses in your own pipeline if the output has to be safe. |
linkPhoneMsg linkPhoneRegExp |
N/A. CKEditor 5 does not validate phone numbers. Note that tel is not among the protocols treated as safe by default, so phone links are shown as # in the editing view unless you add it to the config.link.allowedProtocols option. The address itself is kept in the data either way. |
linkShowAdvancedTab |
Refer to the Link feature guide to read about setting custom link attributes. |
linkShowTargetTab |
See config.link.addTargetToExternalLinks |
magicline_color magicline_everywhere magicline_holdDistance magicline_keystrokeNext magicline_keystrokePrevious magicline_tabuList magicline_triggerOffset |
This functionality is covered by the WidgetTypeAround plugin. It allows users to type around widgets where normally it is impossible to place the caret due to limitations of web browsers. |
mathJaxClass mathJaxLib |
N/A. Math equation functionality for CKEditor 5 is provided by a partner solution, MathType. |
maximize_historyIntegration |
N/A |
mentions |
Refer to the Mentions feature guide to learn more about smart autocompletion based on user input in CKEditor 5. |
menu_groups menu_subMenuDelay |
CKEditor 5 does not come with a context menu. A configurable contextual inline toolbar is preferred instead to offer contextual actions for features such as tables or images. See also toolbar. |
newpage_html |
N/A |
notification_duration |
N/A |
observableParent |
N/A |
|
Using the configuration file or setting to define event listeners was a bad practice so support for it was dropped. When creating an editor, a Note: The editor instance is not the only object on which events are fired. You can also listen to, for example, |
|
pasteFilter |
Not needed as CKEditor 5 always trims the pasted content to match what the available plugins can handle. If you would like to filter the pasted content even further, report a ticket. |
pasteFromWordCleanupFile pasteFromWordNumberedHeadingToList pasteFromWordPromptCleanup pasteFromWordRemoveStyles pasteFromWord_heuristicsEdgeList pasteFromWord_inlineImages |
Refer to the Paste from Office feature guide to learn more about support for pasting from Microsoft Word in CKEditor 5. |
pasteTools_keepZeroMargins |
Refer to the Paste from Office and Paste from Google Docs feature guides to learn more about support for pasting from external applications in CKEditor 5. |
plugins |
See the plugins configuration option. The way how plugins are enabled in CKEditor 5 has changed in general. Check the articles about plugins for more information. |
protectedSource |
N/A. CKEditor 5 does not protect content by matching regular expressions. To keep markup that no feature handles, allow it with the General HTML Support feature instead. For <script> tags in legacy content, see the Enabling script tags for legacy use cases section. |
readOnly |
See editor.isReadOnly and refer to the Read-only feature guide. |
removeButtons |
N/A. You can achieve a similar effect by setting the toolbar option with fewer buttons. |
removeDialogTabs |
N/A |
removeFormatAttributes removeFormatTags |
Refer to the Remove formatting feature guide to learn how to remove any text formatting applied with inline HTML elements and CSS styles in CKEditor 5. |
removePlugins |
See config.removePlugins. |
resize_dir resize_enabled resize_maxHeight resize_maxWidth resize_minHeight resize_minWidth |
No longer needed. The editor automatically grows with content. You can also limit its height with min-height and max-height or set it with height if you need. If you want to allow the users to manually resize the editor, you need to implement this behavior by yourself. |
scayt_autoStartup scayt_contextCommands scayt_contextMenuItemsOrder scayt_customDictionaryIds scayt_customPunctuation scayt_customerId scayt_disableOptionsStorage scayt_elementsToIgnore scayt_handleCheckDirty scayt_handleUndoRedo scayt_ignoreAllCapsWords scayt_ignoreDomainNames scayt_ignoreWordsWithMixedCases scayt_ignoreWordsWithNumbers scayt_inlineModeImmediateMarkup scayt_maxSuggestions scayt_minWordLength scayt_moreSuggestions scayt_sLang scayt_serviceHost scayt_servicePath scayt_servicePort scayt_serviceProtocol scayt_srcUrl scayt_uiTabs scayt_userDictionaryName |
The spell and grammar checking functionality for CKEditor 5 is provided by a partner solution, WProofreader. |
|
N/A. The decoupled editor allows configuring where to insert the toolbar and the editable element. In addition to that, CKEditor 5 Framework architecture allows for writing a custom editor that contains many editable elements (document roots). See the multi-root editor example. |
|
|
N/A. CKEditor 5 always creates a new paragraph ( You can use Shift+Enter for creating soft line breaks. |
|
|
N/A. CKEditor 5 always moves line breaks ( |
|
|
In CKEditor 5 you can make lots of changes to the interface by changing the default CKEditor theme. See the Theme customization guide. For heavy UI modifications, like integrating CKEditor with a custom UI framework, you need to build a custom editor. See the Third-party UI guide. |
|
smiley_columns smiley_descriptions smiley_images smiley_path |
There is no dedicated smiley plugin in CKEditor 5. However, you can paste the emoji into the rich-text editor as Unicode content. You can also configure the automatic text transformation feature to deliver Unicode emojis with shortcodes. You can use the special characters feature to input emojis as well. |
sourceAreaTabSize |
There is no configuration option, but the Source editing area can be styled with CSS. Set the tab-size property on the .ck-source-editing-area selector. |
specialChars |
Refer to the Special characters feature guide to learn more about support for inserting special characters in CKEditor 5. |
startupFocus |
There is no configuration option. Call the editor.focus() method once the editor is ready, for example in the then() callback of Editor.create(). |
startupMode |
CKEditor 5 offers the Source editing feature, which lets users switch to the HTML source of the document. There is no option to open the editor in that mode, so to start in source editing, execute the sourceEditing command after the editor is ready. |
startupOutlineBlocks |
CKEditor 5 offers the Show blocks feature, which outlines block elements in the editing area. It is toggled with the showBlocks command, so to turn it on when the editor starts, execute that command after the editor is ready. |
startupShowBorders |
CKEditor 5 renders dashed helper borders for tables and cells whose borders are removed, either with border: none or with a zero border width. Tables that CKEditor 4 stored with border="0" are therefore covered as well. The helper borders appear only in the editing view and do not change the output data. The behavior is enabled by default and controlled by the config.table.showHiddenBorders option. Refer to the Table and cell styling feature guide for details. |
stylesSet |
Refer to the Styles feature guide to learn more about applying styles to the editor content. |
stylesheetParser_skipSelectors stylesheetParser_validSelectors |
N/A. CKEditor 5 does not build the list of styles by parsing a style sheet. Declare the available styles explicitly instead, as described in the Styles feature guide. |
tabIndex |
Pass an element definition to the config.root.element option and declare tabindex in its attributes field. |
tabletools_scopedHeaders |
CKEditor 5 assigns the scope attribute to header cells automatically based on their position, and users can override it in the cell properties balloon. To disable this behavior, set the config.table.tableCellProperties.scopedHeaders option to false. Refer to the Tables feature guide for details. |
tabSpaces |
N/A. CKEditor 5 does not insert spaces on Tab. The key moves the selection or the focus instead, which matches the default CKEditor 4 behavior of tabSpaces = 0. Refer to the Accessibility support guide for the keystrokes involved. |
templates templates_files templates_replaceContent |
Refer to the Templates guide to learn about support for templates in CKEditor 5. |
title |
Use the config.root.label option, which sets the aria-label attribute of the editing area and helps assistive technologies tell apart multiple editor instances on a page. In multi-root editors, set it per root with config.roots.<rootName>.label. |
|
See See also |
|
toolbarCanCollapse |
N/A. The user cannot collapse the toolbar manually. For distraction-free editing with the toolbar appearing when you need it, use inline, balloon, or balloon block editor. |
toolbarGroupCycling toolbarGroups |
N/A. The toolbar buttons can be grouped by using '|' as a separator or divided into lines by using '-'. Refer to the toolbar guide to learn more about managing toolbar items behavior in CKEditor 5. |
toolbarLocation |
N/A. You can achieve this by using the decoupled editor or writing an editor with a customized UI view, like in this editor with bottom toolbar. |
toolbarStartupExpanded |
N/A. The toolbar cannot be collapsed in CKEditor 5, so it has no collapsed startup state either. See config.toolbarCanCollapse. |
uiColor |
CKEditor 5 comes with an idea of much more powerful themes, where you can style almost every aspect of the UI. See the Theme customization guide and Theme customization example. Thanks to CSS variables rebuilding the editor is not needed to change its styles. |
undoStackSize |
See config.typing.undoStep. |
|
There are several image upload strategies supported by CKEditor 5. Check out the Image upload guide to learn more. |
|
useComputedState |
N/A |
widget_keystrokeInsertLineAfter widget_keystrokeInsertLineBefore |
In CKEditor 5 you can insert a new paragraph directly after a widget with Enter and directly before a widget – with Shift + Enter. |
|
Classic editor in CKEditor 5 no longer encapsulates the editing area in an To set the width dynamically (from JavaScript), use the view writer: You can also set the width in the configuration. Pass an element definition to the See also How to set the height of CKEditor 5 (Classic editor). |