Forgejo vs Gitea
Forgejo and Gitea look almost identical when you open them. Same layout, same workflow, largely the same API. That is not a coincidence: Forgejo began as a fork of Gitea in December 2022, and for over a year it tracked Gitea closely.
So the question is rarely "which has the feature I need". It is "which project do I want to depend on for the next five years", and that is a question about governance, licensing and who decides what happens next.
If you are also weighing GitHub or GitLab, the four-way comparison covers those. This page is only about the two forges that share a codebase.
At a glance
| Forgejo | Gitea | |
|---|---|---|
| Started | December 2022, fork of Gitea | 2016, fork of Gogs |
| Steward | Codeberg e.V., a democratic non-profit | Gitea Ltd, a for-profit company |
| License | GPL v3+ since v9.0 (MIT up to v8.0) | MIT |
| Contributor terms | No copyright assignment | Copyright assignment required |
| Commercial model | No proprietary edition | Open core, with paid editions |
| Security advisories | Advance notice to everyone | Advance notice to customers |
| Federation | In active development | Not being worked on |
| Built on | Forgejo and Forgejo Actions | GitHub and GitHub Actions |
| Migration between them | Direct, via the upgrade path | Direct, via the upgrade path |
Where both projects come from
Gogs started in 2014 as a lightweight self-hosted Git service written in Go. It found an audience because it ran comfortably on hardware that GitLab could not.
Gitea forked from Gogs in 2016, after contributors concluded that the Gogs project was not accepting enough outside contribution. More maintainers, faster releases, wider adoption.
Forgejo forked from Gitea in December 2022. In the project's own words, it started "in reaction to control of Gitea being taken away from the community by the newly-formed for-profit company Gitea Ltd without prior community consultation", after an open letter to the Gitea owners went unanswered.
The pattern repeats because the same tension repeats: a project gets popular, the people who own the name and the people who write the code stop being the same group, and the code gets forked.
What actually differs today
Through 2023 Forgejo was a soft fork, staying close to Gitea. It became a hard fork in early 2024, and the codebases have been diverging since. The differences that matter now are mostly structural rather than featural.
Who decides
Gitea is controlled by Gitea Ltd. Forgejo sits under Codeberg e.V., a registered German non-profit that holds the project's domain names and trademarks. Codeberg also runs its own public forge on Forgejo, so the steward is a heavy user of what it stewards.
This is the substance behind the fork. Whether it matters to you depends on whether you have been burned before by a dependency changing hands.
License, and why it changed
Gitea is MIT. Forgejo was MIT too, up to and including v8.0, and relicensed to GPL v3+ from v9.0 onward.
That is a real fork in the road. MIT lets anyone take the code, modify it and ship the result without publishing the changes. GPL v3+ requires modifications to be published under the same terms. If you want certainty that improvements stay available to everyone, GPL is the stronger guarantee. If you intend to build a proprietary product on top of the code, MIT is the permissive option and Forgejo v9.0+ is not.
Gitea also requires copyright assignment from contributors, including for MIT-licensed contributions, and runs an open-core model with paid editions alongside the free one. Forgejo requires no assignment and ships no proprietary edition.
Security handling
Forgejo gives advance notice of security releases to everyone. Gitea gives advance notice to its customers. If you self-host and do not hold a Gitea contract, that is the difference between patching on disclosure day and patching after it.
Testing and federation
Forgejo runs end-to-end, upgrade and browser tests that Gitea does not. Upgrade tests in particular matter for a forge you intend to keep for years, because the risk in a self-hosted forge is rarely the install, it is the fourteenth upgrade.
Forgejo is also implementing forge federation, so issues and pull requests can cross instance boundaries, and reports progress monthly. Gitea has no work in this area.
Development tooling
Forgejo is developed on Forgejo, using Forgejo Actions, with localization on Weblate. Gitea is developed on GitHub, using GitHub Actions, with localization on Crowdin. For a project whose pitch is self-hosted independence from GitHub, some people find that telling. It is a signal about priorities rather than a feature you would notice in daily use.
What is the same
Plenty, and it is worth saying plainly rather than overselling the differences.
Repositories, issues, pull requests, code review, wikis, Kanban boards, time tracking and package registries work the same way in both. Forgejo Actions and Gitea Actions are both GitHub Actions-compatible, and workflow files generally move across untouched. Both run happily on modest hardware. Both are genuinely free software at their core.
If you are running Gitea today and it is working, nothing here is an emergency.
Migrating from Gitea to Forgejo
Migration is a version upgrade, not a data export. Forgejo is designed to take
over an existing Gitea installation in place: point Forgejo at the same
database and data directory, and it continues where Gitea left off. Forgejo
even keeps the binary named gitea, with symbolic links, so existing service
files and scripts keep working.
The practical constraints are ordinary ones. Check the version correspondence before you start, since you can only move between compatible versions. Take a backup you have actually tested restoring. Plan the direction as one-way: going back to Gitea after Forgejo has migrated the database is not a supported path.
When Gitea is the right answer
- You are already running it, it is stable, and no part of the governance story bothers you. "It works" is a legitimate reason.
- You need to build a proprietary product on the codebase, where MIT's permissiveness matters and GPL v3+ would not suit.
- You want a paid edition from the company that develops the software, which Forgejo deliberately does not offer.
When Forgejo is the right answer
- You want the project stewarded by a non-profit rather than a company that can be sold.
- You want copyleft assurance that improvements stay free.
- You want security advisories at the same time as everyone else, without a contract.
- Federation matters to you, or will.
When managed Forgejo is the right answer
Everything above assumes you are running the forge yourself. Self-hosting either one means owning backups, upgrades, availability and security patching, plus monitoring and a restore procedure you have tested, plus somebody reachable when the host goes down at an inconvenient hour.
Codey is a dedicated Forgejo instance operated by VSHN in Switzerland, from CHF/EUR 39 per month. Not a shared tenancy: your own instance, with full admin access, Forgejo Actions CI/CD, package hosting and backups included. You keep the openness and the exit path, and hand over the pager.
If you are moving off Gitea anyway, moving to a managed instance costs about the same effort as moving to a self-hosted one.
Next steps
Weighing GitHub and GitLab as well? Read the full comparison. Ready to move? Get started with Codey from CHF/EUR 39 per month, or ask us about migrating an existing Gitea instance.