---
title: "Overview of configuration files and syntax"
manual: "TYPO3 Explained"
version: "main"
permalink: "https://docs.typo3.org/permalink/t3coreapi:config-overview@main"
source: "Configuration/ConfigurationOverview.rst"
modified: "2026-09-15T19:16:38+00:00"
---

# Overview of configuration files and syntax

This page introduces TYPO3’s configuration files, syntax, and available
[configuration methods](https://docs.typo3.org/permalink/t3coreapi:classification-config-methods@main). For detailed
information, refer to the relevant chapters or references.

TYPO3 is highly configurable—settings can be adjusted through the backend,
extensions, or configuration files, and extended as needed.

**Table of contents**

-   [Configuration overview: files](https://docs.typo3.org/permalink/t3coreapi:configuration-overview-files@main)
-   [Configuration languages](https://docs.typo3.org/permalink/t3coreapi:configuration-languages@main)
-   [Configuration methods](https://docs.typo3.org/permalink/t3coreapi:configuration-methods@main)

## Configuration overview: files

### Global files

-   **`config/system/settings.php`:**

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

-   **`config/system/additional.php`:**

    Can be used to **override** settings defined in `config/system/settings.php`

-   **`config/system/services.php` and `config/system/services.yaml`:**

    These two files can be used to set up a global service configuration for
    a project that can be used in several project-specific extensions. This
    is explained in detail in the [Dependency Injection: Installation-wide
    configuration](https://docs.typo3.org/permalink/t3coreapi:dependency-injection-installation-wide@main) section.

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

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

### Extension files

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

    Composer configuration, required in Composer-based installations

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

> > [!WARNING]
> > **Deprecated since version 14.2**
> >
> > This file is deprecated and should be removed once dropping TYPO3 v13
> > support. See:
> > [Deprecation: #109438 - ext_tables.php in extensions](https://docs.typo3.org/c/typo3/cms-core/main/en-us/Changelog/14.3/Deprecation-109438-ExtTablesPhpInExtensions.html#deprecation-109438-1774951763)

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

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

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

    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@main),
    [Dashboard widgets](https://docs.typo3.org/c/typo3/cms-dashboard/main/en-us/Configuration/WidgetRegistration.html#register-new-widget),
    [Event listeners](https://docs.typo3.org/permalink/t3coreapi:eventdispatcher@main) and
    [Dependency injection](https://docs.typo3.org/permalink/t3coreapi:dependencyinjection@main).

-   **`Configuration/TCA`**

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

-   **`Configuration/TSconfig/`**

    [TSconfig](https://docs.typo3.org/m/typo3/reference-typoscript/main/en-us/UsingSettingTSconfig/Index.html#typoscript-syntax-using-setting).

-   **`Configuration/TypoScript/`**

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

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

## Configuration languages

TYPO3 uses several languages for configuration:

-   [TypoScript syntax](https://docs.typo3.org/m/typo3/reference-typoscript/main/en-us/Syntax/Index.html#typoscript-syntax) is used for frontend
    TypoScript and backend TypoScript (also called TSconfig). TypoScript has
    a unique syntax, shared by TypoScript and TSconfig. While the syntax is the
    same, their semantics differ.
-   [Yaml](https://docs.typo3.org/permalink/t3coreapi:yaml-syntax@main) is the configuration language of choice for newer
    TYPO3 system extensions like [rte_ckeditor](https://docs.typo3.org/c/typo3/cms-rte-ckeditor/main/en-us/Index.html),
    [form](https://docs.typo3.org/c/typo3/cms-form/main/en-us/Index.html) and the [sites module](https://docs.typo3.org/permalink/t3coreapi:sitehandling@main). It has
    partly replaced TypoScript and TSconfig as configuration languages.
-   XML is used in [FlexForms](https://docs.typo3.org/permalink/t3coreapi:flexforms@main).
-   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.

## Configuration methods

### Backend TypoScript (TSconfig)

TSconfig configures **backend** behavior in TYPO3, such as enabling views or
customizing editing interfaces—without writing PHP. It can be applied at the
page level (Page TSconfig) or to users and groups (User TSconfig).

TSconfig shares the same syntax as Frontend TypoScript, detailed in
[TypoScript syntax](https://docs.typo3.org/m/typo3/reference-typoscript/main/en-us/Syntax/Index.html#typoscript-syntax), but uses entirely different properties.

For full usage, API details, and load order, refer to:

-   [Page TSconfig Reference](https://docs.typo3.org/m/typo3/reference-typoscript/main/en-us/PageTsconfig/Index.html#pagetoplevelobjects)
-   [User TSconfig Reference](https://docs.typo3.org/m/typo3/reference-typoscript/main/en-us/UserTsconfig/Index.html#usertoplevelobjects)

Primarily used by integrators, TSconfig helps tailor the backend
experience for users.

> [!TIP]
> TSconfig can also be used to override the table configuration array TCA,
> which is always defined globally, on a per-site or per-page level.

### Frontend TypoScript

TypoScript (or *TypoScript Templating*) controls frontend rendering in TYPO3. It
uses the syntax described in [TypoScript Explained](https://docs.typo3.org/m/typo3/reference-typoscript/main/en-us/Index.html#start).

While once central to frontend output, much of its role has been replaced by
Fluid. Today, TypoScript is often used to configure plugins, set global options,
or prepare data for Fluid templates.

Still, the [TypoScript Reference](https://docs.typo3.org/m/typo3/reference-typoscript/main/en-us/Index.html#start) remains essential for
integrators.

> [!NOTE]
> **See also**
>
> For getting started:
>
> -   [TypoScript guide](https://docs.typo3.org/m/typo3/reference-typoscript/main/en-us/Guide/Index.html#guide) – Introduction to TypoScript
> -   [TYPO3 site package tutorial](https://docs.typo3.org/m/typo3/tutorial-sitepackage/main/en-us/Index.html#start) – Create a site theme using TypoScript and
>     Fluid
>
> The complete reference:
>
> -   [TypoScript Explained](https://docs.typo3.org/m/typo3/reference-typoscript/main/en-us/Index.html#start)

### Global configuration arrays in PHP

TYPO3 stores global configuration in the `$GLOBALS` PHP array. Key entries:

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

    Defines how backend forms, fields, and data handling behave. It’s essential
    for developers and integrators. Full reference: [TCA Reference](https://docs.typo3.org/m/typo3/reference-tca/main/en-us/Index.html#start).
    See also: [Extending the TCA array](https://docs.typo3.org/permalink/t3coreapi:extending-tca@main).

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

    Stores system-wide settings. Most can be changed in
    **System > Settings > Global Configuration**. Values are saved in
    `config/system/settings.php` and can be overridden via
    `config/system/additional.php`.

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

    A subset of `TYPO3_CONF_VARS`, located in
    `TYPO3_CONF_VARS['EXTENSIONS']`. Used for extension-specific settings.
    Editable in the backend. Use the [API](https://docs.typo3.org/permalink/t3coreapi:extension-options-api@main).

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

    Enable or disable TYPO3 features via
    `TYPO3_CONF_VARS['SYS']['features']`. Toggle in the backend with
    admin rights. Use the [Feature Toggle API](https://docs.typo3.org/permalink/t3coreapi:feature-toggles-api@main).

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

    Stored in `$GLOBALS['TYPO3_USER_SETTINGS']`, they define backend user
    preferences.

> [!TIP]
> **Hint**
>
> View configurations in the backend under **System > Configuration**
> (read-only) or use a debugger. This requires the `lowlevel` system extension.

Only system maintainers can change `TYPO3_CONF_VARS`, extension settings,
and feature toggles in the backend. TCA and settings for the
[Logging](https://docs.typo3.org/permalink/t3coreapi:logging-configuration@main) and [Caching](https://docs.typo3.org/permalink/t3coreapi:caching-configuration@main)
frameworks must be edited manually in
`config/system/additional.php`.

### FlexForm

[FlexForms](https://docs.typo3.org/permalink/t3coreapi:flexforms@main) are used to define options for plugins and content
elements. They allow each element to be configured individually.

Values are editable in the backend when editing the content element. The schema
is defined by the providing extension.

### YAML

Several system extensions use YAML for configuration:

-   [Site](https://docs.typo3.org/permalink/t3coreapi:sitehandling@main) config is stored in
    `config/sites/<identifier>/config.yaml` and editable via the
    **Sites** backend module or directly in the file.
-   [Routing - readable, SEO-friendly URLs](https://docs.typo3.org/permalink/t3coreapi:routing@main) is also defined in the same YAML file.
-   [form](https://docs.typo3.org/c/typo3/cms-form/main/en-us/I/Concepts/Configuration/Index.html#concepts-configuration) provides frontend forms via YAML.
-   [rte_ckeditor](https://docs.typo3.org/c/typo3/cms-rte-ckeditor/main/en-us/Configuration/Index.html#configuration) uses YAML to configure the
    backend rich text editor.
-   [`<extension>/Configuration/Services.yaml`](../ExtensionArchitecture/FileStructure/Configuration/ServicesYaml.md#file-extension-configuration-services-yaml) configures
    [Event listeners](https://docs.typo3.org/permalink/t3coreapi:eventdispatcher@main) and
    [Dependency injection](https://docs.typo3.org/permalink/t3coreapi:dependencyinjection@main).

YAML files can be loaded using the [YamlFileLoader](https://docs.typo3.org/permalink/t3coreapi:yamlfileloader@main).
