# GitHub Crowdin Action > A GitHub action to manage and synchronize localization resources with your Crowdin project URL: https://store.crowdin.com/github-action Category: Development Type: Guide Author: Crowdin [](https://github.com/crowdin/github-action/network/dependents?package_id=UGFja2FnZS0yOTQyNTU3MzA0) [](https://github.com/crowdin/github-action/releases/latest) [](https://github.com/crowdin/github-action/releases/latest) [](https://github.com/crowdin/github-action/graphs/contributors) [](https://github.com/crowdin/github-action/blob/master/LICENSE) ## What does this action do? - Uploads sources to Crowdin. - Uploads translations to Crowdin. - Downloads translations from Crowdin. - Creates a PR with the translations. :::tip[GitHub Action 3.0 is here! 🚀] The v3 action runs on **Crowdin CLI 5** - a TypeScript rewrite powered by Bun, with instant startup, a single self-contained binary, and no bundled Java runtime. Commands and config stay the same, so most workflows carry over unchanged when upgrading from v2: ```yaml - name: Crowdin action uses: crowdin/github-action@v3 ``` A few CLI options changed in 5.0 - [see the breaking changes](https://crowdin.github.io/crowdin-cli/blog/2026/08/26/cli-v5#breaking-changes) if you pass custom arguments. ::: ## Getting started with Crowdin Action
## Usage Set up a workflow in *.github/workflows/crowdin.yml* (or add a job to your existing workflows). Read the [Configuring a workflow](https://help.github.com/en/articles/configuring-a-workflow) article for more details on how to create and set up custom workflows. ```yaml name: Crowdin Action on: push: branches: [ main ] jobs: synchronize-with-crowdin: runs-on: ubuntu-latest steps: - uses: actions/checkout@v7 - name: Crowdin action uses: crowdin/github-action@v3 with: upload_sources: true download_translations: true env: GITHUB_TOKEN: ${{ secrets.GH_TOKEN }} CROWDIN_PROJECT_ID: ${{ secrets.CROWDIN_PROJECT_ID }} CROWDIN_PERSONAL_TOKEN: ${{ secrets.CROWDIN_PERSONAL_TOKEN }} ``` For more details and examples, see the [Official Documentation](https://github.com/crowdin/github-action#readme). ## Supported options The default action is to upload sources. Though, you can set different actions through the “with” options. If you don't want to upload your sources to Crowdin, just set the `upload_sources` option to false. By default sources and translations are being uploaded to the root of your Crowdin project. Still, if you use branches, you can set the preferred source branch. You can also specify what GitHub branch you’d like to download your translations to (default translation branch is `l10n_crowdin_action`). In case you don’t want to download translations from Crowdin (`download_translations: false`), `localization_branch_name` and `create_pull_request` options aren't required either. For more detailed list of supported options, see the [Official Documentation](https://github.com/crowdin/github-action#readme). ### Crowdin configuration file If your workflow file specifies the `config` property, you'll need to add the following to your [Crowdin configuration file](https://support.crowdin.com/configuration-file/) (e.g. `crowdin.yml`): ```yml project_id_env: CROWDIN_PROJECT_ID api_token_env: CROWDIN_PERSONAL_TOKEN ``` When the workflow runs, the real values of your token and project ID will be injected into the config using the secrets in the environment. ## Contributing If you would like to contribute, please read the [Contributing](https://github.com/crowdin/github-action/blob/master/CONTRIBUTING.md) guidelines. ## Seeking Assistance If you find any problems or would like to suggest a feature, please feel free to file an issue on GitHub at [Issues Page](https://github.com/crowdin/github-action/issues).