Technical Details & Compatibility
Editor42 releases are built from the editor42 branch of the repository, where TinyMCE-branded identifiers are renamed to their Editor42 equivalents by a preprocessor. This page describes that rename in short first — a handful of rules that let you predict any name — and then gives the complete reference for every namespace, along with the compatibility shims that keep old names working.
Versioning
Editor42 reports its own version through the standard majorVersion / minorVersion fields, so an Editor42 build is easy to tell apart from a genuine TinyMCE:
| Editor | majorVersion | minorVersion |
|---|---|---|
| TinyMCE 6.8.6 | '6' | '8.6' |
| Editor42 42.0.0 | '42' | '0.0' |
API-wise nothing moves: version 42.0.0 carries the TinyMCE 6 API, unchanged. If your integration branches on majorVersion to detect editor capabilities, treat 42 and above as the TinyMCE 6 API level.
How the rebrand works (in short)
The rename is a mechanical, predictable substitution applied to the main source to produce the editor42 branch. At a glance:
| Category | TinyMCE | Editor42 |
|---|---|---|
| Global object | window.tinymce | window.editor42 |
| UI / skin CSS classes | tox-* | editor42-t-* |
| Content CSS classes | mce-* | editor42-m-* |
| DOM attributes | data-mce-* | data-editor42-* |
| Commands | mce* | editor42* |
| Internal ids / markers | mce_*, mce:* | editor42_*, editor42:* |
| MIME type | x-tinymce/html | x-editor42/html |
| Skin folders | skins/ui/tinymce-5 | skins/ui/editor42-5 |
The two CSS namespaces get a one-letter tag — t for the UI toolkit, m for content markup. The rename reaches even the bare tox wrapper class — it becomes editor42-t — and lowercase ids such as mcepastebin (now editor42pastebin). The rename is exhaustive: no tox, mce, data-mce-, or data-ephox- brand token survives in the shipped build. The only old names that linger are the deliberate compatibility aliases (window.tinymce / window.tinyMCE, covered below) and non-brand skin names like oxide that never carried a brand string. The complete reference below covers every case.
Complete rename reference
Original names are shown as they appear in TinyMCE 6.8.6 (and on the main branch); the replacement is what ships on the editor42 branch and in the editor42-dist build.
Global API and compatibility shims
| Original (TinyMCE) | Editor42 | Compatibility |
|---|---|---|
window.tinymce, window.tinyMCE | window.editor42 | window.tinymce and window.tinyMCE are kept as deprecated aliases |
window.tinyMCEPreInit | window.editor42PreInit | renamed only — the editor reads window.editor42PreInit (or window.editor42); the old name is ignored |
window.editor42 is always defined. Unless you opt out, Editor42 also sets window.tinymce and window.tinyMCE to the same object (only when they are not already defined), so existing integrations keep working untouched. To suppress those aliases — for example, to confirm your code no longer depends on them — set the flag before the script loads:
<script>window.EDITOR42_NO_SHIM = true;</script>
<script src="/js/editor42/editor42.min.js"></script>
Editor UI CSS classes (the tox namespace)
These classes style the editor chrome — toolbars, menus, dialogs, buttons. Every tox token is renamed: the tox- prefix becomes editor42-t-, and the bare tox wrapper class becomes editor42-t.
| Original (TinyMCE) | Editor42 |
|---|---|
tox (wrapper on every UI element) | editor42-t |
tox-tinymce | editor42-t-editor42 |
tox-tinymce-aux | editor42-t-editor42-aux |
tox-tinymce-inline | editor42-t-editor42-inline |
tox-* (all other UI classes, e.g. tox-toolbar, tox-menu, tox-dialog, tox-tbtn) | editor42-t-* (e.g. editor42-t-toolbar, editor42-t-menu, editor42-t-dialog, editor42-t-tbtn) |
So the editor's root element, previously class="tox tox-tinymce", now reads class="editor42-t editor42-t-editor42". If you have custom CSS targeting the editor UI, this is the namespace to update — note in particular that a bare .tox selector no longer matches anything; use .editor42-t.
Editable-content CSS classes (the mce namespace)
These classes appear inside the editable area and on content the editor generates.
| Original (TinyMCE) | Editor42 |
|---|---|
mce-* (e.g. mce-item-table, mce-content-body, mce-visual-caret, mce-pastebin) | editor42-m-* (e.g. editor42-m-item-table, editor42-m-content-body, editor42-m-visual-caret, editor42-m-pastebin) |
DOM data attributes
| Original (TinyMCE) | Editor42 |
|---|---|
data-mce-* (e.g. data-mce-href, data-mce-type, data-mce-bogus, data-mce-selected) | data-editor42-* (e.g. data-editor42-href, data-editor42-type, data-editor42-bogus, data-editor42-selected) |
data-ephox-* (e.g. data-ephox-embed-iri in media embeds) | data-editor42-* (e.g. data-editor42-embed-iri) |
Editor commands
Commands passed to editor.execCommand(...). Every mce-prefixed command — core and plugin — is renamed; command names are matched case-insensitively.
| Original (TinyMCE) | Editor42 |
|---|---|
mceInsertContent, mceLink, mceInsertLink, mceToggleFormat, mceFocus, … | editor42InsertContent, editor42Link, editor42InsertLink, editor42ToggleFormat, editor42Focus, … |
Internal markers and ids
Identifiers the editor generates while editing. You normally do not reference these directly, but they show up if you inspect the DOM or serialized content.
| Original (TinyMCE) | Editor42 |
|---|---|
mce_* (auto-generated ids, e.g. mce_marker, mce_textpattern, mce_host) | editor42_* (e.g. editor42_marker, editor42_textpattern, editor42_host) |
_mce_caret | _editor42_caret |
mce:protected | editor42:protected |
mcepastebin (paste-bin element id) | editor42pastebin |
mceclip (pasted-image id prefix: mceclip0, mceclip1, …) | editor42clip (editor42clip0, editor42clip1, …) |
Option defaults that embed class names
A few configuration options default to class names that follow the rename. If you set these options explicitly you control the value; the table shows only the defaults.
| Option | Default in TinyMCE | Default in Editor42 |
|---|---|---|
noneditable_class | 'mceNonEditable' | 'editor42NonEditable' |
editable_class | 'mceEditable' | 'editor42Editable' |
MIME type
| Original (TinyMCE) | Editor42 |
|---|---|
x-tinymce/html | x-editor42/html |
Skin directories
Editor42 ships the same skins as TinyMCE 6, at the same paths — the default skin path is unchanged, so the editor still loads oxide (UI) and default (content) exactly where it always did, and an integration that doesn't opt into another skin needs no changes. The only renamed skins are the ones suffixed -5: these are TinyMCE 5 nostalgia skins that recreate the TinyMCE 5 look, so their tinymce brand string becomes editor42 like everywhere else.
| Original (TinyMCE) | Editor42 |
|---|---|
skins/ui/oxide (default UI skin) | unchanged |
skins/ui/oxide-dark | unchanged |
skins/ui/tinymce-5 | skins/ui/editor42-5 |
skins/ui/tinymce-5-dark | skins/ui/editor42-5-dark |
skins/content/default (default content skin) | unchanged |
skins/content/dark | unchanged |
skins/content/document | unchanged |
skins/content/writer | unchanged |
skins/content/tinymce-5 | skins/content/editor42-5 |
skins/content/tinymce-5-dark | skins/content/editor42-5-dark |
Identifiers intentionally left unchanged
The rename is surgical: a couple of identifiers are left exactly as they were because they carry no brand string — so behavior that depends on them is unaffected.
| Identifier | Why it stays |
|---|---|
oxide, oxide-dark (skin names) | Not brand-bearing |
The editor42 branch on Editor42 GitHub ships the rebranded source. The main branch contains the full source with all functional changes but without these identifier replacements. The editor42-dist repository provides pre-built distribution files with the same structure.
The main branch: a faithful TinyMCE baseline
The main branch carries the complete Editor42 source with every functional and security fix applied — and nothing else touched. None of the rebranding above reaches it: classes, variables, hooks, MIME types, commands, and DOM attributes all keep their original TinyMCE names. There are no breaking changes of any kind. Apart from the fixes themselves, main is API-for-API and behavior-for-behavior the same TinyMCE 6.8.6 it descends from.
That fidelity makes main the branch to reach for in the unlikely event that the editor42 build ever behaves unexpectedly. Both builds expose both globals — window.tinymce / window.tinyMCE and window.editor42 — as aliases of the same editor, so your integration runs unchanged whichever build it loads. Swap one build for the other, leave the rest of your code as-is, and compare: if the behavior differs, the cause sits in the rebranding layer; if it doesn't, it lives in the editor logic both builds share.
See also
- Motivation & Goals — why an MIT-licensed, security-maintained fork exists.
- Auditing Editor42 — how to confirm the rebrand changes nothing but brand strings.
- Security — every fixed CVE and how to report a vulnerability.