TinyMCE 8.1
These are the Tiny Cloud and TinyMCE Enterprise release notes. For information on the latest community version of TinyMCE, see the TinyMCE Changelog. |
Overview
TinyMCE 8.1 was released for TinyMCE Enterprise and Tiny Cloud on Wednesday, September 17th, 2025. These release notes provide an overview of the changes for TinyMCE 8.1, including:
New Premium plugins
The following new Premium plugin was released alongside TinyMCE 8.1.
Full Page HTML
The new Premium plugin, Full Page HTML provides comprehensive control over document metadata and properties. It enables users to edit HTML document metadata such as title, keywords, and description through an intuitive dialog interface. When combined with the code plugin, it also exposes the complete HTML structure including <head>
, <body>
, and various meta tags in the source code view.
For information on the Full Page HTML plugin, see Full Page HTML.
Accompanying Premium plugin changes
The following premium plugin updates were released alongside TinyMCE 8.1.
Spell Checker
The TinyMCE 8.1 release includes an accompanying release of the Spell Checker premium plugin.
Spell Checker Premium plugin includes the following fix.
Spellcheck could create an invalid selection if the first element in the document was noneditable
.
Previously when the first element of a document was set as a contenteditable="false"
(CEF) element, selecting all content with TinyMCE spellchecker could result in an invalid selection state. This issue prevented the deletion of the entire content selection, creating an edge case that disrupted normal editing workflows.
To resolve this, TinyMCE now inserts a temporary hidden element before the initial CEF element in such scenarios. This adjustment ensures that full selections are valid and can be deleted as expected.
For information on the Spell Checker plugin, see: Spell Checker.
Image Optimizer (Powered by Uploadcare)
The TinyMCE 8.1 release includes an accompanying release of the Image Optimizer (Powered by Uploadcare) premium plugin.
Image Optimizer (Powered by Uploadcare) includes the following fix.
Image previews sometimes showed the wrong image from a srcset
.
In previous versions of the Image Optimizer premium plugin, an issue where image effects were applied based on the main src
instead of the active srcset
URL, caused discrepancies when the displayed image was selected from srcset
. This led to a mismatch in the adjustment preview (rendered from the main src
) versus the image shown in the editor (rendered from the srcset
URL), resulting in different visual outcomes for effects such as blur or resize.
TinyMCE 8.1 resolves this issue by using the currentSrc
property to generate previews, ensuring the preview and the editor image reference the same resource. As a result, the preview image and the image in the editor are now consistent.
For information on the Image Optimizer Powered by Uploadcare plugin, see: Image Optimizer (Powered by Uploadcare).
Accessibility Checker
The TinyMCE 8.1 release includes an accompanying release of the Accessibility Checker premium plugin.
Accessibility Checker includes the following improvements.
alt
text length error message now shows current and maximum character counts
Previous versions of Accessibility Checker, the alt
text length validation error displayed only the current character count, such as "Currently 151 characters" without indicating the maximum allowed length. This caused unclear guidance for users and negatively affected the experience across all image rules (I1–I4) that rely on length validation, making it inconsistent with accessibility best practices.
In TinyMCE 8.1, the error message for Accessibility Checker has been updated to show both the current and maximum character counts, for example: "151 characters (maximum 150 allowed)." This improvement provides clear, actionable error messaging that aligns with accessibility guidance and reduces user confusion across all affected rules.
Auto-suggest alt
text from existing alt
, aria-label
, and title
attributes with priority fallback in image repair dialogs.
In previous version of Accessibility Checker, the image repair dialog only proposed values from alt
, ignoring aria-label
and title
, which forced manual entry and slowed accessibility repairs while increasing the risk of inconsistent descriptions.
TinyMCE 8.1 now auto-suggests alt
text using a priority-based fallback that checks existing attributes in order aria-labelledby
, aria-label
, alt
then title
and leaves the field empty if none are present. This ensures that users can label images faster and with greater accuracy by leveraging existing accessibility attributes, improving repair efficiency and consistency.
For information on the Accessibility Checker plugin, see: Accessibility Checker.
Revision History
The TinyMCE 8.1 release includes an accompanying release of the Revision History premium plugin.
Revision History includes the following fix and improvement.
The same user could receive two different default avatars
In previous versions of Revision History, the same user could receive two different default avatars. This inconsistency could make a single user appear as two distinct contributors, creating confusion when reviewing revision logs.
In TinyMCE 8.1, the issue has been resolved so that each user is now always assigned the same default avatar, improving accuracy and consistency in the revision history display.
Default avatars are now generated with a consistent color based on the user_id
Default avatars are now generated consistently using the user_id
, ensuring that users are assigned a reliable and predictable color for their avatar. This improvement enhances the user experience by providing clear visual consistency when identifying contributors in revision histories.
For information on the Revision History plugin, see: Revision History.
Comments
The TinyMCE 8.1 release includes an accompanying release of the Comments premium plugin.
Comments Premium plugin includes the following fixes and improvement.
Default avatars generated inconsistently
Previously, TinyMCE generated default avatars inconsistently in the Comments plugin. Users without avatars saw the same placeholder avatar in the mentions dropdown, while the same individual could also receive different default avatars in other contexts. This inconsistency made it difficult to distinguish users and, in some cases, created confusion by making a single user appear as two different people. In 8.1, this issue has been fixed, and default avatars are now consistently generated with a stable color based on the user_id
. This ensures that the same user always has the same default avatar, improving clarity and providing a more reliable user experience.
Improved keyboard navigation in Comments dropdown when inserting @Mention
Previously, typing @
to open the mentions dropdown list inside the Comments card did not support the Shift+Enter keyboard combination. For example, when typing a @
+ navigating to a user in the selected Comment card, pressing Shift+Enter did not insert the @mention
to the <textarea>
for the comment body.
In TinyMCE 8.1, this issue has been resolved by handling Shift+Enter in the same way as the regular Enter key, ensuring consistent and predictable keyboard interaction when selecting items in the @mentions
dropdown within comment cards.
For information on the Comments plugin, see: Introduction to Tiny Comments.
Mentions
The TinyMCE 8.1 release includes an accompanying release of the Mentions premium plugin.
Mentions Premium plugin includes the following improvement.
Users without avatars now display avatar placeholders in the mentions dropdown
Previously, the mentions dropdown did not properly handle cases where users lacked profile avatars, resulting in a visually inconsistent and unclear user interface. This impacted usability by making it harder to distinguish between users without avatars and those with incomplete or broken profile information.
In TinyMCE 8.1, this issue has been addressed. Now, TinyMCE provides a default avatar placeholder for users without avatars, ensuring a consistent and polished experience when using the mentions dropdown.
For information on the Mentions plugin, see: Mentions.
AI Assistant
The TinyMCE 8.1 release includes an accompanying release of the AI Assistant premium plugin.
AI Assistant includes the following fix.
AI Assistant plugin dialog preview now respects the content_security_policy
editor option
Previously, the AI Assistant plugin dialog preview did not adhere to the content_security_policy editor option, resulting in limited control over the loading of external resources such as images.
In TinyMCE 8.1, the dialog preview now applies the configured content security policy when provided, ensuring that external resources are restricted according to the editor’s security settings. This improvement enhances consistency, strengthens security, and aligns the plugin with user-defined policies in TinyMCE.
For information on the AI Assistant plugin, see: AI Assistant, or for information on the content_security_policy
option see Content Security Policy.
Suggested Edits
The TinyMCE 8.1 release includes an accompanying release of the Suggested Edits premium plugin.
Suggested Edits includes the following fix andimprovement.
Added keyboard navigation to the Suggested Edits plugin
The initial release of the Suggested Edits plugin did not support keyboard navigation, limiting accessibility for users who rely on keyboard-based interactions. This restriction made it difficult to move through and interact with the suggested edits sidebar and cards without using a mouse. To improve usability and accessibility, keyboard navigation has been implemented in the Suggested Edits plugin. Users can now efficiently navigate and interact with the plugin using the keyboard.
Empty editor operations sometimes showed as modified instead of added/removed
Previously empty editor operations were sometimes incorrectly displayed as modifications instead of additions or removals. This behavior caused confusion, as an editor that appeared empty could still show a “modified” state.
To resolve this, empty content is no longer sent. When the editor is empty or becomes empty, the entire state is now correctly represented as added or removed. This improvement ensures that change tracking is clearer and more accurate, reducing confusion when editors contain no content.
For information on the Suggested Edits plugin, see: Suggested Edits.
Improvements
TinyMCE 8.1 also includes the following improvements:
editor.getContent()
now includes indent
and entity_encoding
properties to control HTML formatting
Previously, when using the TinyMCE getContent
API, options such as indent
and entity_encoding
could not be overridden during the call. The editor always applied its initial configuration, which limited flexibility when retrieving content. This meant integrators were restricted to the defaults set at initialization, with no way to adjust formatting behavior per call.
In TinyMCE 8.1, the getContent
API has been enhanced to support per-call overrides for indent
and entity_encoding
. These options can now be specified directly when invoking getContent
, regardless of the editor’s default configuration. This improvement gives developers greater control over output formatting, allowing tailored content retrieval for different use cases.
getContent
API to retrieve content with different formatting options.// Disable indentation
tinymce.get(0).getContent({ indent: false });
// Serialize using named entities
tinymce.get(0).getContent({ indent: false, entity_encoding: 'named' });
// Serialize using numeric entities
tinymce.get(0).getContent({ indent: false, entity_encoding: 'numeric' });
// Serialize core entities as named, others as numeric
tinymce.get(0).getContent({ indent: false, entity_encoding: 'named+numeric' });
// Output raw characters
tinymce.get(0).getContent({ indent: false, entity_encoding: 'raw' });
or
tinymce.init({
selector: "textarea",
entity_encoding: 'named', // or 'numeric' or 'raw'
indent: false, // or true
});
For more information on the getContent
API, see getContent()
.
Clicking on a non-selectable element when the selection is off screen no longer scrolls to the selection
Previously, an issue was identified where clicking the editor’s horizontal scrollbar a "non-selectable" UI element implicitly focused the editor, placed the caret at the beginning of the content, and then scrolled the document vertically to that caret position, causing the page to scroll away from the user’s current view.
TinyMCE 8.1 addresses this issue. Now, the editor avoids taking focus when users click elements that are not selectable (such as scrollbars), preventing unintended vertical scrolling.
Changes
TinyMCE 8.1 also includes the following change:
Tooltips can now remain open when hovered
Previously, tooltips would disappear when the cursor moved from the toolbar button to the tooltip, preventing users from keeping the tooltip open for reference. This behavior impacted accessibility by making it difficult for users who rely on tooltips for extended reading or navigation. In 8.1, TinyMCE has been updated to allow tooltips to accept mouse events. This ensures that tooltips remain visible when hovered, improving accessibility and usability by letting users keep the tooltip open until they move the cursor away.
This improvement addresses the WCAG 2.1 Success Criterion 1.4.13: Content on Hover or Focus (Level AA), specifically the "Hoverable" requirement.
Bug fixes
TinyMCE 8.1 also includes the following bug fixes:
NVDA would announce iframe_aria_text multiple times
Previously, in certain browsers, when using screen readers such as NVDA or JAWS, the iframe_aria_text
was either not announced at all or announced twice, causing inconsistent and potentially confusing behavior for users relying on assistive technology. To resolve this, the behavior has been standardized by adjusting how the label is applied:
-
in Firefox, the
title
attribute is now set directly on the iframe element and thearia-label
on the body is not used. -
while in other browsers the
aria-label
is applied to the body inside the iframe without setting atitle
attribute on the iframe.
As a result, iframe_aria_text
is now consistently announced once across all supported browsers.
For more information, see: iframe_aria_text.
Using Command (CMD)
+ Backspace
would not preserve inline formatting.
Previously, using Command (CMD)
+ Backspace
at the end of a line removed the entire line without preserving inline formatting, unlike selecting the line with a triple-click and pressing Backspace
. This inconsistency caused confusion, as different deletion methods produced different results.
In 8.1, the behavior of Command (CMD)
+ Backspace
has been updated to match other deletion methods, ensuring that inline formatting is preserved.
Navigating between elements with contenteditable="true"
was not possible on Firefox using the keyboard.
In TinyMCE 8.1, a Firefox-specific limitation prevented caret movement between editable elements when navigating with the keyboard. The caret became trapped inside a figcaption, blocking vertical navigation using the Arrow Down key and preventing users from moving to the next element.
This issue disrupted accessibility and editing flow for Firefox users relying on keyboard interactions. To resolve this, a new caret navigation module was introduced and integrated into the Firefox-specific arrow key handling logic. The solution works around a long-standing Firefox bug by programmatically advancing the caret out of blocked states, ensuring smoother and more consistent keyboard navigation across editable elements.
Cursor movement did not operate correctly after a figure
was selected
In previous versions of TinyMCE, using the TAB
key to move focus into a figcaption
element after selecting a figure
caused the editor to enter a broken state where the caret was displayed inside the figcaption but typing did not produce any visible content. This issue prevented users from editing figcaptions using only the keyboard, forcing them to rely on a mouse or other pointing device to make changes.
In TinyMCE 8.1, this bug has been fixed, ensuring that figcaptions can now be edited seamlessly with keyboard navigation alone, improving accessibility and overall editing efficiency.
Links inserted with &
encoding are now decoded to &
before inserting
Previously, when pasting URLs containing encoded ampersands &
into TinyMCE, the encoded values were preserved, resulting in double encoding when the link was inserted into content. For example, a pasted link such as
https://example.com/search?&query=example
would appear in the editor source as
https://example.com/search?&amp;query=example
This caused issues when opening such links, as the URLs became invalid. In 8.1, TinyMCE now automatically decodes &
back to &
before inserting the link, ensuring that pasted URLs remain valid and functional in both the editor and the source code.
Deprecated
TinyMCE 8.1 includes the following deprecation<s>:
The content_css_cors
configuration option has been deprecated
As of TinyMCE 8.1, the content_css_cors
configuration option has been marked as deprecated. It will be completely removed in the upcoming TinyMCE 9.0 release. As an alternative, we recommend using crossorigin instead.
Known issues
This section describes issues that users of TinyMCE 8.1 may encounter and possible workarounds for these issues.
There is one known issue in TinyMCE 8.1.
Full Page HTML plugin incompatibility with Suggested Edits and Revision History
The Full Page HTML plugin enables document properties and metadata to be set. However, these are not picked up by Suggested Edits and Revision History, and actions performed in these plugins will overwrite the values set by the Full Page HTML plugin.
Workaround: Avoid using the Full Page HTML plugin in combination with Suggested Edits or Revision History plugins to prevent data loss of document metadata and properties.