---
title: "TCAdefaults"
manual: "TypoScript Explained"
version: "main"
permalink: "https://docs.typo3.org/permalink/t3tsref:usertstcadefaults@main"
source: "UserTsconfig/TcaDefaults.rst"
modified: "2026-09-15T19:22:01+00:00"
---

# TCAdefaults

> [!NOTE]
> **New in version 14.0**
>
> The `TCAdefaults` configuration has been extended to support
> type-specific syntax enabling different default values based on the record type.

This allows `default` values of `TCA` fields that are available for various TCA
column types to be set or overridden, for instance for
[type=input](https://docs.typo3.org/m/typo3/reference-tca/main/en-us/ColumnsConfig/Type/Input/Index.html#columns-input-properties-default).

Default values can be set at the type level: `TCAdefaults.[table name].[field].types.[type]`
or field level: `TCAdefaults.[table name].[field]`

This key is also available at the [Page TSconfig level](https://docs.typo3.org/permalink/t3tsref:pagetstcadefaults@main).
The order that default values are set when creating new records in the backend
is this:

1.  Database field default value
1.  Value from `$GLOBALS['TCA']`
1.  Field-level ref:`user TSconfig <userTsTcaDefaults>`
1.  Type-level ref:`user TSconfig <userTsTcaDefaults>`
1.  Field-level `TCAdefaults` configuration
1.  Type-level `TCAdefaults` configuration
1.  Value from "defVals" GET variables
1.  Value from previous record based on
    [useColumnsForDefaultValues](https://docs.typo3.org/m/typo3/reference-tca/main/en-us/Ctrl/Index.html#ctrl-reference-usecolumnsfordefaultvalues)

However, the order for default values used by the
`\TYPO3\CMS\Core\DataHandling\DataHandler` if a particular field is inaccessible
to a user will be:

1.  Value from `$GLOBALS['TCA']`
1.  Value from User TSconfig (these settings)

So these will be the values that are set if the user has no access to the field anyway.

Example:

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

```typoscript
# Show newly created pages by default
TCAdefaults.pages.hidden = 0
```

> [!WARNING]
> **Attention**
>
> This example will not work when creating the page from the context menu
> since this is triggered by the values listed in the `ctrl` section of
> `typo3/sysext/core/Configuration/TCA/pages.php`:
>
> **typo3/sysext/core/Configuration/TCA/pages.php**
>
> ```php
> 'ctrl' => [
>   'useColumnsForDefaultValues' => 'doktype,fe_group,hidden',
>   ...
> ]
> ```

If 'hidden' is in the list, it gets overridden with the "neighbor" record value (see
`\TYPO3\CMS\Backend\Form\FormDataProvider\DatabaseRowInitializeNew::setDefaultsFromNeighborRow`)
and as the value is set - usually to '0' - it will not be overridden
again. To make it work as expected, that value must be overridden. This
can be done for example in the `Configuration/TCA/Overrides` folder
of an extension:

**EXT:site_package/Configuration/TCA/Overrides/pages.php**

```php
$GLOBALS['TCA']['pages']['ctrl']['useColumnsForDefaultValues'] = 'doktype,fe_group';
```

## Example: Set type specific default values in user TSconfig

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

```typoscript
TCAdefaults.tt_content {
    header_layout = 1
    # Use specific default values for certain types
    header_layout.types {
        textmedia = 3
        image = 2
    }
}
```

In this example: if a user with no write access to the field `tt_content.header_layout`
creates a new content element of type `textmedia` the header layout will be set
to 3. If the user does have write access to the field, 3 will be used by default
and they may change it.
