---
title: "Directory structure"
manual: "TYPO3 Explained"
version: "11.5"
permalink: "https://docs.typo3.org/permalink/t3coreapi:directory-structure@11.5"
source: "ApiOverview/DirectoryStructure/Index.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).

# Directory structure {#directory-structure}

The overview below describes the directory structure in a typical
Composer-based TYPO3 installation. For the structure in a legacy installation
see [Legacy installations: Directory structure](https://docs.typo3.org/permalink/t3coreapi:legacy-directory-structure@11.5).

Also see [Environment](https://docs.typo3.org/permalink/t3coreapi:environment@11.5) for further information, especially how to retrieve
the paths within PHP code.

## Files on project level {#files-on-project-level}

On the top-most level, the project level, you can find the files
`composer.json` which contains requirements for the TYPO3 installation
and the `composer.lock` which contains information about the concrete
installed versions of each package.

## Directories in a typical project {#directories-in-a-typical-project}

-   [config/](https://docs.typo3.org/permalink/t3coreapi:file-config@11.5)
-   [local_packages/](https://docs.typo3.org/permalink/t3coreapi:file-local-packages@11.5)
-   [public/](https://docs.typo3.org/permalink/t3coreapi:file-public@11.5)
-   [var/](https://docs.typo3.org/permalink/t3coreapi:file-var@11.5)
-   [vendor/](https://docs.typo3.org/permalink/t3coreapi:file-vendor@11.5)

### `config/` {#directory-config}

TYPO3 configuration directory. This directory
contains installation-wide configuration.

#### `config/sites/` {#directory-config-sites}

The folder `config/sites` contains
subfolders for each [site configuration](https://docs.typo3.org/permalink/t3coreapi:sitehandling@11.5).

### `local_packages/` {#directory-local-packages}

Each web site which is run on TYPO3 **should**
have a sitepackage, an extension with a special purpose containing all
templates, styles, images, etc. needed for the theme.

It is usually stored locally and then symlinked into the [vendor/](https://docs.typo3.org/permalink/t3coreapi:directory-vendor@11.5)
folder. Many projects also need custom extensions that can be stored here.

The folder for local packages has to be defined in the project's `composer.json`
to be used:

**composer.json**

```json
{
    "name": "myvendor/my-project",
    "repositories": {
        "my_local_packages": {
            "type": "path",
            "url": "local_packages/*"
        }
    },
    "...": "..."
}
```

### `public/` {#directory-public}

We assume here that your web root points to a folder called `public` in
a Composer-based installation as is commonly done.
Otherwise, replace  `public` with the path to your web root.

> [!NOTE]
> If you find a directory called `_assets/` in this directory, you are
> running either [TYPO3 v11 with Composer installers v4](https://docs.typo3.org/permalink/t3coreapi:composer-installer-v4@11.5) or
> [TYPO3 v12](https://docs.typo3.org/m/typo3/reference-coreapi/12.4/en-us/Administration/DirectoryStructure/Index.html#directory-structure) and above.

#### `public/fileadmin/` {#directory-public-fileadmin}

This is a directory in which editors store files. Typically images,
PDFs or video files appear in this directory and/or its subdirectories.

Note this is only the default editor's file storage. This directory
is handled via the [FAL API](https://docs.typo3.org/permalink/t3coreapi:fal@11.5) internally, there may be
further storage locations configured outside of `fileadmin/`, even
pointing to different servers or using 3rd party digital asset management
systems.

Depending on the configuration in
[$GLOBALS\['TYPO3_CONF_VARS'\]\['BE'\]\['fileadminDir'\]](https://docs.typo3.org/permalink/t3coreapi:typo3confvars-be-fileadmindir@11.5)
another folder name than `fileadmin/` can be in use.

> [!NOTE]
> This directory is meant for editors! Integrators should
> *not* locate frontend website layout related files in here: Storing
> HTML templates, logos, Css and similar files used to build the website
> layout in here is considered bad practice. Integrators should locate
> and ship these files within a project specific extension.

#### `public/typo3/` {#directory-public-typo3}

TYPO3 Backend directory. This directory contains most of the files
coming with the TYPO3 Core. The files are arranged logically in the
different system extensions in the `sysext/` directory,
according to the application area of the particular file. For example,
the "`frontend`" extension amongst other things contains the
"TypoScript library", the code for generating the Frontend website. In
each system extension the PHP files are located in the folder
`Classes/`. See [extension files locations](https://docs.typo3.org/permalink/t3coreapi:extension-files-locations@11.5)
for more information on how single extensions are structured.

> [!NOTE]
> If you cannot find the TYPO3 Core source in the directory
> `public/typo3/sysext/` you are running either [TYPO3 v11 with Composer installers v4](https://docs.typo3.org/permalink/t3coreapi:composer-installer-v4@11.5) or
> [TYPO3 v12](https://docs.typo3.org/m/typo3/reference-coreapi/12.4/en-us/Administration/DirectoryStructure/Index.html#directory-structure) and above.

#### `public/typo3conf/` {#directory-public-typo3conf}

Amongst others, this directory contains the files `LocalConfiguration.php` and
`AdditionalConfiguration.php`. See chapter
[Configuration files](https://docs.typo3.org/permalink/t3coreapi:configuration-files@11.5) for details.

##### `public/typo3conf/ext/` {#directory-public-typo3conf-ext}

Directory for third-party and custom TYPO3 extensions. Each subdirectory
contains one extension.

> [!NOTE]
> If you cannot find the directory called `public/typo3conf/ext/` you are
> running either [TYPO3 v11 with Composer installers v4](https://docs.typo3.org/permalink/t3coreapi:composer-installer-v4@11.5) or
> [TYPO3 v12](https://docs.typo3.org/m/typo3/reference-coreapi/12.4/en-us/Administration/DirectoryStructure/Index.html#directory-structure) and above.

#### `public/typo3temp/` {#directory-public-typo3temp}

Directory for temporary files. It contains subdirectories (see below)
for temporary files of extensions and TYPO3 components.

> [!WARNING]
> **Attention**
>
> Although it is a most common understanding in the TYPO3 world that
> `public/typo3temp/` can be removed at any time, it is considered
> bad practice to remove the whole folder. Developers should selectively
> remove folders relevant to the changes made.

##### `public/typo3temp/assets/` {#directory-public-typo3temp-assets}

Directory for temporary files that should be public available
(e.g. generated images).

### `var/` {#directory-var}

Directory for temporary files that contains private files (e.g.
cache and logs files) and should not be publicly available.

> [!WARNING]
> **Attention**
>
> Although it is a most common understanding in the TYPO3 world that
> `var/` can be removed at any time, it is considered
> bad practice to remove the whole folder. Developers should selectively
> remove folders relevant to the changes made.

#### `var/cache/` {#directory-var-cache}

This directory contains internal files needed for the cache.

#### `var/labels/` {#directory-var-labels}

The directory `var/labels/` is for extension
localizations. It contains all downloaded translation files.

This path can be retrieved from the Environment API, see
[getLabelsPath()](https://docs.typo3.org/permalink/t3coreapi:environment-labels-path@11.5).

#### `var/log/` {#directory-var-log}

This directory contains log files like the
TYPO3 log, the deprecations log and logs generated by extensions.

### `vendor/` {#directory-vendor}

In this directory, which lies outside of
the webroot, third-party dependencies that are not TYPO3 extensions are
installed.

If optional [Composer installers v4](https://docs.typo3.org/permalink/t3coreapi:composer-installer-v4@11.5)
is used, TYPO3 extensions are also installed here.

## TYPO3 v11 with Composer installers v4 {#composer-installer-v4}

TYPO3 requires the Composer plugin `typo3/cms-composer-installers` which
takes care of moving extensions to the right folders upon installation:
[public/typo3/](https://docs.typo3.org/permalink/t3coreapi:directory-public-typo3@11.5) and [public/typo3conf/ext/](https://docs.typo3.org/permalink/t3coreapi:directory-public-typo3conf-ext@11.5).
TYPO3 v11 uses version 3 of the Composer plugin by default.

With the new major version 4 extensions are installed always in the
[vendor/](https://docs.typo3.org/permalink/t3coreapi:directory-vendor@11.5) folder. The directory structure of the TYPO3
project is similar to the [directory structure of TYPO3 v12](https://docs.typo3.org/m/typo3/reference-coreapi/12.4/en-us/Administration/DirectoryStructure/Index.html#directory-structure). Most notably public assets provided by
extensions will be available in [public/\_assets/](https://docs.typo3.org/permalink/t3coreapi:directory-public-assets@11.5).

At time of writing the usage of version 4 is available as release candidate and
therefore optional. To use it right now in a TYPO3 v11 installation require
the new version in your project's `composer.json`:

```bash
composer req typo3/cms-composer-installers:"^4.0@rc"
```

> [!NOTE]
> **See also**
>
> -   [TYPO3 and Composer — we've come a long way](https://b13.com/core-insights/typo3-and-composer-weve-come-a-long-way)
> -   [Composer changes for TYPO3 v11 and v12](https://usetypo3.com/composer-changes-for-typo3-v11-and-v12.html)
> -   [Migration to typo3/composer-cms-installers version 4+](https://brotkrueml.dev/migration-typo3-composer-cms-installers-version-4/)

### `public/_assets/` (Composer installer v4) {#directory-public-assets}

This directory includes symlinks to public resources of extensions, as consequence
of this and further structure changes the folder `typo3conf/ext/` is
not created or used anymore.
So all files like CSS, JavaScript, Icons, Fonts, Images, etc. of extensions
which are stored in the folder `Resources/Public/` are not available anymore directly to the extension folders but linked into the directory
`_assets/`.

### `vendor/` (Composer installer v4) {#directory-vendor-installer-v4}

In this directory, which lies outside of
the webroot, all extensions (system, third-party and custom) are installed
as Composer packages.

The directory contains folders for each required vendor and inside each
vendor directory there is a folder with the different project names.

For example the system extension `core` has the complete package name
`typo3/cms-core` and will therefore be installed into the directory
`vendor/typo3/cms-core`. The extension `news`, package name
`georgringer/news` will be installed into the folder
`vendor/georgringer/news`.

Never put or symlink your extensions manually into this directory as it is
managed by Composer and any manual changes are getting lost,
for example on deployment. Local extensions and sitepackages
should be kept in a separate folder outside the web root, for example
[local_packages](https://docs.typo3.org/permalink/t3coreapi:directory-local-packages@11.5).
Upon installation , Composer creates a symlink from local_packages to
`vendor/myvendor/my-extension`.
