ReadyEditor ReadyEditor
docs/toolbar-presets.md

Toolbar Customization

ReadyEditor's toolbar is built from plugins. Each plugin registers its buttons into a toolbar group. You have several ways to control what appears.

Presets

Set data-toolbar-preset on the loader tag:

Preset Includes
full (default) All entitled plugins
basic formatting_basic, formatting_blocks, lists, link, media, view_source, wordcount
minimal formatting_basic, lists, link

Suppress specific plugins

Use data-disable-plugins to remove plugins from whatever set is loaded:

<script
  src="https://cdn.readyeditor.io/releases/<version>/js/readyeditor.loader.min.js"
  data-api-key="rk_..."
  data-selector=".my-editor"
  data-load-css="1"
  data-plugins="auto"
  data-disable-plugins="icons,readability,bootstrap,attrs,tools_emoji"
  data-require-sri="1"
></script>

Load a specific subset

<script
  ...
  data-plugins="formatting_basic,formatting_blocks,lists,link,view_source"
></script>

Filter by toolbar group

Allow only certain groups:

data-toolbar-groups="Formatting,Insert"

Hide certain groups:

data-toolbar-hide-groups="Tools,View"

Force specific groups into the "More" dropdown:

data-toolbar-overflow-groups="Tools,View"

This pins the named groups into the overflow menu unconditionally — regardless of the available toolbar width. Other groups may still flow into overflow automatically when the toolbar is too narrow. To force nothing into overflow (show everything), simply omit the attribute (or pass an empty string).

Example — always keep "Tools" and "View" in the More menu:

<script
  src="https://cdn.readyeditor.io/releases/<version>/js/readyeditor.loader.min.js"
  data-api-key="rk_..."
  data-selector=".my-editor"
  data-load-css="1"
  data-plugins="auto"
  data-toolbar-overflow-groups="Tools,View"
></script>

Or via the JS API:

window.ReadyEditorLoader.init({
  apiKey: 'YOUR_API_KEY',
  selector: '.my-editor',
  ui: { overflowGroups: 'Tools,View' },
});

Disable overflow entirely

Set data-toolbar-overflow="off" to turn the overflow mechanism off altogether. The toolbar will wrap to multiple rows on narrow widths instead of hiding items behind the "More" button.

<script
  src="https://cdn.readyeditor.io/releases/<version>/js/readyeditor.loader.min.js"
  data-api-key="rk_..."
  data-selector=".my-editor"
  data-load-css="1"
  data-plugins="auto"
  data-toolbar-overflow="off"
></script>

Or via the JS API:

window.ReadyEditorLoader.init({
  apiKey: 'YOUR_API_KEY',
  selector: '.my-editor',
  ui: { overflow: false },
});

Tip: data-toolbar-overflow="off" is the simplest way to ensure nothing ever ends up in the "More" menu. The toolbar will expand to as many rows as needed to fit all groups.

Available groups: Formatting, Insert, Tools, View, Other

Server-side enforcement

data-disable-plugins is a client-side convenience. A user who inspects the loader tag can remove the attribute. For stronger enforcement, disable plugins at the project level in the dashboard — the init endpoint will exclude them from features regardless of what the loader requests.

Registering plugin metadata (custom plugins)

When writing a custom plugin, you can declare its toolbar group and sort order:

ReadyEditorUI.registerPlugin(
  { name: 'myPlugin', group: 'Insert', order: 50 },
  function myPlugin(ctx) {
    ctx.utils.addButton(ctx.toolbar, 'My Button', 'Tooltip', function() {
      ctx.instance.insertHTML('<span>inserted</span>');
    });
  }
);

If group is omitted, the UI core infers a group from the plugin name. If order is omitted it defaults to 0.