If you’re standing up a self-hosted Git server in 2026, the two names you’ll weigh are Forgejo and Gitea — and they’re no longer the same thing wearing different logos. Forgejo began as a friendly fork of Gitea, became a hard fork in early 2024, and has been diverging ever since. So the real question isn’t “which logo do I like,” it’s “which project do I want to run for the next five years.” Here’s how they actually compare in 2026 on the things that decide it — governance, licensing, federation, and migration — verified against each project’s own documentation.

Comparison of Forgejo and Gitea self-hosted Git forges in 2026 across governance, license, federation, CI/CD, and migration: Forgejo is Codeberg e.V. non-profit and GPLv3+ with ActivityPub federation in development, Gitea is a for-profit Open Core company with an MIT license and no federation; migration runs one-way from Gitea v1.22 to Forgejo v10 and on to the current v16 line.

The two at a glance

ForgejoGitea
GovernanceCodeberg e.V. (non-profit, community-led)For-profit company (Gitea Ltd), Open Core
LicenseGPLv3+ (since v9.0; MIT before)MIT + commercial edition
Fork statusHard fork since early 2024Original project
Federation (ActivityPub)In active developmentNone (as of Dec 2024)
CI/CDForgejo ActionsGitea Actions
Upgrade / accessibility testsYes (e2e + browser a11y)Not as of mid-2025
MigrationDrop-in from Gitea ≤ v1.22 → Forgejo v10 → current v16 (no drop-in path from Gitea v1.23+)
Best forCommunity governance, federation, homelabMIT license, Gitea Enterprise features

Both are lightweight, single-binary Git forges that run happily on a mini PC or a small VM, both do issues/PRs/wiki/releases/CI, and both are far lighter than GitLab. The differences below are about who controls the project and where it’s going, not about whether it can host your repos — either one can.

Why Forgejo exists: the governance split

This is the part that started everything. In 2022, the Gitea project’s domain name and trademark were transferred to a newly-formed for-profit company (Gitea Ltd) — by the community’s account, without prior knowledge or approval. A group of maintainers and contributors who wanted the project to stay community-governed responded by creating Forgejo in December 2022, hosted under Codeberg e.V., a registered German non-profit. Forgejo’s stated priority is “the interest of the general public”; its criticism of Gitea is that a for-profit owner makes decisions “to maximize profit rather than favor the interest of the general public.”

In 2026, Forgejo governance is a formal, documented structure — community elections, transparent roadmap, public decision-making. Gitea, by contrast, runs an “Open Core” model: the core is MIT-licensed, but the company also develops non-free components and (per Forgejo’s comparison) requires copyright assignment even for MIT-licensed contributions. Neither model is inherently wrong — a company-backed project can ship features and support that a volunteer non-profit can’t always match — but they pull in different directions, which is exactly why the fork became a hard fork.

Licensing: MIT vs GPLv3+ (and why it probably doesn’t affect you)

Gitea is MIT-licensed — maximally permissive, meaning anyone (including a company) can take the code, modify it, and ship it in a closed product. Forgejo was MIT too, up to and including its v8 series. Starting with its v9.0 release (2024), Forgejo relicensed to GPLv3-or-later — a copyleft license. Every version up to and including the v8 series was MIT.

The stated reason: to keep Forgejo’s code from being pulled back into a commercially-controlled Gitea. So the license divergence is really the governance dispute expressed in legal terms.

For a homelab user, this is invisible. GPLv3 only creates obligations when you distribute a modified version of the software — running Forgejo for yourself, your family, or your team triggers none of them. The license matters if you’re a business planning to build and sell a closed product on top of the code (MIT lets you; GPLv3 doesn’t), or if you have a philosophical preference for copyleft over permissive. Otherwise, both are genuinely Free/Open-Source and you can ignore this section.

Where they actually differ now

Since the hard fork, the codebases have drifted. The concrete, verifiable differences in 2026:

  • Forge federation (Forgejo’s flagship bet). Forgejo is actively implementing ActivityPub-based forge federation — the ability for issues, pull requests, and stars to work across independent instances, the way Mastodon federates social posts. Progress is public with monthly reports. Gitea has no federation effort. If a “self-hosted but not isolated” future appeals to you, this is Forgejo’s single biggest differentiator.
  • CI/CD. Both ship a GitHub-Actions-compatible runner — Forgejo Actions and Gitea Actions — so your .github/.forgejo workflows and existing actions largely just run. Forgejo notably develops and releases itself using Forgejo Actions (dogfooding); Gitea develops on GitHub.
  • Testing and accessibility. Per Forgejo’s own comparison, Forgejo maintains end-to-end tests, upgrade tests, and browser tests that include accessibility checks; Gitea, as of mid-2025, did not have end-to-end or upgrade tests and only an example browser test. For an app you’ll upgrade for years, upgrade-test coverage is a quiet but real reliability signal.
  • Development stack. Forgejo is developed on Codeberg (itself Forgejo) with localization via Weblate; Gitea is developed on GitHub with localization via Crowdin. A values signal more than a feature, but it’s real.

