---
title: "Publish your extension"
manual: "TYPO3 Explained"
version: "main"
permalink: "https://docs.typo3.org/permalink/t3coreapi:publish-extension@main"
source: "ExtensionArchitecture/HowTo/PublishExtension/Index.rst"
modified: "2026-09-15T06:03:46+00:00"
---

# Publish your extension

Follow these steps to release your extension publicly in the TYPO3 world:

1.  [Publish the source code on a public Git hosting platform](https://docs.typo3.org/permalink/t3coreapi:publishextensiongit@main)
1.  [Publish your extension on Packagist](https://docs.typo3.org/permalink/t3coreapi:publishextensionpackagist@main)
1.  [Publish your extension on TER](https://docs.typo3.org/permalink/t3coreapi:publishextensionter@main)
1.  [Publish its documentation in the official TYPO3 documentation](https://docs.typo3.org/permalink/t3coreapi:publishextensiondocumentation@main)
1.  [Set up translations](https://docs.typo3.org/permalink/t3coreapi:publishextensiontranslation@main) on Crowdin

– *TYPO3 - Inspiring people to share*

## Git

Publish your source code on a public Git hosting platform.

The TYPO3 community currently uses GitHub, GitLab and Atlassian Bitbucket to
host the Git repositories of their extensions.

Typically, the [extension key](https://docs.typo3.org/permalink/t3coreapi:extension-key@main) is used for the
repository name, but that is not necessary.

**Advantages:**

-   Contributors can add issues or make pull requests.
-   Documentation can be published in the official TYPO3 documentation
    by using a webhook (see below).

## Packagist

Publish your extension on [Packagist](https://packagist.org/)
\- the main Composer repository.

See their [homepage](https://packagist.org/) for more details
about the publishing process.

**Depends on:**

-   Public Git repository
-   Valid [composer.json](https://docs.typo3.org/permalink/t3coreapi:composer-json@main)

**Advantages:**

-   Extension can be installed in a
    [Composer based](https://docs.typo3.org/m/typo3/tutorial-getting-started/main/en-us/Installation/Install.html#install)
    TYPO3 instance using `composer require`.
-   All advantages of being listed in Packagist, for example

    -   Extension can be updated easily with `composer update`

## TER

Publish your extension in the
[TYPO3 Extension Repository (TER)](https://extensions.typo3.org/)
\- the central storage for public TYPO3 extensions.

See page [Publish your extension in the TER](https://docs.typo3.org/permalink/t3coreapi:publish-to-ter@main) for more information about the
publishing process and check out the TYPO3 community Q&A at
page [FAQ](https://extensions.typo3.org/faq/).

**Depends on:**

-   [Extension key](https://docs.typo3.org/permalink/t3coreapi:extension-key@main) registered in TER

**Advantages:**

-   Extension can be installed in a
    [Classic mode installation (no Composer required)](https://docs.typo3.org/permalink/t3coreapi:classic-installation@main)
    TYPO3 instance using the module [Extensions](https://docs.typo3.org/permalink/t3coreapi:extension-manager@main).
-   All advantages of being listed in the TER, for example:

    -   Easy finding of your extension
    -   Reserved extension key in the TYPO3 world
    -   The community can vote for your extension
    -   Users can subscribe to notifications on new releases
    -   Composer package is announced (optional)
    -   Sponsoring link (optional)
    -   Link to the documentation (optional)
    -   Link to the source code (optional)
    -   Link to the issue tracker (optional)

## Documentation

Publish the documentation of your extension in the
[official TYPO3 documentation](https://docs.typo3.org/).

Please follow the instructions on page [Migration: from Sphinx to PHP-based rendering](https://docs.typo3.org/m/typo3/docs-how-to-document/main/en-us/Howto/Migration/Index.html#migrate) to set up
an appropriate webhook.

**Depends on:**

-   Public Git repository
-   Extension published in TER (optional).
    This is not mandatory, but makes the webhook approval easier for the TYPO3
    Documentation Team.

**Advantages:**

-   Easily find your extension documentation, which serves as a good companion
    for getting started with your extension.

## Crowdin

If you use language labels which should get translated in your extension
(typically in `Resources/Private/Languages`),
you may want to configure the translation setup on [https://crowdin.com](https://crowdin.com).
Crowdin is the official translation server for TYPO3.

This is documented on [Integrate Crowdin in your extension](https://docs.typo3.org/permalink/t3coreapi:crowdin-extension-integration@main).

## Further reading

-   [Publish your extension in the TER](https://docs.typo3.org/permalink/t3coreapi:publish-your-extension-in-the-ter@main)
