# TinyMCE review: the familiar editor, after two licence changes

*Source: https://www.editorstack.cc/libraries/tinymce — last updated 2026-09-17. Licensed CC BY 4.0 with attribution to EditorStack.*


## Summary

- TinyMCE is a finished WYSIWYG editor with menus, a toolbar and first-party React, Vue and Angular integrations. Its npm licence field was MIT through 6.x, GPL-2.0-or-later from 7.0.0, and from 8.3.0 points to a licence file offering GPL-2.0-or-later or Tiny's self-hosted commercial terms.
- Self-hosted TinyMCE 8 must be given a valid licence key or the editor is disabled: 'gpl' for GPL use, a commercial key otherwise. Cloud plans start with 1,000 free editor loads a month; Essential is vendor-published at $79 per month paid annually.
- We measured tinymce 8.9.1 at 393.9 kB gzip for the core, icons, Silver theme and DOM model with no plugins, and our benchmark application needed 14 lines of code.

## Quick facts

| Fact | Value |
| --- | --- |
| Type | library |
| Licence | GPL-2.0-or-later OR commercial |
| First release | 2014-05 |
| Language | TypeScript |
| Frameworks | Any (framework-agnostic) |
| SSR support | Unverified |
| Bundle (min+gzip) | 393.9 kB gzip |
| Pricing | from $79/mo |
| npm weekly downloads | 1,025,945 |
| GitHub stars | 16,298 |
| Latest version | 8.9.1 |
| Last verified | 2026-09-17 |
| Drag & drop canvas | Unverified |
| Responsive breakpoints | No |
| Visual style manager | No |
| Custom components | Unverified |
| Data binding | No |
| E-commerce blocks | No |
| Email HTML export | Unverified |
| AI generation | Via plugin |
| Editor i18n | Yes |
| White label | Unverified |
| Self-hosted | Yes |

## What TinyMCE is, and who it is for

TinyMCE is the editor a great many people picture when they hear "rich-text editor": a menu bar, a
formatting toolbar, and an editing area that behaves like a word processor. It installs as a complete
product with first-party integrations for React, Vue and Angular, and it has been on npm since
May 2014.

It suits the same products as [CKEditor 5](/libraries/ckeditor) — CMS body fields, LMS authoring,
support-desk replies, internal tools — and competes with it directly; the
[head-to-head](/compare/ckeditor-vs-tinymce) covers where each wins. It is the opposite of a headless
framework such as [Tiptap](/libraries/tiptap), where the toolbar is yours to build.

The reason most teams read a TinyMCE review in 2026 is not features. It is the licence.

## The licence history, from the registry

The npm registry records the licence each version was published under, which makes the history
checkable rather than anecdotal:

- **6.x:** MIT, through 6.8.6.
- **7.0.0 (March 2024):** GPL-2.0-or-later.
- **8.3.0 (December 2025) onwards:** "SEE LICENSE IN license.md", where the file offers
  GPL-2.0-or-later or the Tiny Self-Hosted License Agreement.

TinyMCE 7 introduced a `license_key` option so that developers make "a conscious decision" between
the GPL and a commercial licence. TinyMCE 8 hardens it: in a self-hosted environment "a license key
must be provided and it must be valid. Otherwise, the editor will be disabled." GPL use sets
`license_key: 'gpl'`; commercial self-hosted use needs a commercial key.

For a closed-source product that adopted TinyMCE under MIT, upgrading past 6.x is a licensing
decision, not a dependency bump. That is the problem our
[TinyMCE alternatives guide](/alternatives/tinymce) is written for.

## Getting started

The file from our benchmark application, unedited. Fourteen lines, most of them imports: the bundling
guide requires the global first, then icons, theme, model and skins.

```js
import tinymce from 'tinymce';
import 'tinymce/icons/default/icons.min.js';
import 'tinymce/themes/silver/theme.min.js';
import 'tinymce/models/dom/model.min.js';
import 'tinymce/skins/ui/oxide/skin.js';
import 'tinymce/skins/ui/oxide/content.js';
import 'tinymce/skins/content/default/content.js';

tinymce.init({
  target: document.getElementById('app'),
  license_key: 'gpl',
  skin_url: 'default',
  content_css: 'default',
  setup: (editor) => editor.on('init', () => editor.setContent('<h1>Hello editor</h1><p>Type here.</p>')),
});
```

