---
title: "Features of the TYPO3 system extension \"seo\""
manual: "SEO"
version: "13.4"
permalink: "https://docs.typo3.org/permalink/typo3/cms-seo:features@13.4"
source: "Features/Index.rst"
rendered: "2026-09-19T11:30:27+00:00"
---

# Features of the TYPO3 system extension "seo" {#features}

The TYPO3 system extension [`typo3/cms-seo`](https://packagist.org/packages/typo3/cms-seo) offers multiple tools and
fields that can be used to improve visibility of a TYPO3 site in search engines:

-   [Additional tabs "SEO" and "Social media" in the page properties](https://docs.typo3.org/permalink/typo3/cms-seo:additional-tabs-seo-and-social-media-in-the-page-properties@13.4)
-   [A Dashboard Widget for SEO](https://docs.typo3.org/permalink/typo3/cms-seo:a-dashboard-widget-for-seo@13.4)
-   [XML Sitemap](https://docs.typo3.org/permalink/typo3/cms-seo:xml-sitemap-1@13.4)
-   [Canonical URL](https://docs.typo3.org/permalink/typo3/cms-seo:canonical-url-1@13.4)
-   [SEO page title provider](https://docs.typo3.org/permalink/typo3/cms-seo:seo-page-title-provider-1@13.4)
-   [Additional meta tag handling](https://docs.typo3.org/permalink/typo3/cms-seo:additional-meta-tag-handling@13.4)
-   [Hreflang tags](https://docs.typo3.org/permalink/typo3/cms-seo:hreflang-tags@13.4)

## Additional tabs "SEO" and "Social media" in the page properties {#seo-page-properties}

After [Installation](https://docs.typo3.org/permalink/typo3/cms-seo:installation)
two additional tabs are available in the page properties.

-   **SEO**

    This tab contains additional fields for the
    [title tag](https://docs.typo3.org/permalink/typo3/cms-seo:seo-page-title-provider@13.4)
    in the HTML header, for the description meta tag, for robots instruction, the
    [Canonical URL](https://docs.typo3.org/permalink/typo3/cms-seo:canonical-url@13.4)
    and for priorities used in the
    [XML Sitemap](https://docs.typo3.org/permalink/typo3/cms-seo:xml-sitemap@13.4).

-   **Social media**

    This tab contains additional fields to manage data for the
    Open Graph (Facebook) meta tags and the X / Twitter Cards.

Usage of these additional fields is described in the Editors Tutorial,
[Search engine optimization (SEO) for TYPO3 editors](https://docs.typo3.org/m/typo3/tutorial-editors/13.4/en-us/SearchEngineOptimization/Index.html#seo).

## A Dashboard Widget for SEO {#seo-page-dashboard}

The extension also offers an additional Dashboard widget.
[`typo3/cms-dashboard`](https://packagist.org/packages/typo3/cms-dashboard) needs to be installed. Usage is described in
the Editors Tutorial, chapter
[Dashboard widgets for Search engine optimization (SEO) in TYPO3](https://docs.typo3.org/m/typo3/tutorial-editors/13.4/en-us/SearchEngineOptimization/DashboardWidgets.html#dashboard-widgets).

If your editors have one of the standard user groups "Editor" or "Advanced Editor",
created by the command `typo3 setup:begroups:default` they have permissions to
use the widget.

If you created the use groups manually you users need to have "Dashboard" in
their allowed modules and "Pages missing Meta Description" in the
allowed dashboard widgets list:
[Dashboard manual, permissions of widgets](https://docs.typo3.org/c/typo3/cms-dashboard/13.4/en-us/Configuration/PermissionHandlingOfWidgets.html#permission-handling-of-widgets)

## XML Sitemap {#xml-sitemap}

The extension [`typo3/cms-seo`](https://packagist.org/packages/typo3/cms-seo) comes with the site set
[typo3/seo-sitemap](https://docs.typo3.org/permalink/typo3/cms-seo:configuration-site-sets@13.4),
which you can use to provide an XML sitemap like `https://example.org/sitemap.xml`.

See chapter [XML sitemap](https://docs.typo3.org/permalink/typo3/cms-seo:xmlsitemap@13.4)
for details.

## Canonical URL {#canonical-url}

When [`typo3/cms-seo`](https://packagist.org/packages/typo3/cms-seo) is installed, pages automatically contain a
canonical link tag in their HTML head, unless disabled via TypoScript.

**example output of a canonical link in the head of a TYPO3 page**

```html
<head>

<!-- ... -->

<link rel="canonical" href="https://example.org/somepage"/>
</head>
```

You can use the event [ModifyUrlForCanonicalTagEvent](https://docs.typo3.org/permalink/t3coreapi:modifyurlforcanonicaltagevent)
to provide an alternative canonical URL if needed.

The API of the canonical link is described in
[Canonical API, TYPO3 Explained](https://docs.typo3.org/m/typo3/reference-coreapi/13.4/en-us/ApiOverview/Seo/CanonicalApi.html#canonicalapi).

> [!WARNING]
> If you have other SEO extensions installed that generate canonical links,
> you have to make sure only one is responsible to embed into your frontend
> output.
>
> If both the Core and another extension are generating a canonical link,
> it will result in 2 canonical links which might cause confusion for search
> engines.

## SEO page title provider {#seo-page-title-provider}

While the [Page title API](https://docs.typo3.org/m/typo3/reference-coreapi/13.4/en-us/ApiOverview/Seo/PageTitleApi.html#pagetitle),
providing a `<title>` tag in the HTML head is part of a minimal TYPO3 installation,
[`typo3/cms-seo`](https://packagist.org/packages/typo3/cms-seo) provides an additional field, `seo_title` in the page
properties. The `\TYPO3\CMS\Seo\PageTitle\SeoTitlePageTitleProvider`
provides this title as an alternative title for the `<title>` tag.

The following default TypoScript setup is provided for the page title provider:

```typoscript
config.pageTitleProviders {
    seo {
        provider = TYPO3\CMS\Seo\PageTitle\SeoTitlePageTitleProvider
        before = record
    }
}
```

## Additional meta tag handling {#seo-meta-tag-provider}

While the [MetaTag API](https://docs.typo3.org/m/typo3/reference-coreapi/13.4/en-us/ApiOverview/Seo/MetaTagApi.html#metatagapi)
is part of the minimal TYPO3 Core, the meta tag providers for the description
meta tag commonly used for search engine optimazation, and the social preview
meta tags of Open Graph and Twitter / X are part of [`typo3/cms-seo`](https://packagist.org/packages/typo3/cms-seo).

### Precedence of page properties over TypoScript {#seo-meta-tag-precedence}

Meta tags are set from three different places, in this order:

1.  Plugins rendered within the page content, for example a news detail plugin
1.  The page properties provided by [`typo3/cms-seo`](https://packagist.org/packages/typo3/cms-seo), such as
    **Description**, **Title** (Open Graph) or
    **Card type** (X / Twitter)
1.  The TypoScript setting `page.meta`

A meta tag that has been set already is *not* overwritten by a later one. Since
`page.meta` is evaluated last, a filled page property always wins
over TypoScript. With the page property **Description** filled, the
following setup has no effect:

```typoscript
page.meta.description = Description from TypoScript
```

This makes `page.meta` a fallback that is applied on all pages where
the corresponding page property is empty. A typical use case is inheriting a
value from a parent page:

```typoscript
page.meta.og:title.data = levelfield:-1, og_title, slide
```

To let TypoScript win over the page property, use `replace`:

```typoscript
page.meta.description = Description from TypoScript
page.meta.description.replace = 1
```

An empty value never removes an already generated meta tag, so
`replace` in combination with
[stdWrap](https://docs.typo3.org/permalink/t3tsref:stdwrap) overrides the page
property only if TypoScript actually resolves to a value. The following setup
uses the page property **Abstract** if it is filled, and keeps the value
of the page property **Description** otherwise:

```typoscript
page.meta.description.data = page:abstract
page.meta.description.replace = 1
```

## Hreflang tags {#seo-hreflang}

`hreflang` link-tags are added automatically for multi-language websites
based on the one-tree principle.

The links are based on the site configuration and depend on translations of a page.

`hreflang="x-default"` indicates the link of the current page in the default language.

The value of `hreflang` is set for each language in
**Site Management > Sites** (see [Adding Languages](https://docs.typo3.org/m/typo3/reference-coreapi/13.4/en-us/ApiOverview/SiteHandling/AddLanguages.html#sitehandling-addingLanguages))
