---
title: "TinyMCE 8.1"
description: "Release notes for TinyMCE 8.1"
canonical_url: "https://www.tiny.cloud/docs/tinymce/latest/8.1.0-release-notes/"
md_url: "https://www.tiny.cloud/docs/tinymce/latest/8.1.0-release-notes/index.md"
version: "latest"
last_updated: "2025-10-23T01:37:47Z"
tokens: 3973
---
# TinyMCE 8.1

> **Note:** These are the Tiny Cloud and TinyMCE Enterprise release notes. For information on the latest community version of TinyMCE, see the [TinyMCE Changelog](../changelog/).

## Overview

TinyMCE 8.1 was released for TinyMCE Enterprise and Tiny Cloud on Wednesday, September 17 th, 2025. These release notes provide an overview of the changes for TinyMCE 8.1, including:

- [New Premium plugin](#new-premium-plugin)
- [Accompanying Premium plugin changes](#accompanying-premium-plugin-changes)
- [Improvements](#improvements)
- [Changes](#changes)
- [Bug fixes](#bug-fixes)
- [Deprecated](#deprecated)
- [Known issues](#known-issues)

## 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](../fullpagehtml/).

## 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](../introduction-to-tiny-spellchecker/).

### Media Optimizer (Powered by Uploadcare)

The TinyMCE 8.1 release includes an accompanying release of the **Media Optimizer (Powered by Uploadcare)** premium plugin.

**Media Optimizer (Powered by Uploadcare)** includes the following fix.

#### Image previews sometimes showed the wrong image from a `srcset`.

In previous versions of the Media 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 **Media Optimizer Powered by Uploadcare** plugin, see: [Media Optimizer (Powered by Uploadcare)](../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](../a11ychecker/).

### 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](../revisionhistory/).

### 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](../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](../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](../tinymce-and-csp/#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](../ai/), or for information on the `content_security_policy` option see [Content Security Policy](../tinymce-and-csp/#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](../suggestededits/).

## 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.

Example: how to use the `getContent` API to retrieve content with different formatting options.
```js
// 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

Example of configuring the editor to use named entity encoding and disable indentation.
```js
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)](https://www.w3.org/WAI/WCAG21/Understanding/content-on-hover-or-focus), 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 the `aria-label` on the body is not used.
- while in other browsers the `aria-label` is applied to the body inside the iframe without setting a `title` 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](../accessibility/#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 `&amp;` encoding are now decoded to `&` before inserting

Previously, when pasting URLs containing encoded ampersands `&amp;` 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

```text
https://example.com/search?&amp;query=example
```
would appear in the editor source as

```text
https://example.com/search?&amp;amp;query=example
```
This caused issues when opening such links, as the URLs became invalid. In 8.1, TinyMCE now automatically decodes `&amp;` 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](../tinymce-and-cors/#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.
