Ckeditor Extras
This module adds useful features to CKEditor 5 for Drupal content editors. It includes tools to easily duplicate table rows and columns, fixes issues with saving styles and changing font sizes, and enhances the overall editing experience by adding commonly expected word processor functionalities.
CKEditor 5 is a great editor, but day-to-day editing in Drupal keeps running into small gaps: you cannot duplicate a table row, copying table cells silently copies nothing when they contain an image, a horizontal line or a nested table, some Style definitions make the text format settings crash, and the Font size button can stack sizes on top of each other instead of replacing them. Each gap is small, but together they cost editors time and trust.
CKEditor Extras collects those fixes and tools in one maintained package. The base module only ships shared code; every feature is a submodule you enable on its own, and the table tools can also be switched on or off per text format. Nothing is rewritten or overridden in Drupal's output: the submodules extend CKEditor 5 and Drupal core through their public extension points.
New to Drupal? Think of it this way: CKEditor is the text box where editors write content. This module adds the small tools editors expect from a word processor — like "duplicate this row" in a table — and fixes a few buttons that do not behave as they promise, without asking a developer to write code.
Features
The package is split into submodules, so a site only turns on what it needs:
CKEditor Extras: Table
- Adds Duplicate row above and Duplicate row below to the table's Row menu, and Duplicate column left and Duplicate column right to its Column menu, right after CKEditor's own Insert entries.
- The copy carries everything in the source cells: text, inline styles (backgrounds, borders, padding), classes and attributes, and any widget inside — images, horizontal lines, even nested tables.
- It works on CKEditor's data model, not through the clipboard. This matters: when the selected cells contain a widget, Ctrl+C silently copies nothing, because the browser is left with no text to copy and CKEditor never receives the copy event. Duplicating is the reliable way to repeat such rows.
- The new row or column is created with CKEditor's own table utilities, so merged cells (
rowspan/colspan) stay consistent. Heading rows and columns are respected, and left/right follow right-to-left languages the same way core's Insert entries do. - Each duplication is a single undo step.
- Both features can be switched off per text format.
CKEditor Extras: Style
- Lets the core Style plugin save styles for elements such as
li,ul,olortd(for exampleli.highlights|Highlights). - Without it, core's validation can report a style conflict that no plugin actually owns and throw an
OutOfBoundsExceptionwhile building the error message, so saving the text format ends in "The website encountered an unexpected error". - Only that false positive is tolerated. Real conflicts — a style whose class another plugin already manages — still block saving, with core's usual message.
CKEditor Extras: Font
- For sites using the Font size button of CKEditor 5 Plugin Pack with numeric sizes.
- Without it, text that already has a size outside the list (pasted from Word or Google Docs, legacy content, or written in Source mode) cannot be changed: picking a new size wraps a new
spanaround the old one, the old size keeps winning, and nothing changes on screen. Removing the size does not work either. - With it, the new size replaces the old one and removing a size really removes it. Sizes are written with their unit (
font-size:24px). - It only acts when the Font size options are numeric; formats using CKEditor's named sizes (Tiny, Small, Big, Huge) are left untouched.
When and why would someone use this module? Use cases include:
- Price and comparison tables: repeat a styled row — with its backgrounds, borders and a nested table inside — instead of rebuilding it cell by cell.
- Itineraries, checklists and feature lists: style list items (included / not included, highlights) through the Style dropdown without the text format crashing on save.
- Content pasted from office documents: let editors actually change or remove the font sizes that came with it.
- Works in: any content type, Paragraphs, blocks and any entity with a CKEditor 5 text field.
Post-Installation
No new configuration pages or content types are created. Enable the base module and the submodules you need:
- CKEditor Extras: Table — nothing to configure. In any text format whose toolbar has the core Table button, the new entries appear in the table's Row and Column menus. To hide them in a format, go to Administration → Configuration → Content authoring → Text formats and editors, edit the format, and untick them under CKEditor 5 plugin settings → Duplicate table row / Duplicate table column.
- CKEditor Extras: Style — nothing to configure. Define your styles as usual under CKEditor 5 plugin settings → Style; styles on list items and table cells now save.
- CKEditor Extras: Font — nothing to configure in this module. Under CKEditor 5 plugin settings → Font Size (from CKEditor 5 Plugin Pack), enter numeric sizes, one per line (for example
12,16,24).
Clear caches (drush cr or via Administration → Configuration → Performance) if a change does not appear right after enabling a submodule.
Additional Requirements
- Drupal core
^10.3 || ^11(developed and tested on Drupal 11.4 with CKEditor 5 v47). - Core CKEditor 5 module.
- CKEditor Extras: Font only has an effect together with the Font size plugin of CKEditor 5 Plugin Pack; it does not depend on it and does nothing without it.
No external libraries, no build step: the CKEditor plugins are plain JavaScript loaded through Drupal libraries.
Recommended modules/libraries
- CKEditor 5 Plugin Pack — its Font size button is what CKEditor Extras: Font fixes.
Similar projects
- CKEditor 5 Plugin Pack — The official collection of free CKEditor 5 plugins by CKSource (fonts, highlight, find and replace, layout tables and more). It does not duplicate table rows or columns; CKEditor Extras complements it rather than overlapping with it.
- Editor Advanced Table — Adds class, id and dir attributes to the Table Properties dialog. It works on table attributes; CKEditor Extras works on table structure (duplicating rows and columns). Both can be used together.
-
CKEditor5 Table Fix — Restores legacy table markup (
tfoot,th scope,caption…) that CKEditor 5 would strip. A different problem: markup preservation, not editing tools. - AI: CKEditor Extras — Despite the similar name, an unrelated project: AI paraphrasing and tone adjustment for the Drupal AI ecosystem. CKEditor Extras has no AI features and no external services.
- Copy and paste (manual approach) — Selecting cells and pressing Ctrl+C works for plain text, but silently copies nothing when a selected cell contains a widget (image, horizontal line, nested table). Duplicating on the model avoids that trap.
Recommended projects
I also maintain and recommend the following modules. None of them rewrite or override Drupal's core output — they integrate cleanly with the existing system, extend its native capabilities, and work perfectly alongside this module:
- CKEditor Advanced Container — Flexbox containers and columns inside CKEditor 5, with widths, gaps, backgrounds, borders and responsive behavior configured from the editor. A semantic alternative to layout tables.
- CKEditor Content Groups — Accordions and horizontal or vertical tabs inside CKEditor 5.
- CKEditor Media Image Style — Adds a style selector button to the CKEditor 5 media toolbar so editors can choose an image style (thumbnail, large, etc.) per embed, without creating new view modes.
-
CKEditor Media Title — Lets editors set a custom
titleattribute on media images embedded through CKEditor 5, directly from the media toolbar. - Media Reference Override — Extends Drupal's standard media reference field to allow per-reference overrides of fields like alt text or title, storing the override on the referencing entity rather than the media entity itself.
- Advanced Image Media Attributes Formatter — Extends Drupal's native image field formatters to expose additional HTML attributes (alt, title, class, etc.) as configurable options.
Commercial Support
This module is developed and maintained by Nelo.
The maintainer is available for professional consulting and architectural guidance related to CKEditor 5 integrations, media systems, production Drupal implementations, and enterprise content architecture.
Supporting this Module
- Check out our sponsor, Dom Host Seo, who made this module possible with their support!
Community Documentation
Currently no external videos or demo sites are available. The module includes help text accessible via Help > CKEditor Extras.
For questions, bug reports, or feature requests, please use the issue queue on Drupal.org.
Depends on
Dependencies of the latest stable release
- ckeditor5 Drupal core
Required by
Tracked projects that depend on this one
No tracked projects depend on this one yet.
Activity
Releases
| Version | Type | Core | Notes | Release date | |
|---|---|---|---|---|---|
| 1.0.0 | Stable | 10–11 | Initial stable release: duplicate table rows and columns, Style and Font size fixes. | Sep 24, 2026 |