TinyMCE 8.5.0
| 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.5.0 was released for TinyMCE Enterprise and Tiny Cloud on Wednesday, April 29th, 2026. These release notes provide an overview of the changes for TinyMCE 8.5.0, including:
Accompanying Premium plugin changes
The following premium plugin updates were released alongside TinyMCE 8.5.0.
Spell Checker
The TinyMCE 8.5.0 release includes an accompanying release of the Spell Checker premium plugin.
Spell Checker includes the following change.
The Spell Checker plugin now uses the content_language option as the default language, falling back to spellchecker_language if not set
Previously, the Spell Checker plugin relied exclusively on the spellchecker_language option to determine its default proofing language. There was no way to align the spellchecker language with the content language set on the editor.
In TinyMCE 8.5.0, the Spell Checker plugin now reads the new content_language option first and uses its value as the default proofing language. If content_language is not set, the plugin falls back to spellchecker_language. The spellchecker_language option will be deprecated in a future major version; integrators are encouraged to use content_language instead.
For information on the Spell Checker plugin, see: Spell Checker.
Accessibility Checker
The TinyMCE 8.5.0 release includes an accompanying release of the Accessibility Checker premium plugin.
Accessibility Checker includes the following fix.
Accessibility Checker overlay was too dark on multiline inline elements
Previously, when the Accessibility Checker highlighted multiline inline elements, the overlay effect appeared excessively dark. The box-shadow dimming applied to these elements stacked across multiple lines, making the highlighted content difficult to read.
In TinyMCE 8.5.0, the overlay styling for multiline inline elements has been corrected. The Accessibility Checker highlight now displays at the expected brightness level regardless of how many lines an inline element spans.
For information on the Accessibility Checker plugin, see: Accessibility Checker.
Media Optimizer
The TinyMCE 8.5.0 release includes an accompanying release of the Media Optimizer premium plugin.
Media Optimizer includes the following fix.
Upload progress UI was not hidden if a file failed to upload
Previously, the upload progress spinner in the Media Optimizer plugin was recreated each time its visibility status was updated. When a file failed to upload and the spinner needed to be hidden, only the newly created instance was hidden while the original spinner remained visible. This left the upload progress UI permanently displayed even after an upload error.
In TinyMCE 8.5.0, the spinner is now created once and reused when its visibility status changes. The upload progress UI is hidden as expected when a file upload fails.
For information on the Media Optimizer plugin, see: Media Optimizer.
PowerPaste
The TinyMCE 8.5.0 release includes an accompanying release of the PowerPaste premium plugin.
PowerPaste includes the following fix.
Super and subscript text was not properly converted to sub or sup elements on newer versions of Firefox
Previously, pasting content containing subscript or superscript text from Google Docs into TinyMCE on Firefox 149 and later did not properly convert the text to semantic sub or sup elements. Newer versions of Firefox use the baseline-shift CSS property instead of the vertical-align property for sub and superscript formatting, and PowerPaste did not recognize this property. As a result, the pasted text lost its subscript or superscript formatting.
In TinyMCE 8.5.0, PowerPaste now correctly handles the baseline-shift CSS property during paste operations, converting content styled with baseline-shift: sub or baseline-shift: super into the corresponding sub and sup elements.
For information on the PowerPaste plugin, see: PowerPaste.
Revision History
The TinyMCE 8.5.0 release includes an accompanying release of the Revision History premium plugin.
Revision History includes the following fix.
Preview iframe missing content styles such as figure alignment
Previously, the Revision History preview iframe did not include the mce-content-body class, causing content styles such as figure alignment to render incorrectly.
In TinyMCE 8.5.0, the mce-content-body class is applied to the preview iframe, ensuring content renders consistently with the editor.
For information on the Revision History plugin, see: Revision History.
Suggested Edits
The TinyMCE 8.5.0 release includes an accompanying release of the Suggested Edits premium plugin.
Suggested Edits includes the following fix.
Preview iframe missing content styles such as figure alignment
Previously, the Suggested Edits preview iframe did not include the mce-content-body class, causing content styles such as figure alignment to render incorrectly.
In TinyMCE 8.5.0, the mce-content-body class is applied to the preview iframe, ensuring content renders consistently with the editor.
For information on the Suggested Edits plugin, see: Suggested Edits.
TinyMCE AI
The TinyMCE 8.5.0 release includes an accompanying release of the TinyMCE AI premium plugin.
TinyMCE AI includes the following fixes, improvements, and additions.
A long list of fetched sources could overflow the submenu in the AI chat without a way to scroll
Previously, when the list of fetched sources returned from the AI chat exceeded the available space, the submenu overflowed beyond the visible area without any scrolling mechanism. This prevented users from viewing or selecting sources beyond the visible area, blocking functionality and creating a poor user experience. Attempting to scroll within the overflowed submenu closed the menu entirely.
In TinyMCE 8.5.0, the AI chat source submenu includes a maximum height constraint and scrollbar support. Long lists of fetched sources now display within a scrollable area, allowing access to all sources regardless of list length.
In some browser/OS combinations, it was not possible to have 3 source tags in the same row because of the scrollbar
Previously, in the TinyMCE AI Chat panel, source tags displayed in the response area could appear in rows of only two instead of three on certain browser and operating system combinations. The max-width of the source tags did not account for the additional space consumed by thicker scrollbars on some platforms, causing the third tag to wrap to the next row.
In TinyMCE 8.5.0, the maximum width of source tags has been reduced to accommodate scrollbar width variations across platforms. Source tags now consistently display three per row regardless of scrollbar size.
Previous and next buttons are now disabled when only one pending change remains
Previously, the previous and next navigation buttons in the TinyMCE AI review panel remained active even when only one pending suggestion was available. This created a misleading interface, as the buttons implied additional suggestions to navigate through when none existed.
In TinyMCE 8.5.0, the previous and next buttons are now disabled when only one pending suggestion remains. This provides a clearer indication of the available navigation options and prevents users from attempting unavailable actions.
History entries with lengthy names with no line breaks were overflowing
Previously, chat history entries in the TinyMCE AI plugin did not handle text overflow for titles containing lengthy names without spaces. The title text extended beyond the visible area, hiding the options menu (three-dot button) and making the entry difficult to manage.
In TinyMCE 8.5.0, chat history item titles now correctly truncate with an ellipsis when the text exceeds the available width. The options menu remains visible and accessible regardless of title length.
Preview iframe missing content styles such as figure alignment
Previously, the TinyMCE AI preview iframe did not include the mce-content-body class, causing content styles such as figure alignment to render incorrectly.
In TinyMCE 8.5.0, the mce-content-body class is applied to the preview iframe, ensuring content renders consistently with the editor.
History conversation titles were not trimmed
Previously, renaming a conversation in the TinyMCE AI Chat History panel preserved leading and trailing whitespace exactly as entered. If a title was submitted with extra spaces before or after the text, those spaces were saved as part of the name. This could result in conversation titles that appeared blank or misaligned in the history list.
In TinyMCE 8.5.0, conversation titles are now trimmed on save, removing any leading and trailing whitespace before the name is stored. Titles display consistently in the Chat History panel without unintended spacing.
It was possible to submit whitespace-only titles when renaming a conversation
Previously, in the TinyMCE AI Chat History panel, renaming a conversation and clearing the title field would correctly disable the Save button. However, pressing Enter while the input was empty or contained only whitespace bypassed the disabled button and submitted the empty title. This resulted in conversations being saved with blank names, making them difficult to identify in the history.
In TinyMCE 8.5.0, the save handler now validates the title value directly, applying the same check used to disable the Save button. Pressing Enter with an empty or whitespace-only title no longer submits the rename, ensuring all conversations retain a meaningful title in the Chat History.
Preserved the selected diff when switching between diff and preview modes
Previously, switching between preview and diff modes in the TinyMCE AI review panel did not preserve the current suggestion selection. The view would reset to the first suggestion, causing the document to jump to the top rather than maintaining the position within the current context. This disrupted the review experience, particularly for users working through suggestions further down the document.
In TinyMCE 8.5.0, the active suggestion is now preserved when switching between preview and diff modes. Users return to the same suggestion they were viewing prior to the mode change, and manually scrolling in preview mode no longer forces the view to jump when switching back to diff mode.
Improved error message for too-large prompts
Previously, when a prompt sent to the TinyMCE AI service exceeded size limits, the error message did not include enough detail for integrators to diagnose the issue. The structured error data returned by the service, such as the current prompt length and the maximum allowed length, was not decoded or displayed.
In TinyMCE 8.5.0, TinyMCE AI now decodes and displays detailed error information when a prompt exceeds size limits. When available, this includes the current prompt length and the maximum allowed length, making it easier for integrators to identify and resolve prompt size issues.
| If the service response includes unrecognized error details alongside recognized ones, the additional detail information may not be displayed. The error notification itself is unaffected. |
Arrow key navigation did not cycle between the first and last menu items
Previously, when navigating TinyMCE AI menus using the arrow keys, the focus did not cycle between the first and last menu items. Pressing the down arrow on the last item or the up arrow on the first item had no effect. This was inconsistent with the cycling behavior of menus elsewhere in TinyMCE and could slow down keyboard-based navigation.
In TinyMCE 8.5.0, arrow key navigation in TinyMCE AI menus now cycles between the first and last items, matching the standard keyboard navigation behavior used throughout the editor.
The background behind code snippets in AI in-chat responses did not fully cover the snippet
Previously, the background styling behind code snippets in AI in-chat responses did not fully cover the entire snippet area. Portions of the code appeared without proper background coverage, reducing readability and creating an inconsistent visual presentation in the AI chat interface.
In TinyMCE 8.5.0, the background styling for code snippets in AI in-chat responses has been corrected to fully cover the entire snippet area. Code snippets now display with complete and consistent background coverage, improving readability and visual consistency.
Tag removal was not disabled while the AI was responding
Previously, the dismiss buttons on context tags in the TinyMCE AI Chat panel remained active while the AI was generating a response. This allowed tags to be removed during response generation, which could interfere with the response context and produce unexpected results.
In TinyMCE 8.5.0, the dismiss buttons on context tags are now disabled while the AI is generating a response. Tags can only be removed once the response is complete, preventing unintended modifications to the request context during generation.
The user prompt background color was incorrect in the AI Chat dark mode
Previously, the user prompt background color in the TinyMCE AI Chat panel was incorrect when using the dark skin. The low contrast between the text and background made prompts more difficult to read, reducing accessibility and usability of the AI Chat interface in dark mode.
In TinyMCE 8.5.0, the user prompt background color in the AI Chat panel has been corrected for the dark skin. The updated color provides proper contrast, improving readability and accessibility for dark mode users.
Tab could be used to move focus between segmented button options in the preview footer
Previously, the Tab key could be used to move focus between individual options within the segmented button in the TinyMCE AI preview mode footer. This was inconsistent with standard keyboard navigation behavior, where arrow keys should navigate between options in a segmented control and Tab should move focus to the next interactive element outside the group.
In TinyMCE 8.5.0, the focus order in the TinyMCE AI preview footer has been corrected. The Tab key now moves focus to the next interactive element outside the segmented button, and arrow keys navigate between options within the group. This provides a more predictable and accessible keyboard navigation experience.
Reduced spacing between label and body in decision card details
Previously, the spacing between the label and body elements in the TinyMCE AI decision card details was larger than intended. The combined gap and padding resulted in 24 pixels of space between these elements, creating a visually inconsistent layout within the card.
In TinyMCE 8.5.0, the internal spacing in the decision card has been reduced to a consistent 12 pixels between elements. This provides a more compact and visually cohesive card layout in the TinyMCE AI interface.
New chat button was not disabled when the chat was empty
Previously, the New Chat button in the TinyMCE AI sidebar remained enabled even when the current conversation was empty. Clicking the button in this state had no effect, which created a confusing experience and an accessibility issue, as screen readers and keyboard users could interact with a control that performed no action.
In TinyMCE 8.5.0, the New Chat button is now disabled when no conversation has been started, ensuring the button state accurately reflects its availability.
Layout would shift causing the text to jump when action button appears on hover in the chat history list
Previously, the actions container in the TinyMCE AI Chat History panel had no reserved space for the icon button that appears on hover. When hovering over a chat history item, the button became visible and caused the entire layout to shift, making content jump position unexpectedly. This resulted in jarring visual inconsistency and inconsistent spacing throughout the component.
In TinyMCE 8.5.0, the actions container now reserves minimum horizontal space to accommodate the icon button and its surrounding padding. Action buttons appear and disappear without causing layout shifts, providing smoother and more predictable interactions with the Chat History.
Focus is no longer lost when deleting a context source using the Delete or Backspace key
Previously, keyboard focus was lost when deleting a context source tag using the Delete or Backspace key in the TinyMCE AI sidebar chat view. After removing a context source, the focus disappeared entirely, making it difficult to continue keyboard navigation. This particularly affected accessibility and keyboard-only workflows.
In TinyMCE 8.5.0, focus management now tracks tag deletion events. When a context source tag is deleted, focus moves to either the previous context source tag or, when the first or only remaining tag is removed, back to the prompt input field. This ensures seamless keyboard navigation when managing context sources.
ToggleSidebar events were not being triggered when toggling floating sidebars
Previously, the ToggleSidebar event was not emitted when opening or closing floating sidebars in the TinyMCE AI plugin. Additionally, querying the current sidebar value using editor.queryCommandValue('ToggleSidebar') did not return the correct identifier when a floating sidebar was open. This made it difficult to programmatically determine the state of floating sidebars or respond to state changes.
In TinyMCE 8.5.0, floating sidebars now fully support the existing sidebar APIs. The ToggleSidebar event fires when floating sidebars are opened, closed, or switched, and queryCommandValue returns the correct sidebar identifier. This brings floating sidebars to full API parity with regular sidebars.
AI Review suggestion cards now stay available when the review sidebar is closed and reopened while suggestions are still loading
Previously, closing the TinyMCE AI Review sidebar immediately after starting a review and then reopening it after the AI finished generating suggestions would reset the sidebar state. The suggestion cards associated with the review were not displayed, and instead the list of available reviews appeared alongside the preview. This prevented the generated suggestions from being actioned.
In TinyMCE 8.5.0, the sidebar state is now correctly preserved when the sidebar is closed and reopened during or after suggestion generation. The review suggestion cards remain visible and actionable, even if the sidebar was closed while the AI was still streaming results.
Menus no longer close on mouse out
Previously, submenus in the TinyMCE AI plugin closed when the mouse pointer moved outside the menu area. This did not match the behavior of other TinyMCE menus, where submenus remain open until another item in the parent menu is selected or the entire menu is dismissed. The inconsistency made submenu navigation unreliable and could cause confusion during use.
In TinyMCE 8.5.0, submenus in the TinyMCE AI plugin no longer close on mouse out. Submenus now remain open until another parent menu item is selected or the menu is dismissed, matching the behavior of all other TinyMCE menus.
The first loading card during a review no longer appears focused
Previously, when running an AI review, the first skeleton card displayed in the Review sidebar while suggestions were being generated appeared with focus styles applied. Since the card content was still loading and could not be interacted with, the visible focus indicator was misleading and created a confusing user experience.
In TinyMCE 8.5.0, focus styles are no longer applied to loading cards in the Review sidebar. Cards only receive focus styling once their content has fully loaded and they can be interacted with.
New commands for executing AI UI actions
Previously, Quick Actions in TinyMCE AI could only be triggered through the plugin’s built-in menus and toolbar buttons. Integrators who wanted to invoke these actions from custom UI elements or automation workflows had no programmatic way to do so.
In TinyMCE 8.5.0, the TinyMCE AI plugin registers a set of editor commands that mirror each Quick Action. These include commands for built-in actions such as TinyMCEAIQuickActionImproveWriting, TinyMCEAIQuickActionCheckGrammar, and TinyMCEAIQuickActionTranslate (which accepts a language argument), as well as TinyMCEAIQuickActionCustom for running a custom prompt with a specified model. A TinyMCEAIChatPrompt command is also available for sending a prompt directly to the Chat sidebar. For the full list of commands, see TinyMCE AI plugin commands.
New optional id property to tinymceai_quickactions_custom to register the action as a custom menu item
Previously, custom quick actions defined through the tinymceai_quickactions_custom option could only appear inside a dedicated Custom submenu within the Quick Actions menu. This limited integrators who wanted custom actions to appear as top-level menu items alongside predefined actions or in other menu configurations.
In TinyMCE 8.5.0, an optional id property can be included in each custom quick action object. When an id is set, the custom action can be listed in the tinymceai_quickactions_menu array as its own top-level menu item, or included in any menubar menu or menu button configuration that accepts control identifiers.
Loader in the chat was normal size instead of small size
Previously, the loading spinner displayed in the AI Chat area while generating a response used the default size rather than the small size. This caused the spinner to appear visually larger than the adjacent AI response icon, creating an inconsistent appearance within the chat interface.
In TinyMCE 8.5.0, the AI Chat loading spinner is now sized to match the AI response icon dimensions, providing a consistent and polished visual experience.
While the plugin is generating a review or quick action, the Stop button in the loading indicator receives focus
Previously, the TinyMCE AI plugin displayed the “Stop generating” control inconsistently across different contexts. The review loading indicator used a text-based button, while the AI Chat sidebar used an icon-based button. In addition, the control did not receive focus when it appeared, which negatively impacted keyboard accessibility.
In TinyMCE 8.5.0, the stop button in the loading indicator now matches the icon button used in the AI Chat sidebar, providing a more consistent visual experience. The button also receives focus when displayed, improving keyboard navigation and accessibility during content generation.
For information on the TinyMCE AI plugin, see: TinyMCE AI.
Accompanying Enhanced Skins & Icon Packs changes
The TinyMCE 8.5.0 release includes an accompanying release of the Enhanced Skins & Icon Packs.
Enhanced Skins & Icon Packs
The Enhanced Skins & Icon Packs release includes the following updates and fixes.
The Enhanced Skins & Icon Packs were rebuilt to pull in the changes also incorporated into the default TinyMCE 8.5.0 skin, Oxide.
The floating toolbar had a transparent background in the fabric, snow, and naked skins
Previously, the floating toolbar background was transparent in the fabric, snow, and naked skins, causing editor content below to show through the toolbar. This reduced readability and made the toolbar difficult to use.
In TinyMCE 8.5.0, the toolbar background styling uses proper background colors for the affected skins. The floating toolbar now has a solid background in all three skins, ensuring proper visual separation from editor content.
Premium content CSS files contained extraneous styles from the default theme
Previously, premium skin content CSS files for the fabric, fluent, material-classic, and material-outline skins imported styles from the default theme’s content UI. This caused duplicate styles to load into the editor and unnecessarily increased the size of the premium content CSS files.
In TinyMCE 8.5.0, the outdated import has been removed from the premium content CSS files. The premium content CSS files now contain only the styles specific to each skin, reducing file size and eliminating duplicate style loading.
For information on using Enhanced Skins & Icon Packs, see: Enhanced Skins & Icon Packs.
Improvements
TinyMCE 8.5.0 also includes the following improvement:
Improved visual styling of inline diff highlights in Suggested Edits and TinyMCE AI plugin
Previously, when diff highlights were selected in the Suggested Edits and TinyMCE AI plugins, the visual styling produced overlapping effects that cluttered the display. Multiple style layers, including borders, box shadows, and background colors, combined to obscure the highlighted content. This made it difficult to read and review suggested changes, particularly for inline text elements spanning multiple lines.
In TinyMCE 8.5.0, the visual styling for selected diff highlights has been simplified and refined. Border-based highlighting has been replaced with background gradient images, box shadows have been repositioned, and background sizing now accounts for line height. These changes reduce visual noise and provide cleaner, more readable diff highlights, making the review workflow easier to follow.
Additions
TinyMCE 8.5.0 also includes the following addition:
New content_language option to set the lang attribute on the iframe’s html element or the inline editor’s target element
Previously, TinyMCE had no option to set the default content language of the editor. In classic (iframe) mode, the html element inside the editor iframe had no lang attribute, which failed to meet accessibility standards such as WCAG Success Criterion 3.1.1. Screen readers and other assistive technologies could not determine the language of the editor content.
In TinyMCE 8.5.0, the new content_language option sets a lang attribute on the html element of the editor’s iframe in classic mode, or on the target element in inline mode. This is separate from the language option, which controls the UI language. The Spell Checker plugin also now defaults to content_language when set, before falling back to spellchecker_language.
Bug fixes
TinyMCE 8.5.0 also includes the following bug fixes:
URIs with non-Latin1 characters were returning an error
Previously, inserting images with data URIs that contained non-Latin 1 characters, such as SVG data URIs with a byte order mark (BOM), caused TinyMCE to throw an InvalidCharacterError. This occurred because TinyMCE used the btoa function to encode data URIs to base64, and btoa does not support characters outside the Latin1 range. The error could cause the editor to hang or fail to process the image.
In TinyMCE 8.5.0, data URIs are now encoded using TextEncoder before being passed to btoa, ensuring that non-Latin1 characters are handled correctly. Images with data URIs containing such characters are now processed without errors.
Alert and confirm dialogs were not announced properly by some screen readers
Previously, alert and confirm dialogs in TinyMCE were not announced correctly by some screen readers, such as NVDA. The dialogs had an empty aria-label attribute and lacked appropriate aria-labelledby or aria-describedby references to the dialog body content. As a result, screen reader users could not hear the message or question presented in these dialogs, making it difficult to respond to confirmation prompts or understand alert messages.
In TinyMCE 8.5.0, alert and confirm dialogs now include proper ARIA attributes that reference the dialog content. Screen readers announce the dialog message when the dialog opens, providing an accessible experience for all users.
Certain selections would delete the editor body, causing issues
Previously, selecting content that included a table by dragging from inside the editor and releasing the mouse button outside the editor, then pressing the Delete key, could remove the editor body element from the DOM. This caused a console error and left the editor in an unusable state where any subsequent interaction, such as focusing or selecting content, would produce additional errors.
In TinyMCE 8.5.0, the editor now prevents deletion operations from removing the editor body element. Selections that span tables and extend beyond the editor boundary are handled safely, preserving the editor structure and allowing continued use without errors.
Certain combinations of divs inside of lists would cause issues turning off lists
Previously, certain combinations of div elements inside list items could prevent lists from being toggled off. The list detection logic would prematurely identify a div within a list item as a list host rather than recognizing it as content inside an existing list. This made it impossible to remove the list formatting in affected content structures.
In TinyMCE 8.5.0, the list detection logic now correctly identifies when a div is inside a list and locates the parent list before treating the element as a host. Lists with nested div elements can now be toggled off as expected.
Script and style elements would incorrectly be removed by DOMPurify when considered valid in the schema
Previously, script and style elements that were explicitly allowed through valid_elements or extended_valid_elements were removed during the sanitization process when xss_sanitization was enabled. DOMPurify flagged these elements as potential mXSS vectors and removed them entirely, even when the schema configuration indicated they were valid.
In TinyMCE 8.5.0, script and style elements that are considered valid in the schema are retained during sanitization. The sanitization process still removes unsafe attributes and content, but no longer removes the entire element when the schema explicitly allows it.
Iframe elements with children would incorrectly be removed by DOMPurify
Previously, iframe elements that contained child nodes were removed entirely during the sanitization process. DOMPurify treated the presence of child nodes within an iframe as a potential mXSS risk and stripped the entire element from the content.
In TinyMCE 8.5.0, iframe elements are preserved during sanitization. Any child nodes and unsafe or invalid attributes are removed, but the iframe element itself remains in the editor content.
Deprecated
TinyMCE 8.5.0 includes the following deprecation:
The Spell Checker configuration property, spellchecker_language, has been deprecated
The spellchecker_language option has been deprecated as of TinyMCE 8.5.0 and will be removed in a future major release. Use content_language instead, which sets both the default content language and the Spell Checker proofing language.
For information on the content_language option, see: Content localization.