Skip to main content

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:

EditormajorVersionminorVersion
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:

CategoryTinyMCEEditor42
Global objectwindow.tinymcewindow.editor42
UI / skin CSS classestox-*editor42-t-*
Content CSS classesmce-*editor42-m-*
DOM attributesdata-mce-*data-editor42-*
Commandsmce*editor42*
Internal ids / markersmce_*, mce:*editor42_*, editor42:*
MIME typex-tinymce/htmlx-editor42/html
Skin foldersskins/ui/tinymce-5skins/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)Editor42Compatibility
window.tinymce, window.tinyMCEwindow.editor42window.tinymce and window.tinyMCE are kept as deprecated aliases
window.tinyMCEPreInitwindow.editor42PreInitrenamed 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-tinymceeditor42-t-editor42
tox-tinymce-auxeditor42-t-editor42-aux
tox-tinymce-inlineeditor42-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:protectededitor42: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.

OptionDefault in TinyMCEDefault in Editor42
noneditable_class'mceNonEditable''editor42NonEditable'
editable_class'mceEditable''editor42Editable'

MIME type

Original (TinyMCE)Editor42
x-tinymce/htmlx-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-darkunchanged
skins/ui/tinymce-5skins/ui/editor42-5
skins/ui/tinymce-5-darkskins/ui/editor42-5-dark
skins/content/default (default content skin)unchanged
skins/content/darkunchanged
skins/content/documentunchanged
skins/content/writerunchanged
skins/content/tinymce-5skins/content/editor42-5
skins/content/tinymce-5-darkskins/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.

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