![The TinyMCE benchmark application showing a menu bar, formatting toolbar, a 'Get all features' button, an editable heading and paragraph, and a status bar](https://www.editorstack.cc/screenshots/tinymce-minimal.png)

*TinyMCE 8.9.1 from the code above, screenshotted from our own build with the GPL key. The menu bar, toolbar and status bar are defaults; so are the "Get all features" button and the TinyMCE credit in the status bar.*

What the screenshot shows matters for white-label products: the default GPL build we ran displays a
"Get all features" upsell button and a TinyMCE credit. We did not verify which configuration or
licence removes them, so the dataset records white-label as unverified.

There is no published time-to-editor figure for TinyMCE yet. The application ran, but on a different
machine from the published [time to first editor benchmark](/research/time-to-first-editor-benchmark),
and we do not mix timings from two machines in one table.

## Strengths

**Nothing to design.** The menu bar, toolbar and status bar in our screenshot are defaults we did not
configure. A team can ship a capable editor the day it installs one, and add plugins from there.

**First-party framework integrations.** `@tinymce/tinymce-react`, `@tinymce/tinymce-vue` and
`@tinymce/tinymce-angular` are published by the vendor under MIT.

**A documented plugin model.** The documentation covers writing your own plugins, so product-specific
buttons and behaviours do not require forking the editor.

**Localisation options.** Premium language packs for paid deployments and community packs maintained
through Crowdin.

**A cloud option.** Loading from Tiny Cloud needs no self-hosted licence key, which is a genuine
simplification for teams that accept a vendor-hosted script.

## Limitations

**The licence is no longer permissive.** GPL-2.0-or-later or commercial terms, with a mandatory key
in self-hosted TinyMCE 8. MIT-era assumptions do not survive the upgrade.

**The heaviest bundle we measured.** 393.9 kB gzip for the core, icons, theme and model, before any
plugin — heavier than [CKEditor 5](/libraries/ckeditor) at 161.2 kB and more than six times
[Quill](/libraries/quill) at 58.7 kB. Lazy-load it on the editing route.

**Paid features sit where products grow.** The current TinyMCE AI plugin is "only available for paid
TinyMCE subscriptions", and Suggested Edits and Revision History are priced add-ons.

**Branding in the default GPL build.** The upsell button and credit we saw are a problem for
white-label products until you have confirmed how to remove them under your licence.

**Stored content is HTML.** Right for many products, wrong for block-structured content models.

## Pricing

Vendor-published on the day we checked. Free: cloud-hosted, 1,000 editor loads per month, then $40
per 1,000. Essential: $79 per month paid annually, 5,000 loads, commercial licence. Professional: $145
per month paid annually, 20,000 loads. Enterprise: quoted. Self-hosting under GPL-2.0-or-later is free
of licence fees. We could not read monthly-billing prices from the page, so none are recorded.

For the alternatives by licence, see [CKEditor 5 vs TinyMCE](/compare/ckeditor-vs-tinymce), the
[TinyMCE alternatives guide](/alternatives/tinymce) and the
[rich-text editor comparison](/categories/rich-text).

## Who it fits, and who it does not

**Good fit**

- Replacing a textarea with a familiar word-processor interface — menus, toolbar, tables — without designing any editor UI
- Products already on TinyMCE that are GPL-compatible or can budget for a commercial licence, where migrating content would cost more than the licence
- Teams that want first-party React, Vue and Angular integrations maintained by the same vendor as the editor

**Poor fit**

- Closed-source products still on TinyMCE 6 expecting MIT terms on upgrade, since versions 7 and 8 are GPL or commercial
- Bundle-sensitive routes: the self-hosted core, theme, model and icons measured the heaviest JavaScript in our benchmark
- Structured, block-based content models where stored HTML is a liability rather than the goal


## TinyMCE against its nearest neighbours

| Product | Type | Licence | Frameworks | Bundle (min+gzip) | Price from | Self-hosted | White label | Score |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| [TinyMCE](https://www.editorstack.cc/libraries/tinymce) | library | GPL-2.0-or-later OR commercial | Any (framework-agnostic) | 393.9 kB gzip | from $79/mo | Yes | Unverified | not scored |
| [CKEditor 5](https://www.editorstack.cc/libraries/ckeditor) | library | GPL-2.0-or-later OR commercial | Any (framework-agnostic) | 161.2 kB gzip | from $144/mo | Yes | Unverified | not scored |
| [Editor.js](https://www.editorstack.cc/libraries/editorjs) | library | Apache-2.0 | Any (framework-agnostic) | 64.3 kB gzip | Free (open source) | Yes | Yes | 7.7 |
| [Quill](https://www.editorstack.cc/libraries/quill) | library | BSD-3-Clause | Any (framework-agnostic) | 58.7 kB gzip | Free (open source) | Yes | Yes | not scored |


## Our scores

Not scored. We publish scores only for products we have run hands-on; see the methodology page.


## Alternatives

- [TinyMCE vs CKEditor 5](https://www.editorstack.cc/compare/ckeditor-vs-tinymce)


## Frequently asked questions

### Is TinyMCE still free?

Self-hosting is free under GPL-2.0-or-later with license_key set to 'gpl', which obliges your product to comply with the GPL. Closed-source self-hosted use needs a commercial licence key. The cloud Free plan includes 1,000 editor loads per month.

### When did TinyMCE's licence change?

According to the npm registry, the licence field reads MIT for the 6.8.x releases and GPL-2.0-or-later from 7.0.0, published in March 2024. From 8.3.0, published in December 2025, it points to a licence file offering GPL-2.0-or-later or the Tiny Self-Hosted License Agreement.

### How much does TinyMCE cost?

Vendor-published: Essential at $79 per month and Professional at $145 per month, both paid annually, with 5,000 and 20,000 editor loads respectively; Enterprise is quoted. Monthly-billing prices were not visible in the page source we could read, so we do not quote them.

### How big is TinyMCE?

We measured tinymce 8.9.1 at 393.9 kB gzip (1,130.2 kB raw) for the core plus the default icons, Silver theme and DOM model that the bundling guide requires, with no plugins and the skin modules excluded. That is the heaviest figure in our bundle benchmark.

### What should I use instead of TinyMCE?

It depends on what the licence change broke. Our TinyMCE alternatives guide sorts the options into finished editors, MIT or MPL frameworks, and the BSD-licensed Quill.


## Sources

1. [npm registry metadata for tinymce (first publish May 2014; licence field MIT for 6.8.x, GPL-2.0-or-later from 7.0.0, 'SEE LICENSE IN license.md' from 8.3.0; latest 8.9.1)](https://registry.npmjs.org/tinymce) — accessed 2026-09-17
2. [tinymce 8.9.1 license.md (GPL-2.0-or-later or the Tiny Self-Hosted License Agreement)](https://cdn.jsdelivr.net/npm/tinymce@8.9.1/license.md) — accessed 2026-09-17
3. [tinymce 7.0.0 license.md (GPL-2.0-or-later)](https://cdn.jsdelivr.net/npm/tinymce@7.0.0/license.md) — accessed 2026-09-17
4. [TinyMCE licence key documentation (self-hosted TinyMCE 8 requires a valid key; 'gpl' for GPL use)](https://www.tiny.cloud/docs/tinymce/latest/license-key/) — accessed 2026-09-17
5. [TinyMCE pricing page (vendor-published Free, Essential, Professional and Enterprise plans)](https://www.tiny.cloud/pricing/) — accessed 2026-09-17
6. [Bundling TinyMCE with Vite (required icons, theme, model and skin imports)](https://www.tiny.cloud/docs/tinymce/latest/vite-es6-npm/) — accessed 2026-09-17
7. [TinyMCE AI plugin (only available for paid subscriptions)](https://www.tiny.cloud/docs/tinymce/latest/tinymceai/) — accessed 2026-09-17
8. [TinyMCE UI localisation (premium and community language packs)](https://www.tiny.cloud/docs/tinymce/latest/ui-localization/) — accessed 2026-09-17
9. [TinyMCE documentation: creating a plugin](https://www.tiny.cloud/docs/tinymce/latest/creating-a-plugin/) — accessed 2026-09-17
10. [npm registry metadata for @tinymce/tinymce-react, published by tinymce (also checked: tinymce-vue, tinymce-angular)](https://registry.npmjs.org/@tinymce/tinymce-react) — accessed 2026-09-17
