---
title: "Publish your extension"
manual: "TYPO3 Explained"
version: "14.3"
permalink: "https://docs.typo3.org/permalink/t3coreapi:publish-extension@14.3"
source: "ExtensionArchitecture/HowTo/PublishExtension/Index.rst"
rendered: "2026-10-01T15:20:05+00:00"
---

# Publish your extension {#publish-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@14.3)
1.  [Publish your extension on Packagist](https://docs.typo3.org/permalink/t3coreapi:publishextensionpackagist@14.3)
1.  [Publish your extension on TER](https://docs.typo3.org/permalink/t3coreapi:publishextensionter@14.3)
1.  [Publish its documentation in the official TYPO3 documentation](https://docs.typo3.org/permalink/t3coreapi:publishextensiondocumentation@14.3)
1.  [Set up translations](https://docs.typo3.org/permalink/t3coreapi:publishextensiontranslation@14.3) on Crowdin

– *TYPO3 - Inspiring people to share*

## Git {#publishextensiongit}

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@14.3) 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 {#publishextensionpackagist}

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@14.3)

**Advantages:**

-   Extension can be installed in a
    [Composer based](https://docs.typo3.org/m/typo3/tutorial-getting-started/14.3/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 {#publishextensionter}

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@14.3) 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@14.3) registered in TER

**Advantages:**

-   Extension can be installed in a
    [Classic mode installation (no Composer required)](https://docs.typo3.org/permalink/t3coreapi:classic-installation@14.3)
    TYPO3 instance using the module [Extensions](https://docs.typo3.org/permalink/t3coreapi:extension-manager@14.3).
-   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 {#publishextensiondocumentation}

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 {#publishextensiontranslation}

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@14.3).

## Further reading {#publish-extension-further-reading}

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