TYPO3 — The TYPO3 CMS Command Line
Practical guide to the TYPO3 CLI (v13 LTS): manage caches, database, extensions, sites, scheduler and upgrades via vendor/bin/typo3.
TYPO3 is a long-established open-source enterprise CMS for professional websites – and its command line is your most important tool for maintenance, deployment and automation. Through vendor/bin/typo3 (Composer installation) or typo3/sysext/core/bin/typo3 (Classic Mode) you control caches, the database schema, extensions, sites and the scheduler without ever opening the backend. This guide gathers the commands you reach for most in day-to-day work and in CI/CD pipelines – from cache:flush to complete deployment recipes.
Command Paths
vendor/bin/typo3 <command> — Composer-based installation (recommended). Run from the project root.
vendor/bin/typo3 cache:flushtypo3/sysext/core/bin/typo3 <command> — Classic (non-Composer) installation. Run from the document root.
typo3/sysext/core/bin/typo3 cache:flushddev typo3 <command> — DDEV local development environment. Runs inside the DDEV web container.
ddev typo3 cache:flushtypo3 list — List all available console commands.
vendor/bin/typo3 listtypo3 <command> --help — Show detailed help and available options for a specific command.
vendor/bin/typo3 cache:flush --helptypo3 list --format=json — List all commands in JSON format for scripting.
vendor/bin/typo3 list --format=jsonSetup & Installation
typo3 setup — Interactive setup wizard. Creates database, admin user, and base configuration.
vendor/bin/typo3 setuptypo3 setup --driver=mysqli --dbname=<db> --username=<user> --password=<pass> --host=<host> — Non-interactive setup with database credentials.
vendor/bin/typo3 setup --driver=mysqli --dbname=typo3 --username=root --password=root --host=dbtypo3 setup --admin-username=<user> --admin-user-password=<pass> --admin-email=<email> — Setup with admin credentials in non-interactive mode.
vendor/bin/typo3 setup --admin-username=admin --admin-user-password=Password1! --admin-email=admin@example.comtypo3 setup --server-type=apache — Setup with a specific web server type (apache or other).
vendor/bin/typo3 setup --server-type=apacheCache Management
typo3 cache:flush — Flush all caches. The most commonly used TYPO3 command.
vendor/bin/typo3 cache:flushtypo3 cache:flush --group=pages — Flush only the page caches.
vendor/bin/typo3 cache:flush --group=pagestypo3 cache:flush --group=system — Flush only system caches (configuration, DI container, etc.).
vendor/bin/typo3 cache:flush --group=systemtypo3 cache:flush --group=di — Flush the dependency injection container cache.
vendor/bin/typo3 cache:flush --group=ditypo3 cache:warmup — Warm up all caches. Rebuilds cached data for faster first requests.
vendor/bin/typo3 cache:warmuptypo3 cache:warmup --group=system — Warm up only system caches.
vendor/bin/typo3 cache:warmup --group=systemDatabase
typo3 database:updateschema — Update the database schema based on TCA and ext_tables.sql. Interactive by default.
vendor/bin/typo3 database:updateschematypo3 database:updateschema '*.add,*.change' — Only add new fields/tables and change existing fields (safe operations).
vendor/bin/typo3 database:updateschema '*.add,*.change'typo3 database:updateschema '*.drop' — Only drop unused tables and fields (destructive, use with caution).
vendor/bin/typo3 database:updateschema '*.drop'typo3 database:updateschema '*' — Apply all schema changes including adds, changes, and drops.
vendor/bin/typo3 database:updateschema '*'typo3 database:updateschema --dry-run — Preview what schema changes would be applied without executing them.
vendor/bin/typo3 database:updateschema --dry-runtypo3 database:export — Export the database to stdout as SQL. Pipe to a file for backups.
vendor/bin/typo3 database:export > backup.sqltypo3 database:import < <file> — Import a SQL file into the database via stdin.
vendor/bin/typo3 database:import < backup.sqlExtension Management
typo3 extension:list — List all available extensions with their status (active/inactive).
vendor/bin/typo3 extension:listtypo3 extension:setup — Set up all active extensions (run ext_tables.sql, import data, etc.).
vendor/bin/typo3 extension:setuptypo3 extension:setup --extension=<ext_key> — Set up a specific extension.
vendor/bin/typo3 extension:setup --extension=newstypo3 extension:deactivate <ext_key> — Deactivate an extension (Classic Mode only, Composer uses composer require/remove).
typo3/sysext/core/bin/typo3 extension:deactivate indexed_searchtypo3 extension:activate <ext_key> — Activate an extension (Classic Mode only).
typo3/sysext/core/bin/typo3 extension:activate indexed_searchSite Management
typo3 site:list — List all configured sites with their identifiers and base URLs.
vendor/bin/typo3 site:listtypo3 site:show <identifier> — Show the full YAML configuration of a specific site.
vendor/bin/typo3 site:show mainLanguage & Localization
typo3 language:update — Download and update all language packs for installed extensions.
vendor/bin/typo3 language:updatetypo3 language:update <locale> — Update language packs for a specific locale only.
vendor/bin/typo3 language:update deUpgrade Wizards
typo3 upgrade:list — List all available upgrade wizards and their status (done/not done).
vendor/bin/typo3 upgrade:listtypo3 upgrade:run — Run all pending upgrade wizards interactively.
vendor/bin/typo3 upgrade:runtypo3 upgrade:run <identifier> — Run a specific upgrade wizard by its identifier.
vendor/bin/typo3 upgrade:run sysLogChanneltypo3 upgrade:run --confirm=all — Run all pending upgrade wizards non-interactively (auto-confirm).
vendor/bin/typo3 upgrade:run --confirm=alltypo3 upgrade:mark-undone <identifier> — Mark an upgrade wizard as undone so it can be run again.
vendor/bin/typo3 upgrade:mark-undone sysLogChannelReference Index & Cleanup
typo3 referenceindex:update — Update the sys_refindex table. Ensures correct reference tracking between records.
vendor/bin/typo3 referenceindex:updatetypo3 cleanup:deletedrecords — Permanently remove all soft-deleted records from the database.
vendor/bin/typo3 cleanup:deletedrecordstypo3 cleanup:orphanrecords — Remove orphaned records that have no valid parent page.
vendor/bin/typo3 cleanup:orphanrecordstypo3 cleanup:missingfiles — Find sys_file records that reference non-existing files on disk.
vendor/bin/typo3 cleanup:missingfilestypo3 cleanup:lostfiles — Find files in fileadmin that are not referenced in the database.
vendor/bin/typo3 cleanup:lostfilestypo3 cleanup:multiplereferencedfiles — Find files that are referenced by multiple records when they should be unique copies.
vendor/bin/typo3 cleanup:multiplereferencedfilestypo3 cleanup:flexforms — Clean up FlexForm data by removing fields not defined in the data structure.
vendor/bin/typo3 cleanup:flexformstypo3 cleanup:missingrelations — Find and report database relations pointing to non-existing records.
vendor/bin/typo3 cleanup:missingrelationsScheduler & Tasks
typo3 scheduler:run — Execute all due scheduled tasks. Typically called via system cron.
vendor/bin/typo3 scheduler:runtypo3 scheduler:run --task=<uid> — Execute a specific scheduled task by its UID.
vendor/bin/typo3 scheduler:run --task=5typo3 scheduler:run --force — Force execution of tasks regardless of their scheduled time.
vendor/bin/typo3 scheduler:run --forceRedirects (EXT:redirects)
typo3 redirects:checkintegrity — Check all redirects for conflicts (loops, duplicates, clashing with existing pages).
vendor/bin/typo3 redirects:checkintegritytypo3 redirects:cleanup — Clean up redirect records (remove duplicates and invalid entries).
vendor/bin/typo3 redirects:cleanupMailer & Spool
typo3 mailer:spool:send — Send all queued (spooled) emails. Used when TYPO3 is configured to spool mail.
vendor/bin/typo3 mailer:spool:sendtypo3 mailer:spool:send --message-limit=<n> — Send a limited number of spooled emails per run.
vendor/bin/typo3 mailer:spool:send --message-limit=50typo3 mailer:spool:send --time-limit=<seconds> — Stop sending after a time limit to prevent long-running processes.
vendor/bin/typo3 mailer:spool:send --time-limit=30Backend Users & Sessions
typo3 backend:lock — Lock the TYPO3 backend. Prevents all backend logins (maintenance window).
vendor/bin/typo3 backend:locktypo3 backend:unlock — Unlock the TYPO3 backend after maintenance.
vendor/bin/typo3 backend:unlocktypo3 backend:resetpassword <email> — Send a password reset email to a backend user.
vendor/bin/typo3 backend:resetpassword admin@example.comtypo3 backend:createadmin — Interactively create a new backend admin user.
vendor/bin/typo3 backend:createadmintypo3 backend:createadmin --username=<user> --password=<pass> --email=<email> — Create a backend admin user non-interactively.
vendor/bin/typo3 backend:createadmin --username=admin --password=Password1! --email=admin@example.comDeployment & CI/CD Recipes
typo3 cache:flush && typo3 database:updateschema '*.add,*.change' && typo3 upgrade:run --confirm=all && typo3 cache:warmup — Typical deployment pipeline: flush caches, update DB schema (safe only), run upgrades, warm caches.
vendor/bin/typo3 cache:flush && vendor/bin/typo3 database:updateschema '*.add,*.change' && vendor/bin/typo3 upgrade:run --confirm=all && vendor/bin/typo3 cache:warmuptypo3 extension:setup && typo3 language:update && typo3 referenceindex:update — Post-deployment: set up extensions, update translations, rebuild reference index.
vendor/bin/typo3 extension:setup && vendor/bin/typo3 language:update && vendor/bin/typo3 referenceindex:updatetypo3 backend:lock && <deploy> && typo3 backend:unlock — Lock backend during deployment, then unlock when finished.
vendor/bin/typo3 backend:lock && git pull && composer install && vendor/bin/typo3 cache:flush && vendor/bin/typo3 backend:unlock Conclusion
The TYPO3 command line takes care of maintenance and deployment work that would be tedious or outright impossible in the backend. Treat its powerful commands with respect, though: always create a database backup before database:updateschema, before cache:flush on production, and before upgrade:run, and never run *.drop carelessly. Also make sure you run the CLI as the correct web server user so that file permissions and cache directories stay consistent – if the scheduler cron or extension:setup runs as a different user, permission problems are guaranteed. Handled this way, the console becomes the reliable backbone of your TYPO3 automation.
Further Reading
- TYPO3 Documentation – official documentation for core and extensions
- typo3.org – official project site, association and community