---
title: "Configuration overview"
manual: "TYPO3 Explained"
version: "11.5"
permalink: "https://docs.typo3.org/permalink/t3coreapi:config-overview@11.5"
source: "Configuration/ConfigurationOverview.rst"
rendered: "2026-10-21T15:30:00+00:00"
---

> [!WARNING]
> **Attention**
>
> TYPO3 v11 has reached end-of-life as of October 31th 2024 and
> is no longer being maintained. Use the version switcher on the top
> left of this page to select documentation for a supported version of TYPO3.
>
> Need more time before upgrading?
> You can purchase Extended Long Term Support (ELTS) for TYPO3 v11 here:
> [TYPO3 ELTS](https://typo3.com/services/extended-support-elts).

# Configuration overview {#config-overview}

This page will give you an overview of various configuration files, syntax
languages and [configuration methods](https://docs.typo3.org/permalink/t3coreapi:classification-config-methods@11.5)
in TYPO3. For more extensive information we will refer you to the
respective chapter or reference.

A primary feature of TYPO3 is its configurability. Not only can
it be configured by users with special user privileges in the backend.
Most configuration can also be changed by extensions or
configuration files. Additionally, configuration can be extended by
extensions.

## Configuration overview: files {#configuration-overview-files}

### Global files {#global-files}

-   **`<webroot>/typo3conf/LocalConfiguration.php`:**

    Contains the persisted [$GLOBALS\['TYPO3_CONF_VARS'\]](https://docs.typo3.org/permalink/t3coreapi:typo3confvars@11.5) array.
    Settings configured in the backend by system maintainers in
    **Admin Tools > Settings > Configure Installation-Wide Options**
    are written to this file.

-   **`<webroot>/typo3conf/AdditionalConfiguration.php`:**

    Can be used to **override** settings defined in `LocalConfiguration.php`

-   **`config/sites/<site>/config.yaml`**

    This file is located in `webroot/typo3conf/sites` in non-Composer installations.
    The Site configuration configured in the **SITE MANAGEMENT > Sites**
    backend module is written to this file.

### Extension files {#extension-files}

-   **[composer.json](https://docs.typo3.org/permalink/t3coreapi:composer-json@11.5)**

    Composer configuration, required in Composer-based installations

-   **[ext_emconf.php](https://docs.typo3.org/permalink/t3coreapi:extension-declaration@11.5)**

    Extension declaration, required in legacy installations

-   **[ext_tables.php](https://docs.typo3.org/permalink/t3coreapi:extension-configuration-files@11.5)**

    Various configuration. Is used only for backend or CLI requests or when a valid BE user is authenticated.

-   **[ext_localconf.php](https://docs.typo3.org/permalink/t3coreapi:extension-configuration-files@11.5)**

    Various configuration. Is always included, whether frontend or backend.

-   **[ext_conf_template.txt](https://docs.typo3.org/permalink/t3coreapi:extension-configuration@11.5)**

    Define the "Extension Configuration" settings that can be changed in the backend.

-   **`Configuration/Services.yaml`**

    Can be used to configure [Console commands](https://docs.typo3.org/permalink/t3coreapi:symfony-console-commands@11.5),
    [Dashboard widgets](https://docs.typo3.org/c/typo3/cms-dashboard/11.5/en-us/Configuration/WidgetRegistration.html#register-new-widget),
    [Event listeners](https://docs.typo3.org/permalink/t3coreapi:eventdispatcher@11.5) and
    [Dependency injection](https://docs.typo3.org/permalink/t3coreapi:dependencyinjection@11.5).

-   **`Configuration/TCA`**

    [TCA configuration](https://docs.typo3.org/m/typo3/reference-tca/11.5/en-us/Index.html).

-   **`Configuration/TSconfig/`**

    [TSconfig configuration](https://docs.typo3.org/m/typo3/reference-tsconfig/11.5/en-us/Index.html).

-   **`Configuration/TypoScript/`**

    [TypoScript configuration](https://docs.typo3.org/m/typo3/reference-typoscript/11.5/en-us/Index.html).

> [!TIP]
> **Hint**
>
> The files are explained in more depth in:
>
> -   [File structure](https://docs.typo3.org/permalink/t3coreapi:extension-files-locations@11.5)

## Configuration languages {#configuration-languages}

These are the main languages TYPO3 uses for configuration:

-   [TypoScript syntax](https://docs.typo3.org/permalink/t3coreapi:typoscript-syntax-start@11.5) is used for TypoScript
    and TSconfig.
-   [TypoScript constant syntax](https://docs.typo3.org/m/typo3/reference-typoscript/11.5/en-us/UsingSetting/TheConstantEditor.html#typoscript-syntax-constant-editor) is
    used for Extension Configuration and for defining constants for TypoScript.
-   [Yaml](https://docs.typo3.org/permalink/t3coreapi:yaml-syntax@11.5) is the configuration language of choice for newer
    TYPO3 system extensions like [rte_ckeditor](https://docs.typo3.org/c/typo3/cms-rte-ckeditor/11.5/en-us/Index.html),
    [form](https://docs.typo3.org/c/typo3/cms-form/11.5/en-us/Index.html) and the [sites module](https://docs.typo3.org/permalink/t3coreapi:sitehandling@11.5). It has
    partly replaced TypoScript and TSconfig as configuration languages.
-   XML is used in [Flexforms](https://docs.typo3.org/permalink/t3coreapi:flexforms@11.5).
-   PHP is used for the `$GLOBALS` array which includes TCA
    (`$GLOBALS['TCA']`, Global Configuration (`GLOBALS['TYPO3_CONF_VARS']`),
    User Settings (`$GLOBALS['TYPO3_USER_SETTINGS']`, etc.

What is most important here, is that TypoScript has its own syntax. And the
TypoScript syntax is used for the configuration methods **TypoScript and TSconfig**.
The syntax for both is the same, while the semantics (what variables can be used and
what they mean) are not.

> [!TIP]
> Hence, the term **TypoScript** is used to both define the pure syntax TypoScript
> and the configuration method TypoScript. These are different things. To avoid
> confusion, we will use the terms:
>
> 1.  "TypoScript syntax" or "TypoScript language"
> 1.  "TypoScript configuration method" or "TypoScript Templating"

## Configuration methods {#configuration-methods}

### [TSconfig](https://docs.typo3.org/m/typo3/reference-tsconfig/11.5/en-us/Index.html) {#doc-tsconfig-t3tsconfig-index}

While Frontend TypoScript is used to steer the rendering of the frontend, TSconfig is used
to configure **backend** details for backend users. Using TSconfig it is possible to enable or
disable certain views, change the editing interfaces, and much more. All that without coding a single
line of PHP. `TSconfig` can be set on a page (page TSconfig), as well as a user / group (user TSconfig)
basis.

TSconfig uses the same syntax as Frontend TypoScript, the syntax is outlined in detail
in [TypoScript syntax](https://docs.typo3.org/permalink/t3coreapi:typoscript-syntax-start@11.5). Other than that, TSconfig and Frontend TypoScript
don't have much more in common - they consist of entirely different properties.

A full reference of properties as well as an introduction to explain details configuration usage, API and
load orders can be found in the [TSconfig Reference document](https://docs.typo3.org/m/typo3/reference-tsconfig/11.5/en-us/Index.html). While Developers
should have an eye on this document, it is mostly used as a reference for Integrators who make life as
easy as possible for backend users.

### [TypoScript Templating](https://docs.typo3.org/m/typo3/reference-typoscript/11.5/en-us/Index.html) {#doc-typoscript-templating-t3tsref-index}

TypoScript - or more precisely "TypoScript Templating" - is used in TYPO3 to steer
the frontend rendering (the actual website) of a TYPO3 instance. It is based on the
TypoScript syntax which is outlined in detail in [TypoScript syntax](https://docs.typo3.org/permalink/t3coreapi:typoscript-syntax-start@11.5).

TypoScript Templating is very powerful and has been the backbone of frontend rendering ever since.
However, with the rise of the Fluid templating engine, many parts of Frontend TypoScript are much less
often used. Nowadays, TypoScript in real life projects is often not much more than a way to
set a series of options for plugins, to set some global config options, and to act as a simple
pre processor between database data and Fluid templates.

Still, the [TypoScript Reference](https://docs.typo3.org/m/typo3/reference-typoscript/11.5/en-us/Index.html) manual that goes deep into
the incredible power of TypoScript Templating is daily bread for Integrators.

For an introduction, you may want to read one of the following tutorials:

-   [TypoScript in 45 Minutes](https://docs.typo3.org/m/typo3/tutorial-typoscript-in-45-minutes/11.5/en-us/Index.html) \- Introduction to TypoScript Templating.
-   [TYPO3 Sitepackage Tutorial](https://docs.typo3.org/m/typo3/tutorial-sitepackage/11.5/en-us/Index.html) \- Start a Sitepackage Extension to create a theme
    for your site using TypoScript and Fluid.

> [!NOTE]
> There is some overlap between templating and configuration. TypoScript is
> used mostly for templating, but is still used quite heavily to define
> configuration options for extensions.

### [PHP $GLOBALS](https://docs.typo3.org/permalink/t3coreapi:globals-variables@11.5) {#ref-php-globals-globals-variables}

```none
$GLOBALS
├── $GLOBALS['TCA'] = "TCA"
├── GLOBALS['TYPO3_CONF_VARS'] = "Global configuration"
│   ├── GLOBALS['TYPO3_CONF_VARS']['EXTENSIONS'] = "Extension configuration"
│   └── GLOBALS['TYPO3_CONF_VARS']['SYS']['features'] = "Feature Toggles"
└── $GLOBALS['TYPO3_USER_SETTINGS'] = "User settings"
└── ...
```

The `$GLOBALS` PHP array consists of:

-   **[$GLOBALS\['TCA'\]](https://docs.typo3.org/m/typo3/reference-tca/11.5/en-us/Index.html):**

    TCA is the backbone of database tables displayed in the backend, it configures
    how data is stored if editing records in the backend, how fields are displayed,
    relations to other tables and much more. It is a huge array loaded in almost all
    access contexts. TCA is documented in the [TCA Reference](https://docs.typo3.org/m/typo3/reference-tca/11.5/en-us/Index.html).
    Next to a small introduction, the document forms a complete reference of all
    different TCA options, with bells and whistles. The document is a must-read for
    Developers, partially for Integrators, and is often used as a reference book
    on a daily basis. See [Extending the TCA array](https://docs.typo3.org/permalink/t3coreapi:extending-tca@11.5) about how to extend the TCA in
    extensions.

-   **[$GLOBALS\['TYPO3_CONF_VARS'\]](https://docs.typo3.org/permalink/t3coreapi:typo3confvars@11.5):**

    is used for system wide configuration. Most of the settings can be
    modified in the backend **Admin Tools > Settings > Global Configuration**
    and will be persisted to the file file:`typo3conf/LocalConfiguration.php`.
    The settings can be overridden by using `typo3conf/AdditionalConfiguration.php`.

-   **[Extension Configuration](https://docs.typo3.org/permalink/t3coreapi:extension-options@11.5):**

    is a subset of `$GLOBALS['TYPO3_CONF_VARS']`.
    It is stored in `$GLOBALS['TYPO3_CONF_VARS']['EXTENSIONS']`.
    It is used for configuration specific to one extension and can
    be modified in the backend **Admin Tools > Settings > Extension
    Configuration**. Do not set the values directly, use the
    [API](https://docs.typo3.org/permalink/t3coreapi:extension-options-api@11.5).

-   **[Feature toggles](https://docs.typo3.org/permalink/t3coreapi:feature-toggles@11.5):**

    are used to switch a specific functionality of
    TYPO3 on or off. The values are written to
    `GLOBALS['TYPO3_CONF_VARS']['SYS']['features']`.
    The feature toggles can be switched on or off in the backend
    **Admin Tools > Settings > Feature Toggles** with **Admin**
    privileges. The [API](https://docs.typo3.org/permalink/t3coreapi:feature-toggles-api@11.5) should be used
    to register and read feature toggles.

-   **[User settings](https://docs.typo3.org/permalink/t3coreapi:user-settings@11.5):**

    `$GLOBALS['TYPO3_USER_SETTINGS']` defines configuration for backend users

This is not a complete list of the entire `$GLOBALS` array.

> [!TIP]
> **Hint**
>
> You can find more and view the configuration in the TYPO3 backend
> **System > Configuration** (read only) or by viewing the
> `$GLOBALS` array in a debugger. The backend module is available with
> activated `lowlevel` system extension.

`$GLOBALS['TYPO3_CONF_VARS']`, Extension configuration and feature toggles
can be changed in the backend in **Admin Tools > Settings** by
system maintainers. TCA cannot be modified in the backend.

Configuration of the [Logging Framework](https://docs.typo3.org/permalink/t3coreapi:logging-configuration@11.5) and
[Caching Framework](https://docs.typo3.org/permalink/t3coreapi:caching-configuration@11.5) \- while being a part of the
`$GLOBALS['TYPO3_CONF_VARS']` array - can also not be changed in the
backend. They must be modified in the file `typo3conf/AdditionalConfiguration.php`.

### [Flexform](https://docs.typo3.org/permalink/t3coreapi:flexforms@11.5) {#ref-flexform-flexforms}

Flexforms are used to define some options in plugins and content elements.
With Flexforms, every content element can be configured differently.

Flexform values can be changed while editing content elements in the backend.

A schema defining the values that can be changed in the Flexform is
specified in the extension which supplies the plugin or content element.

### YAML {#config-overview-yaml}

Some system extensions use YAML for configuration:

-   [Site](https://docs.typo3.org/permalink/t3coreapi:sitehandling@11.5) configuration is stored in `<project-root>/config/sites/<identifier>/config.yaml`.
    It can be configured in the backend module "Site" or changed directly in
    the configuration file.
-   [Routing - "Speaking URLs" in TYPO3](https://docs.typo3.org/permalink/t3coreapi:routing@11.5) is also defined in the file `<project-root>/config/sites/<identifier>/config.yaml`.
-   [form](https://docs.typo3.org/c/typo3/cms-form/11.5/en-us/I/Concepts/Configuration/Index.html#concepts-configuration): The Form engine is a system
    extension which supplies Forms to use in the frontend
-   [rte_ckeditor](https://docs.typo3.org/c/typo3/cms-rte-ckeditor/11.5/en-us/Configuration/Index.html#configuration): RTE ckeditor is a system
    extension. It is used to enable rich text editing in the backend.
-   A file `<extension>/Configuration/Services.yaml` can be used to configure
    [Event listeners](https://docs.typo3.org/permalink/t3coreapi:eventdispatcher@11.5) and [Dependency injection](https://docs.typo3.org/permalink/t3coreapi:dependencyinjection@11.5)

There is a [YamlFileLoader](https://docs.typo3.org/permalink/t3coreapi:yamlfileloader@11.5) which can be used to load YAML
files.