What has not meaningfully diverged: the core self-hosting experience. Repo hosting, the web UI, issues, PRs, wiki, packages, and releases are still very similar, because they share the same origin. This is why the choice is about trajectory, not day-one features.

Compatibility and migration — the practical part

Here’s the reassuring news for anyone already on Gitea: Forgejo is still designed to be a drop-in replacement. The projects remain compatible at the database and API level, and Forgejo publishes an official Gitea-migration guide. The supported path is:

Upgrades to Forgejo are transparently supported up to Gitea v1.22 included, in two steps: (1) upgrade from any Gitea version up to and including v1.22.x to Forgejo v10.0.x, then (2) upgrade from Forgejo v10.0.x to any later Forgejo version.

In practice that means: back up your Gitea database and data directory, run Forgejo v10.0.x pointed at the same data, then upgrade Forgejo the rest of the way to the current release — no re-cloning repositories, no re-creating users. Forgejo v10 is only the doorway, not the destination; the current stable line is v16.x.

The ceiling is the catch, and it has gotten sharper. Forgejo’s supported path still caps at Gitea v1.22, but Gitea has kept shipping — it is on the v1.27.x line as of August 2026. If your Gitea is newer than v1.22, you are past the transparent path, and you cannot get back to it by upgrading Gitea further. Nor can you simply drop back down: Gitea’s own upgrade guide warns that once a newer release has migrated your database, it “can not be used for an old Gitea” — downgrading across a minor version means restoring a pre-upgrade backup, not just running the older binary. Practically, if you did not keep a backup from before you left v1.22, that door is shut. Your options in that case are to stay on Gitea, or to move repositories, issues and users across with Forgejo’s API-based repository migration instead of a drop-in data-directory swap — a real migration with real gaps, not a binary swap. Check your Gitea version before you plan the move, not after.

The honest caveat: this is effectively a one-way door now. Because Forgejo has diverged (and relicensed) since the hard fork, there’s no supported route to migrate a modern Forgejo instance back to Gitea. That’s not a reason to avoid the move — it’s a reason to make the decision deliberately and keep a backup of your pre-migration state. If you’re running Gitea as part of a Docker Compose homelab stack, the swap is mostly a change of image and a data backup.

Which should you run?

  • New homelab or small-team forge, no existing instance → Forgejo. You get the same lightweight experience plus non-profit governance, copyleft licensing, upgrade/accessibility testing, and the federation roadmap. It’s the lower-risk long-term bet for a project you don’t want a company to be able to close.
  • You specifically need Gitea’s commercial “Enterprise” features, or you’re building a product on top and want the permissive MIT license → Gitea.
  • You already run a stable Gitea and nothing hurts → there’s no urgency. Gitea is still open and maintained. Migrate when you next do a major upgrade, or when a Forgejo feature (federation, an Actions improvement) actually pulls you.

Self-hosted Git is one of the highest-value things you can pull off SaaS — it’s a core piece of the self-hosted stack that replaces rented tools, and it runs fine in a container next to everything else. Whichever you pick, you’re keeping your code on infrastructure you control, and deciding whether to run it in a container or a VM is the next call.

The honest verdict

In 2026 this is a good-vs-good decision, not a rescue. Both Forgejo and Gitea are excellent, lightweight, genuinely open self-hosted Git forges, and either will serve a homelab well. The tiebreakers are about governance and direction: Forgejo is the pick if you want a community-controlled, non-profit-governed project with copyleft protection and a federated future, and it’s my default recommendation for anyone starting fresh. Gitea remains the right call if you need its commercial features or the permissive MIT license, or if you’re simply happy where you are.

One thing I won’t fake: resource footprint. Because Forgejo and Gitea share a common Go codebase, their memory and CPU use are effectively identical — both idle in the low hundreds of megabytes and scale with your repo count and CI usage, not with the logo. Anyone quoting a dramatic footprint gap between the two is guessing; run whichever you choose and watch it on your own box.

Sources

Frequently asked questions

