---
title: "RTE"
manual: "TypoScript Explained"
version: "main"
permalink: "https://docs.typo3.org/permalink/t3tsref:pagetsrte@main"
source: "PageTsconfig/Rte.rst"
modified: "2026-09-15T06:04:04+00:00"
---

# RTE

The `RTE` prefix key is used for configuration of the Rich Text Editor.
Please refer to the [RTE chapter](https://docs.typo3.org/m/typo3/reference-coreapi/main/en-us/ApiOverview/Rte/Index.html#rte) in Core API document
for more general information on RTE configuration and data processing.

The order in which the configuration for the RTE is loaded is (the first one which
is set will be used, see [example](https://docs.typo3.org/permalink/t3tsref:pagetsrteoverridepreset@main) below):

1.  preset defined for a specific field via page TSconfig
1.  [richtextConfiguration](https://docs.typo3.org/m/typo3/reference-tca/main/en-us/ColumnsConfig/Type/Text/Default/Index.html#columns-text-properties-richtextConfiguration)
    defined for a specific field via TCA
1.  general preset defined via page TSconfig (`RTE.default.preset`)
1.  default (the preset "default", e.g. as defined by EXT:rte_ckeditor or overridden
    in `ext_localconf.php`)

The full property path building is a bit more complex than for other
property segments. The goal is that global options can be set that can
also be overridden in more specific situations:

-   **Configure all RTE for all tables, fields and types:**

    `RTE.default`

-   **Configure RTE for a specific field in a table**

    `RTE.config.[tableName].[fieldName]`

-   **Configure RTE for a specific field in a table for a specific [record type](https://docs.typo3.org/m/typo3/reference-tca/main/en-us/Types/Index.html#types)**

    `RTE.config.[tableName].[fieldName].types.[type]`

Configuring RTE via page TSconfig is general and not specific to a
particular rich-text editor. However, TYPO3 comes with EXT:rte_ckeditor, so this one
will usually be used. This page covers only the general configuration, for
more information about configuring EXT:rte_ckeditor, see the
[rte_ckeditor configuration](https://docs.typo3.org/c/typo3/cms-rte-ckeditor/main/en-us/Configuration/Index.html#configuration).

-   [Examples](https://docs.typo3.org/permalink/t3tsref:examples@main)
-   [Properties](https://docs.typo3.org/permalink/t3tsref:properties@main)

## Examples

### Example: Disable RTE

**EXT:site_package/Configuration/page.tsconfig**

```typoscript
# Disable all RTEs
RTE.default.disabled = 1
```

**EXT:site_package/Configuration/page.tsconfig**

```typoscript
# Disable all RTEs
RTE.default.disabled = 1
# Enable RTE for the tt_content bodytext field only
RTE.config.tt_content.bodytext.disabled = 0
```

**EXT:site_package/Configuration/page.tsconfig**

```typoscript
# Disable all RTEs
RTE.default.disabled = 1
# Enable RTE for the tt_content bodytext field only
RTE.config.tt_content.bodytext.disabled = 0
# But disable RTE for tt_content bodytext again if the record type is "text"
RTE.config.tt_content.bodytext.types.text.disabled = 1
```

### Example: Override preset

Refer to the description of the order above for details of which setting has priority over which.

Summary:

-   Setting the preset via page TSconfig *for a specific field* overrides all,
    else
-   TCA richtextConfiguration (for a specific field) overrides the page TSconfig
    default preset (`RTE.default.preset`)

**EXT:site_package/Configuration/page.tsconfig**

```typoscript
# set a default preset to use as fallback
RTE.default.preset = custom_preset_default

# Override preset for field "description" in table "tt_address"
RTE.config.tt_address.description.preset = custom_preset_fancy
```

## Properties

-   [disabled](https://docs.typo3.org/permalink/t3tsref:disabled@main)
-   [buttons](https://docs.typo3.org/permalink/t3tsref:buttons@main)
-   [proc](https://docs.typo3.org/permalink/t3tsref:proc@main)

> [!NOTE]
> **Changed in version 12.0**
>
> The page TSconfig option `RTE.config.contentsLanguageDirection`
> has no effect anymore. TYPO3 v12 ships CKEditor 5, see [Breaking: #96874 - CKEditor-related plugins and configuration](https://docs.typo3.org/c/typo3/cms-core/main/en-us/Changelog/12.0/Breaking-96874-CKEditor-relatedPluginsAndConfiguration.html#breaking-96874-1664488429).
> CKEditor 5 has no `contentsLangDirection` option, and the last Core code
> setting it was removed with issue
> [#99916](https://forge.typo3.org/issues/99916). The text direction now
> follows the content language of the edited record and is determined
> automatically.

### disabled

-   **disabled**

    -   *Type:* boolean

    If set, the editor is disabled. This option is evaluated in `\TYPO3\CMS\Backend\Form\FormEngine`
    where it determines whether the RTE is rendered or not. Note that a backend user can also ultimately
    disable RTE's in his user settings.

### buttons

#### buttons.link.options.removeItems

-   **buttons.link.options.removeItems**

    -   *Type:* list of strings

    List of tab items to remove from the dialog of the link button.
    Possible tab items are: page, file, url, email, folder, telephone.

    Note: More tabs may be provided by extensions.

#### buttons.link.targetSelector.disabled

-   **buttons.link.targetSelector.disabled**

    -   *Type:* boolean
    -   *Default:* 0

    If set, the selection of link target is removed from the link
    insertion/update dialog.

#### buttons.link.pageIdSelector.enabled

-   **buttons.link.pageIdSelector.enabled**

    -   *Type:* boolean
    -   *Default:* 0

    If set, the specification of a page id, without using the page tree,
    is enabled in the link insertion/update dialog.

    Note: This feature is intended for authors who have to deal with a
    very large page tree. Note that the feature is disabled by default.

#### buttons.link.queryParametersSelector.enabled

-   **buttons.link.queryParametersSelector.enabled**

    -   *Type:* boolean
    -   *Default:* 0

    If set, an additional field is enabbled in the link insertion/update
    dialogue allowing authors to specify query parameters to be added on
    the link

#### buttons.link.relAttribute.enabled

-   **buttons.link.relAttribute.enabled**

    -   *Type:* boolean
    -   *Default:* 0

    If set, an additional field is enabled in the link insertion/update
    dialogue allowing authors to specify a rel attribute to be added to
    the link.

#### buttons.link.properties.class.allowedClasses

-   **buttons.link.properties.class.allowedClasses**

    -   *Type:* list of id-strings

    Classes available in the Insert/Modify link dialogue.

#### buttons.link.properties.class.required

-   **buttons.link.properties.class.required**

    -   *Type:* boolean

    If set, a class must be selected for any link. Therefore, the empty
    option is removed from the class selector.

#### buttons.link.\[ *type* \].properties.class.required

-   **buttons.link.\[type\].properties.class.required**

    -   *Type:* boolean

    If set, a class must be selected for any link of the given type.
    Therefore, the empty option is removed from the class selector.
    Possible types are: page, file, url, email, folder, telephone.

#### buttons.link.properties.target.default

-   **buttons.link.properties.target.default**

    -   *Type:* string

    This sets the default target for new links in the RTE.

#### buttons.link.\[ *type* \].properties.target.default

-   **buttons.link.\[type\].properties.target.default**

    -   *Type:* string

    Specifies a default target for links of the given type.
    Possible types are: page, file, url, mail, spec. More types may be
    provided by extensions.

### proc

The `proc` section allows customization of the server processing of the content, see
the [transformation section](https://docs.typo3.org/m/typo3/reference-coreapi/main/en-us/ApiOverview/Rte/Transformations/Overview.html#transformations-tsconfig) of the RTE chapter in
the core API document for more general information on server processing.

The `proc` properties are in `TYPO3CMSCoreHtmlRteHtmlParser` and
are universal for all RTEs. The main objective of these options is to allow for minor
configuration of the transformations. For instance you may disable the mapping between
`<b>-<strong>` and `<i>-<em>` tags which is done by the `ts_transform` transformation.

Notice how many properties relate to specific transformations only! Also notice that the meta-transformations
`ts_css` imply other transformations.

This means that options limited to `ts_transform` will also work for `ts_css` of course.

#### allowedClasses

-   **proc.allowedClasses**

    -   *Type:* string with comma separated values

    Applies for `ts_transform` and `css_transform` only.

    Direction: From RTE to database, saving a record.

    Allowed general class names when content is stored in database. Could be a list matching the
    number of defined classes you have. Class names are case insensitive.

    This might be a really good idea to do, because when pasting in content from MS word for
    instance there are a lot of `<SPAN>` and `<P>` tags which may have class names in. So by
    setting a list of allowed classes, such foreign class names are removed.

    If a class name is not found in this list, the default is to remove the class.

#### allowTags

-   **proc.allowTags**

    -   *Type:* string with comma separated values

    Applies for `ts_transform` and `css_transform` only.

    Tags to allow. Notice, this list is  *added* to the default list,
    which you see here:

    b,i,u,a,img,br,div,center,pre,figure,figcaption,font,hr,sub,sup,p,strong,em,li,ul,ol,blockquote,strike,span,abbr,acronym,dfn

#### allowTagsOutside

-   **proc.allowTagsOutside**

    -   *Type:* string with comma separated values
    -   *Default:* `address, article, aside, blockquote, footer, header, hr, nav, section, div`

    Applies for `ts_transform` and `css_transform` only.

    Enter tags which are allowed outside of `<P>` and `<DIV>` sections when converted back to database.

##### Example: Allow only hr tags outside of p and div

**EXT:site_package/Configuration/page.tsconfig**

```typoscript
# Allow only hr tags outside of p and div
RTE.default.proc.allowTagsOutside = hr
```

#### blockElementList

-   **proc.blockElementList**

    -   *Type:* string with comma separated values

    Comma-separated list of uppercase tags (e.g. `P,HR`) that overrides the list of HTML
    elements that will be treated as block elements by the RTE transformations.

#### denyTags

-   **proc.denyTags**

    -   *Type:* string with comma separated values

    Applies for `ts_transform` and `css_transform` only.

    Tags from above list to disallow.

#### entryHTMLparser_db

-   **proc.entryHTMLparser_db**

    -   *Type:* boolean / [HTMLparser](https://docs.typo3.org/m/typo3/reference-typoscript/main/en-us/Functions/Htmlparser.html#htmlparser)

    Applies to all kinds of processing.

    Allows to enable / disable the [HTMLparser](https://docs.typo3.org/permalink/t3tsref:htmlparser@main) *before* the
    content is processed with the predefined processors (e.g. ts_images or ts_transform).

#### entryHTMLparser_rte

-   **proc.entryHTMLparser_rte**

    -   *Type:* boolean / [HTMLparser](https://docs.typo3.org/m/typo3/reference-typoscript/main/en-us/Functions/Htmlparser.html#htmlparser)

    Applies to all kinds of processing.

    Allows to enable / disable the [HTMLparser](https://docs.typo3.org/permalink/t3tsref:htmlparser@main) *before* the
    content is processed with the predefined processors (e.g. ts_images or ts_transform).

#### exitHTMLparser_db

-   **proc.exitHTMLparser_db**

    -   *Type:* boolean / [HTMLparser](https://docs.typo3.org/m/typo3/reference-typoscript/main/en-us/Functions/Htmlparser.html#htmlparser)

    Applies to all kinds of processing.

    Allows to enable / disable the [HTMLparser](https://docs.typo3.org/permalink/t3tsref:htmlparser@main) *after* the
    content is processed with the predefined processors (e.g. ts_images or ts_transform).

#### exitHTMLparser_rte

-   **proc.exitHTMLparser_rte**

    -   *Type:* boolean / [HTMLparser](https://docs.typo3.org/m/typo3/reference-typoscript/main/en-us/Functions/Htmlparser.html#htmlparser)

    Applies to all kinds of processing.

    Allows to enable / disable the [HTMLparser](https://docs.typo3.org/permalink/t3tsref:htmlparser@main) *after* the
    content is processed with the predefined processors (e.g. ts_images or ts_transform).

#### HTMLparser_db

-   **proc.HTMLparser_db**

    -   *Type:* [HTMLparser](https://docs.typo3.org/m/typo3/reference-typoscript/main/en-us/Functions/Htmlparser.html#htmlparser)

    Applies for `ts_transform` and `css_transform` only.

    These are additional options to the HTML parser calls which strips of tags when the content is prepared
    *from the RTE to the database*, saving a record. It is possible to configure additional rules like which other
    tags to preserve, which attributes to preserve, which values are allowed as attributes of a certain tag etc.

    For the detailed list of properties, see the [section of the TypoScript reference](https://docs.typo3.org/permalink/t3tsref:htmlparser@main).

    > [!NOTE]
    > This configuration is similar in frontend TypoScript and Page TSconfig.
    > This is why single properties can be looked up in the TypoScript reference.
    >
    > Also note the [HTMLparser](https://docs.typo3.org/permalink/t3tsref:htmlparser@main) options `keepNonMatchedTags`
    > and `htmlSpecialChars` are *not* observed. They are preset internally.

##### Sanitization

An HTML sanitizer is available to sanitize and remove XSS from markup. It
strips tags, attributes and values that are not explicitly allowed.

Sanitization for persisting data is disabled by default and can be enabled
globally by using the corresponding feature flag in the [configuration
files](https://docs.typo3.org/m/typo3/reference-coreapi/main/en-us/Configuration/Typo3ConfVars/Index.html#configuration-files)
`config/system/settings.php` or
`config/system/additional.php`:

```php
$GLOBALS['TYPO3_CONF_VARS']['SYS']['features']['security.backend.htmlSanitizeRte'] = true;
```

It can then be disabled per use case with a custom processing instruction:

**EXT:site_package/Configuration/Processing.yaml**

```yaml
processing:
  allowTags:
    # ...
  HTMLparser_db:
    # ...
    # disable individually per use case
    htmlSanitize: false

    # This is the default configuration,
    # the feature flag has to be enabled
    htmlSanitize:
      # use default builder as configured in
      # $GLOBALS['TYPO3_CONF_VARS']['SYS']['htmlSanitizer']
      build: default
```

#### HTMLparser_rte

-   **proc.HTMLparser_rte**

    -   *Type:* [HTMLparser](https://docs.typo3.org/m/typo3/reference-typoscript/main/en-us/Functions/Htmlparser.html#htmlparser)

    Applies for `ts_transform` and `css_transform` only.

    These are additional options to the HTML parser calls which strips of tags when the content is prepared
    *from the database to the RTE* rendering. It is possible to configure additional rules like which other
    tags to preserve, which attributes to preserve, which values are allowed as attributes of a certain tag etc.

    For the detailed list of properties, see the [section of the TypoScript reference](https://docs.typo3.org/permalink/t3tsref:htmlparser@main).

    > [!NOTE]
    > This configuration is similar in frontend TypoScript and Page TSconfig.
    > This is why single properties can be looked up in the TypoScript reference.
    >
    > Also note the [HTMLparser](https://docs.typo3.org/permalink/t3tsref:htmlparser@main) options `keepNonMatchedTags`
    > and `htmlSpecialChars` are *not* observed. They are preset internally.

#### overruleMode

-   **proc.overruleMode**

    -   *Type:* Comma list of RTE transformations

    This can overrule the RTE transformation set from TCA. Notice, this is a  *comma list* of transformation keys.
