TYPO3 SEO AUDIT · EXT:SEO · FLUID TEMPLATES · JSON-LD
Free TYPO3 SEO Audit
TYPO3 SEO depends on EXT:seo configuration, per-page meta tag fields in page properties, slug-based URL routing via RouteEnhancer, JSON-LD in Fluid templates (via EXT:schema or custom partials), XML sitemap generation, and PHP enterprise performance. DeepSEOAnalysis audits your live TYPO3 site — validating meta tag output, structured data, sitemap coverage, real CrUX Core Web Vitals, and AI visibility — with TypoScript configuration keys, Fluid template paths, and EXT:schema API references for every finding.
WHAT WE CHECK
6 TYPO3-specific SEO checks
TYPO3 SEO auditing covers EXT:seo configuration and page properties meta tag output, slug-based URL routing and RouteEnhancer configuration, JSON-LD in Fluid templates via EXT:schema, EXT:seo XML sitemap generation, Core Web Vitals from real CrUX data, and AI visibility — with TypoScript keys, Fluid template paths, and EXT:schema API for each finding.
EXT:seo configuration and page properties meta tags
TYPO3\'s built-in SEO is controlled by EXT:seo (included from v9+) and per-page settings in the Backend page properties. The audit checks: EXT:seo installation and meta tag output (whether `title`, `meta name="description"`, canonical `link rel="canonical"`, and robots meta tags are present in the server-rendered HTML); title tag format and uniqueness across crawled pages (TYPO3\'s page title is separate from the navigation title — the page properties SEO tab "Page title" field controls the `title` output; pages without a custom page title fall back to the navigation title, which may be short or non-descriptive); meta description presence and length across crawled pages (EXT:seo outputs the "Description" field from page properties — empty description fields leave no meta description in the `head`, which Google then fills with arbitrary extracted content); canonical URL correctness (EXT:seo auto-generates canonicals based on the page slug and site configuration — multi-site TYPO3 installations need canonical URLs that include the correct domain from Site Configuration); and noindex configuration (the "Index this page" toggle in page properties outputs `meta name="robots" content="noindex,nofollow"` when unchecked — the audit verifies that pages which should be indexed aren\'t accidentally set to noindex, and that pages which shouldn\'t be indexed — like backend login redirects, search result pages, and utility pages — have noindex correctly set).
URL structure and slug configuration
TYPO3\'s URL structure is controlled by the Site Configuration (v10+) and the RouteEnhancer configuration in `config.yaml`. The audit checks: slug-based URL format (TYPO3 v9+ supports SEO-friendly slug-based URLs — pages should resolve at `/category/page-slug` rather than the legacy `?id=123` pattern; the presence of `?id=` parameter URLs in crawled pages indicates either legacy TypoScript page type configuration or a missing RouteEnhancer setup); slug quality across the page tree (slugs are set per-page in the page properties General tab; short, non-descriptive slugs like `/p1` or `/news-123` should be updated to keyword-descriptive paths like `/news/product-launch-announcement`); URL structure depth (TYPO3\'s hierarchical page tree creates URL depth matching the tree depth — deeply nested page trees create long URL paths; the audit checks average URL depth across crawled pages); query parameter handling (TYPO3 extensions generate parameter-based URLs for pagination, filters, and search results — RouteEnhancer configurations convert these to clean paths; the audit detects `?tx_news_pi1[action]=` and similar extension parameter URLs that aren\'t converted to clean routes); and hreflang for multi-language TYPO3 (EXT:seo outputs `link rel="alternate" hreflang` tags for multi-language sites configured in TYPO3\'s Language settings — the audit checks that hreflang URLs are absolute, that each language has a corresponding alternate tag, and that the `x-default` hreflang is present).
JSON-LD structured data in Fluid templates
TYPO3\'s EXT:seo doesn\'t output JSON-LD — structured data requires either EXT:schema (Brotkrueml\'s extension), custom Fluid partials, or TypoScript cObjects. The audit checks JSON-LD presence and validity regardless of implementation method. For news and article pages (typically output via EXT:news): `Article` or `NewsArticle` JSON-LD with `headline` (the news item title), `datePublished` (from `datetime` field in ISO 8601 format), `dateModified` (from `tstamp`), `author` (from EXT:news author field, nested `Person` type with `name` and optionally `url` pointing to the author detail page), `publisher` (site `Organization` with `logo`), and `image`. For FAQPage on content pages with Accordion/FAQ content elements: FAQPage JSON-LD with each accordion item as a `Question`/`Answer` pair — the EXT:schema Fluid view helper: `<schema:type.faqPage><schema:property name="mainEntity" .../>`. For BreadcrumbList: EXT:schema auto-generates from the TYPO3 page tree if configured; custom implementation maps TYPO3\'s `rootline` array to BreadcrumbList `itemListElement` entries. For the site-wide WebSite and Organization schema: add once to the main Fluid layout (`EXT:mysite/Resources/Private/Layouts/Default.html`) so it appears on every page. The audit validates type-correctness of all JSON-LD blocks found in the server-rendered HTTP response.
EXT:seo XML sitemap configuration
EXT:seo provides XML sitemap generation at `/sitemap.xml` (index) and `/sitemap_pages.xml` (pages). The audit checks: sitemap accessibility at the path declared in `robots.txt` (the `Sitemap:` directive must point to the correct domain and path — in multi-site TYPO3 installations, each site needs its own sitemap URL in its robots.txt); page coverage (all publicly accessible, indexed TYPO3 pages should appear in the sitemap — pages with noindex set, hidden pages, pages restricted to frontend user groups, and deleted pages should be excluded; EXT:seo handles this automatically but misconfigured page properties can cause unexpected inclusions or exclusions); `lastmod` population (EXT:seo uses the TYPO3 page `tstamp` field for `lastmod` — verify that content changes update the page\'s modification timestamp); EXT:news sitemap (news items require a separate sitemap configuration in TypoScript — `plugin.tx_seo.settings.xmlSitemap.sitemaps.news` with the PID of the news storage folder — the audit checks whether a news sitemap is configured for sites with EXT:news); and multi-language sitemap coverage (each language in a TYPO3 multi-site setup should have its pages in the sitemap, with the correct language URL format — EXT:seo handles this by including all language overlays of pages with the correct language-specific URL).
Core Web Vitals for TYPO3
TYPO3 is a PHP-rendered CMS — pages are generated server-side, so there\'s no JavaScript rendering gap for main content. Performance varies significantly by extension load, caching configuration, image handling, and hosting tier. **LCP** — TYPO3 pages with large header images use the site\'s image content element or a custom hero Fluid partial as the LCP element. Add `fetchpriority="high"` and `loading="eager"` to the LCP image in the Fluid template: `<f:image image="{file}" fetchpriority="high" loading="eager" />`. Use TYPO3\'s built-in image rendering with WebP format: `<f:image image="{file}" fileExtension="webp" />` (requires GDlib or ImageMagick configured in Install Tool). **INP** — TYPO3 sites with heavy JavaScript extension outputs (jQuery-dependent extensions, sliders, AJAX-heavy content elements) accumulate interaction delay. Use TYPO3\'s TypoScript `page.includeJSFooterlibs` for deferred JavaScript rather than `page.includeJS` (which loads scripts in the `head`). Extensions like EXT:vhs provide defer and async attributes for asset inclusion. **CLS** — TYPO3 image content elements should include explicit width and height attributes; the `f:image` ViewHelper respects the image dimensions — verify the Fluid template outputs `width` and `height` attributes on image tags. **TTFB** — enable TYPO3\'s page cache (standard in production — verify `$GLOBALS[\'TYPO3_CONF_VARS\'][\'SYS\'][\'caching\'][\'cacheConfigurations\'][\'pages\']` is not disabled in LocalConfiguration.php) and Nginx FastCGI cache or Varnish at the reverse proxy layer for page-level caching. The audit uses real CrUX field data for LCP, INP, and CLS.
AI visibility for TYPO3
Add `llms.txt` to the TYPO3 web root (`public/llms.txt` for Composer-based installations, or the DocumentRoot for non-Composer installations). The file should list the site\'s main content sections, key pages, and content types in plain text — accessible at `/llms.txt`. TYPO3\'s `robots.txt` is configurable in TypoScript via `config.absRefPrefix` and the site\'s root `robots.txt` file; verify that GPTBot, ClaudeBot, and PerplexityBot are not blocked — either explicitly by user-agent rules or by a blanket `Disallow: /` that catches all bots. EXT:robots can manage per-page robots directives, but the main robots.txt file controls crawler access globally. For FAQPage JSON-LD on pages with accordion or Q&A content elements: use EXT:schema\'s FAQPage type with `mainEntity` properties for each question/answer pair, or add a custom Fluid partial that iterates over TYPO3 content elements typed as questions. For question-format headings: structure editorial content with H2 subheadings phrased as questions ("What does TYPO3\'s SEO extension include?", "How do I configure canonical URLs in TYPO3?") in pages where the content format supports it. The audit checks all five AI visibility signals — llms.txt, AI crawler access, FAQPage/HowTo JSON-LD in server-rendered HTML, question-heading ratio (≥20%), and content chunkability (avg section ≤400w) — with TYPO3 Fluid template paths, TypoScript configuration keys, and EXT:schema API calls for each fix.
HOW IT WORKS
Audit your TYPO3 site in 60 seconds
- Enter your TYPO3 site URL. No Backend access, TypoScript credentials, or database access needed — the audit crawls the public HTTP output as Googlebot would. Works with all TYPO3 v9–v13 versions, any theme or sitepackage, and with or without third-party SEO extensions installed.
- We crawl and analyse. The engine checks EXT:seo meta tag output across crawled pages, detects slug-based vs legacy parameter-based URL patterns, validates JSON-LD in the raw server HTTP response, checks sitemap URL coverage and EXT:news sitemap configuration, measures CrUX Core Web Vitals from real Chrome field data, and evaluates all five AI visibility signals.
- You get a prioritised report. TYPO3-specific issues first — missing EXT:seo meta tags, page property configuration gaps, missing JSON-LD, RouteEnhancer URL issues, sitemap misconfiguration — then general SEO, each with the TypoScript configuration key, Fluid template file path, EXT:schema API reference, or Backend page properties path for the fix.
FAQ
Questions about the TYPO3 SEO audit
Does TYPO3 have built-in SEO features?
TYPO3 v9+ ships with the EXT:seo system extension which provides core SEO functionality directly in the CMS without additional plugins: per-page meta title and meta description fields in the page properties (under the SEO tab), canonical URL generation, robots meta tag control (noindex, nofollow) per page, sitemap generation at `/sitemap.xml` and `/sitemap_pages.xml`, hreflang tags for multi-language TYPO3 sites, and Open Graph and Twitter Card fields. The EXT:seo extension replaced the older third-party SEO extensions (like cs_seo or pd_seo) for core SEO needs in modern TYPO3 installations. However, JSON-LD structured data is not built into EXT:seo — adding Product, Article, FAQPage, or BreadcrumbList schema requires either a third-party extension (like schema or EXT:schema by Brotkrueml) or custom Fluid template output. The audit validates what\'s present in the server-rendered HTML regardless of whether EXT:seo, a third-party extension, or custom TypoScript provides it.
How do I configure SEO meta tags in TYPO3?
TYPO3 SEO meta tags are configured in two places: (1) Per-page in the Backend: open the page properties for any page, navigate to the SEO tab (available after EXT:seo is installed). Fields: "Page title" (the `title` tag — separate from the navigation title), "Description" (meta description), "Index this page" checkbox (noindex control), "Follow links on this page" checkbox (nofollow control), "Canonical URL" field (for canonical override — leave blank to use the auto-generated canonical), and Open Graph fields. (2) Global defaults via TypoScript: in your site\'s TypoScript setup, the `config.pageTitleSep` and `config.pageTitleFirst` settings control the title separator and position. A common pattern: `config.pageTitleSep = " | "` and `config.pageTitleFirst = 1` to output "Page Title | Site Name". For title suffixes (appending the site name), set in Site Configuration (v10+) under the website title field. For fallback descriptions or meta tags that aren\'t set per-page, TypoScript `page.meta` properties set defaults. The audit checks that EXT:seo is outputting meta tags correctly in the `head` and that per-page title and description fields are populated across crawled pages.
How do I add JSON-LD structured data in TYPO3?
TYPO3\'s EXT:seo does not output JSON-LD structured data. Adding schema markup requires one of three approaches: (1) EXT:schema by Brotkrueml — the most comprehensive TYPO3 schema extension; provides a PHP API and Fluid view helpers for adding type-safe structured data. In Fluid templates: `{schema:type.article(additionalType: "NewsArticle", headline: "{data.title}", datePublished: "{data.crdate -> f:format.date(format: \'Y-m-d\')}")}`. Handles Organization, WebSite, BreadcrumbList, Article, Product, FAQPage, and more. (2) Custom Fluid partial — add a `<f:asset.script identifier="schema" section="HeaderAssets">` block in your Fluid layout with JSON-LD using TYPO3 object variables: `{data.title}` for title, `{data.tstamp -> f:format.date(format: \'Y-m-d\')}` for modification date, `{settings.siteUrl}{page.slug}` for canonical URL. (3) TypoScript TEXT cObject — build JSON-LD output via TypoScript `lib.schemaOrg = COA` using cObject TEXT with `field = title` and `intval = 1` for numeric values. For BreadcrumbList, EXT:schema auto-generates it from the TYPO3 page tree hierarchy. The audit checks that JSON-LD appears in the server-rendered HTTP response (not injected via JavaScript after page load) and validates all required properties.
Is the TYPO3 SEO audit free?
Yes. The complete audit is free with no signup and no email gate. Paid plans add saved history, scheduled monitoring, larger crawls (up to 1,000 pages), and agency workflows.