Why choose Forgejo instead of Gitea?
Three reasons people cite in 2026: governance, licensing, and federation. Forgejo runs under Codeberg e.V., a non-profit, and is community-governed; Gitea’s domain and trademark are held by a for-profit company (Gitea Ltd) on an ‘Open Core’ model. Forgejo is Free Software under GPLv3+; Gitea is MIT with a commercial edition. And Forgejo is actively building forge federation (ActivityPub) so instances can interact across servers, while Gitea has no federation work. If none of those matter to you, the day-to-day software is still very similar — they share a common ancestor.
Can I migrate from Gitea to Forgejo, and is it a drop-in replacement?
Yes, in that direction. Forgejo remains highly compatible with Gitea at the database and API level, and the official path supports upgrading from any Gitea version up to and including v1.22.x to Forgejo v10.0.x, then from v10.0.x on to any later Forgejo release (the two steps in Forgejo’s upgrade guide; the current stable line is v16.x). Back up first, then point Forgejo at the same data directory and database. Check your Gitea version first, though: the transparent path still caps at Gitea v1.22 while Gitea itself is on v1.27.x, and because Gitea’s schema migrations only run forward you cannot step a v1.23+ instance back down to qualify — from there it is an API-based repository migration, not a drop-in swap. Going the other way — Forgejo back to Gitea — is not a supported path once you’re on a modern Forgejo release, because the codebases have diverged since the early-2024 hard fork, so treat the move as effectively one-way.
Is Forgejo hard to set up?
No harder than Gitea — they install the same way. Forgejo ships as a single self-contained binary or an official container image, uses SQLite by default (or MySQL/MariaDB/PostgreSQL for larger instances), and runs comfortably on a small VM, LXC, or mini PC. For a homelab, a Docker Compose deployment behind a reverse proxy is the usual route and takes a few minutes. If you can self-host Gitea, you can self-host Forgejo.
What’s the difference between the Forgejo and Gitea licenses?
Gitea is MIT-licensed (permissive), with some components under an ‘Open Core’ commercial model. Forgejo versions before v9.0 were MIT; starting with v9.0, Forgejo relicensed to GPLv3-or-later (copyleft). The stated reason was to keep Forgejo’s code from flowing back into a commercially-controlled Gitea. For a homelab user just running the software, the license change is invisible — GPLv3 only imposes obligations if you distribute a modified version. It mainly matters to companies that want to build closed products on top of the code.
Forgejo vs Gitea — which should I pick in 2026?
For a new homelab or small-team self-hosted Git server, Forgejo is the default recommendation in 2026: same lightweight experience, plus non-profit community governance, copyleft licensing, accessibility/upgrade testing, and the federation roadmap. Pick Gitea if you specifically need its commercial ‘Enterprise’ features, prefer the permissive MIT license for building on top of it, or already run a stable Gitea instance you have no reason to move. Both are excellent, genuinely open self-hosted alternatives to GitHub — this is a choice between two good options, not a rescue from a bad one.
What is Forgejo used for?
Forgejo is software for hosting your own Git ‘forge’ — a self-hosted alternative to GitHub or GitLab. It gives you Git repository hosting, a web UI, issues and pull requests, a wiki, releases, and CI/CD via Forgejo Actions (compatible with GitHub Actions workflows). Homelabbers and small teams run it to keep their code and automation on infrastructure they control. Codeberg.org, the largest public Forgejo instance, runs the same software at scale.

Evidence ledger

Last updated
Methodology
This homelab guide was written and edited by Lowell K. Wood IV in St. Louis County, MO. Specs and prices verified against vendor and project documentation current on the date above. Full editorial standard: methodology.
Update log
  • 2026-08-15 — Meta-audit propagation fix. The 2026-08-14 correction updated the prose, FAQ and comparison table to show the full path (Gitea v1.22 -> Forgejo v10 -> current v16) but left the v10-only framing in two places a reader still sees: the baked-in text of the comparison diagram (static/images/homelab/forgejo-vs-gitea-2026.svg) and this image’s alt text. Both now name the v16 destination. No factual claim changed; the same fact now reads the same way on every surface. Re-verified 2026-08-15: Forgejo v16.0.2 (Codeberg API), Gitea v1.27.2 (GitHub API).
  • 2026-08-14 — Corrected the Gitea-to-Forgejo migration section. The prior text told anyone on a Gitea newer than v1.22 to ‘upgrade within Gitea to a compatible point first’ - impossible, since Gitea’s schema migrations run forward only and the supported ceiling is below their current version. Re-verified against Forgejo’s current upgrade guide (https://forgejo.org/docs/latest/admin/upgrade/), which states the path is ’transparently supported up to Gitea v1.22 included, in two steps’; named the second step (v10.0.x to any later Forgejo) and the live version reality (Forgejo v16.x, Gitea v1.27.x) that the v10-only framing obscured. The downgrade point is sourced to Gitea’s own upgrade guide, which states an upgraded database ‘can not be used for an old Gitea, use a backup to downgrade’.
Corrections
Spotted an error or a stale number? Email hello@techfuelhq.com. Confirmed corrections are added to the update log above.

About the author

Written by Lowell K. Wood IV, who builds and runs TechFuelHQ from St. Louis, Missouri.