---
title: "The concept of TYPO3 extensions"
manual: "TYPO3 Explained"
version: "12.4"
permalink: "https://docs.typo3.org/permalink/t3coreapi:extension-architecture-introduction@12.4"
source: "ExtensionArchitecture/Concepts/Index.rst"
rendered: "2026-10-21T15:29:37+00:00"
---

> [!WARNING]
> **Attention**
>
> TYPO3 v12 has reached end-of-life as of April 30th 2026 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 v12 here:
> [TYPO3 ELTS](https://typo3.com/services/extended-support-elts).

<a id="extension-concepts"></a>
<a id="extension-further-reading"></a>

# The concept of TYPO3 extensions {#extension-architecture-introduction}

**TYPO3 CMS is built entirely on extensions**. Even the Core consists of modular
"system extensions" — some mandatory, others optional.

Thousands of additional extensions are available via the
[TYPO3 Extension Repository (TER)](https://extensions.typo3.org/),
with many more hosted on platforms like [GitHub](https://github.com/).

For Composer-based setups, TYPO3 can also pull in any PHP package from
[Packagist](https://packagist.org/).

Thanks to its robust Extension API, TYPO3 can be extended in virtually any
direction without compromising backward compatibility.

## Notable system extensions {#extensions-core}

TYPO3’s core functionality is delivered through system extensions.

System extensions have the Composer type `typo3-cms-framework`

In classic mode installations you can find them in directory
`typo3/sysext`.

Below are the most important ones and what they provide:

-   **[`typo3/cms-core`](https://packagist.org/packages/typo3/cms-core)**

    Defines essential database tables (e.g., BE users, groups, pages, sys\_\*) and
    default global configuration
    (`core/Configuration/DefaultConfiguration.php`). It also provides a
    large set of foundational PHP classes.

-   **[`typo3/cms-backend`](https://packagist.org/packages/typo3/cms-backend)**

    Powers the TYPO3 backend interface, including controllers, PHP classes, and
    Fluid templates needed to operate the admin environment.

-   **[`typo3/cms-frontend`](https://packagist.org/packages/typo3/cms-frontend)**

    Handles frontend rendering. Key components include content object classes
    in `frontend/Classes/ContentObject`, which manage output for different
    content types.

-   **[`typo3/cms-extbase`](https://packagist.org/packages/typo3/cms-extbase)**

    TYPO3’s MVC framework. Provides structure for extensions. Works alongside
    Fluid, which handles the "View" layer.

-   **[`typo3/cms-fluid`](https://packagist.org/packages/typo3/cms-fluid)**

    A standalone templating engine and the "View" in TYPO3's MVC. This extension
    includes templating logic and many ViewHelpers
    (`fluid/Classes/ViewHelpers`) to build flexible and reusable templates.

-   **[`typo3/cms-install`](https://packagist.org/packages/typo3/cms-install)**

    Contains the Install Tool, used for system setup, upgrades, and configuration.

You can use the [get.typo3.or Composer helper](https://get.typo3.org/misc/composer/helper)
to compile composer command for minimal, recommended and full TYPO2 installations

## Scope of extensions: System, third-party or custom {#extension-scope}

The files for an extension are installed into a folder named `vendor/`
by Composer. See also [vendor/](https://docs.typo3.org/permalink/t3coreapi:directory-vendor@12.4).

In Classic mode installations they are found in [typo3/sysext/](https://docs.typo3.org/permalink/t3coreapi:classic-directory-typo3-sysext@12.4)
(system extensions) or [typo3conf/ext/](https://docs.typo3.org/permalink/t3coreapi:classic-directory-typo3conf-ext@12.4) (third-party
and custom extensions).

### Third-party and custom extensions {#extension-local}

Third-party and custom  extensions must have the Composer type `typo3-cms-extension`:

**EXT:my_extension/composer.json\`**

```json
{
    "name": "myvendor/my-extension",
    "type": "typo3-cms-extension",
    "...": "..."
}
```

The extension will be installed in the directory
[vendor/](https://docs.typo3.org/permalink/t3coreapi:directory-vendor@12.4) by Composer. Custom extension like sitepackages
or specialized extensions used only in one project can be kept under version
control in a directory like [packages/](https://docs.typo3.org/permalink/t3coreapi:directory-packages@12.4). They are then
symlinked into `vendor/` by Composer.

In Classic mode installations third-party extensions are installed into
[typo3conf/ext/](https://docs.typo3.org/permalink/t3coreapi:classic-directory-typo3conf-ext@12.4). Custom extensions can be kept in a
directory outside of the project root and symlinked into `typo3conf/ext/`
or manually inserted in this directory.

<a id="extension-global"></a>

### System extensions {#extension-system}

System extensions have the Composer type `typo3-cms-framework`:

**EXT:core/composer.json\`**

```json
{
    "name": "typo3/cms-core",
    "type": "typo3-cms-framework",
    "...": "..."
}
```

Composer installs all TYPO3 extensions, including system extensions in the
directory [vendor/](https://docs.typo3.org/permalink/t3coreapi:directory-vendor@12.4).

In Classic mode installations they are installed into
[typo3/sysext/](https://docs.typo3.org/permalink/t3coreapi:classic-directory-typo3-sysext@12.4).
