GitHub alternatives: where to move your code, and how to migrate without losing history
Seven forges reviewed, one for each reason to leave, plus an eight-step migration plan.
The short answer: GitLab if you want everything in one place and the most complete GitHub importer. Bitbucket if your team already runs on Jira and wants the cheapest paid seat. Gitea or Forgejo if you want to self-host on a small box and stop counting CI minutes. Azure DevOps if you're a .NET shop on Azure and the vendor isn't your problem.
One thing before you pick. Leaving GitHub isn't about the Git repo. That copies in seconds. It's about your Actions workflows, which no forge converts for you, and about the CI bill on the other side. We compared all seven on those two points, with 2026 list prices.
The ranking is editorial: a sponsored spot is always labeled on its card, and no affiliate link changes a score.
Why teams are moving off GitHub, and what it costs them
Developers complained about GitHub for years and stayed anyway. In 2025 and 2026, some well-known projects actually left. These are the six reasons that keep coming up.
Actions reliability
Zig moved to Codeberg in 2025 and led with CI. A bug in the runner's safe_sleep.sh script, which could pin a CPU at 100%, stayed open for most of that year. If your pipelines are your daily workbench, this is the most concrete reason to look around.
The self-hosted runner fee scare
In 2025, GitHub announced a $0.002 per minute platform fee for self-hosted runners on private repos. After the backlash it was postponed, not dropped, with GitHub saying it wants to cover its "real costs". Today the official docs still list self-hosted runners as free. But if you run thousands of minutes a month on your own hardware, you now know the rule can move.
Copilot everywhere
Gentoo left for Codeberg in 2026, citing "continuous attempts to force Copilot usage". Copilot now has a free tier (2,000 completions a month) and ships inside Enterprise. For a project that doesn't want its code and contributors steered into Microsoft's AI assistant, that matters.
GitHub folded into Microsoft CoreAI
In 2025 Microsoft moved GitHub into its CoreAI group, and CEO Thomas Dohmke stepped down. For a slice of the open source world, that was the moment complaining turned into leaving. GitHub reads less like a neutral home and more like part of an AI strategy.
Logged-out friction
Code search and some discussions require you to be signed in. For maintainers who want their project readable by anyone, from any browser, that's one more nudge toward a forge with fewer walls.
What you give up
Here's the honest cost. GitHub is where developers are. Zig was raising more than $170,000 a year through GitHub Sponsors in 2024. One open source company that moved from GitLab to GitHub got 1,000 stars in three months, a number that took over a year on GitLab. Pages, the Actions marketplace and Copilot don't come with you. That's why so many teams keep a GitHub mirror.
You're leaving because… go to…
One reason, one destination. Click a card to jump to the full breakdown.
Most complete, and the importer that brings issues, reviews and wiki.
Your team lives in Jira and ConfluenceBitbucketCheapest per-user plan on the list: $3.65 per user a month.
You want to self-host and stop counting minutesGiteaLight, free, built-in GitHub migration with issues and PRs.
You're a .NET team already on AzureAzure DevOpsFive free users, then $6. Still Microsoft, though.
You want fully community-run softwareForgejoGitea fork run under a nonprofit. Actions-like CI, with caveats.
Your project is open source and you want out of Big TechCodebergGerman nonprofit, servers in Berlin, free for open source.
GitHub alternatives, forge by forge
For each one: why move there, who it fits, the catch, what comes over from GitHub, and what it costs in 2026. All prices are list prices in US dollars unless noted.
The forges
GitLab: the full platform, with the best importer
Most completeWhy move to GitLab. It's the only forge that covers everything GitHub does in one product: repos, built-in CI/CD, issues, boards, security scanning and a package registry. And you pick where it runs. Use GitLab.com, or run Self-Managed on your own servers. Self-Managed Free has no CI minute cap, because the runners are yours.
Who it's for. Product teams that want one tool for code, pipelines and planning, and companies that want the option to bring their forge in-house later.
Who it's not for. An eight-person team on private repos that wants to stay free on GitLab.com. The Free tier caps private groups at 5 users.
The catch. Free on GitLab.com means 5 users, 400 compute minutes a month and 10 GiB of storage. Open source maintainers have pushed back on that minute cut, and on being asked for a credit card to use shared runners. Premium is $29 per user a month, billed yearly, with 10,000 minutes. That's more than seven times GitHub Team. Ultimate is quote-only.
How to migrate. GitLab's GitHub importer is the most thorough you'll find: branches, large files (Git LFS), issues, pull requests with comments and reviews, labels, milestones, wiki, releases, branch protection rules and collaborators. It skips required status checks, organizations (it works project by project) and outside collaborators. Markdown attachments are opt-in. You need a classic personal access token (PAT) with repo scope, plus read:org for org repos. Your Actions workflows don't convert: you rewrite them as .gitlab-ci.yml.
Worth knowing. Extra minutes cost $10 per 1,000. If one busy repo blows through 400 minutes, a pack is usually cheaper than putting the whole team on Premium.
- Free
- 5 users, 400 CI minutes
- Paid
- Premium $29/user/mo
- Best for
- all-in-one teams
- Catch
- Premium is pricey
Bitbucket: the budget pick for Jira teams
Cheapest per userWhy move to Bitbucket. If your team already plans in Jira and documents in Confluence, Bitbucket plugs straight in: branches, commits and pull requests link to tickets. It's also the cheapest per-user paid plan here, at $3.65 per user a month on Standard and $8 on Premium.
Who it's for. Atlassian shops watching the budget.
Who it's not for. Public projects chasing contributors. The community is on GitHub, not Bitbucket.
The catch. Free covers 5 users but only 50 build minutes a month and 1 GB of LFS storage. Minutes scale with runner size: a 2x runner burns them twice as fast. Another 1,000 minutes, or 100 GB, costs $10 a month.
How to migrate. Bitbucket imports by Git URL. You get the code and its history, not GitHub issues or pull requests. In Atlassian land, tickets live in Jira. If Jira is on your way-out list too, read our guide to switching from Jira first.
- Free
- 5 users, 50 build minutes
- Paid
- Standard $3.65/user/mo
- Best for
- Jira teams
- Catch
- imports code only
Gitea: lightweight self-hosting
Lightest to runWhy move to Gitea. Gitea is an open source forge that feels a lot like GitHub, minus the weight. It runs on a small VM, it's free to self-host, and your data stays on your box. Its built-in migrator pulls a GitHub repo along with issues, pull requests, labels, milestones and releases.
Who it's for. Small engineering teams that can keep a server patched, and companies that want an internal forge without per-seat pricing. Gitea Enterprise adds vendor support on a yearly per-user subscription, with a 30-day trial.
Who it's not for. Teams with nobody to own backups, upgrades and security. Self-hosting is free in license, not in hours.
The catch. Gitea Cloud, the hosted version, has no public price. Gitea's own code is hosted on GitHub: worth knowing if independence is why you're leaving.
How to migrate. Start a new migration, pick GitHub, paste the repo URL and a token, tick what to bring. Mirror mode is a gentle way out: Gitea re-syncs from GitHub every 8 hours by default while your team switches over. Gitea Actions is close to GitHub Actions syntax, but check every workflow. Not every marketplace action will be there.
- Free
- self-hosted, unlimited users
- Paid
- Enterprise, yearly plan
- Best for
- internal forge
- Catch
- you run the server
Azure DevOps: solid for .NET, but it's still Microsoft
Microsoft stackWhy move to Azure DevOps. If you're leaving GitHub over price or features rather than the vendor, Azure DevOps is a serious option: Git repos, Pipelines, Boards, and Test Plans, which GitHub doesn't offer. The first 5 Basic users are free, then it's $6 per user a month.
Who it's for. .NET teams already on Azure, and QA-heavy teams that need Test Plans ($52 per user a month with Basic).
Who it's not for. Anyone leaving because of Microsoft. Azure DevOps and GitHub share an owner. You change tools, not vendors.
The catch. You get one free Microsoft-hosted parallel job with 1,800 minutes a month. Each extra hosted job is $40 a month. One self-hosted job is free with unlimited minutes, and each extra one is $15 a month. Do the math on parallel jobs, not minutes: that's what limits a busy team.
How to migrate. Importing a Git repo takes a few clicks. Pipelines are YAML, but not Actions YAML. Plan a full rewrite.
- Free
- 5 users, 1,800 CI minutes
- Paid
- $6/user/mo
- Best for
- .NET on Azure
- Catch
- same owner as GitHub
Forgejo: Gitea, run by the community
Community-governedWhy move to Forgejo. Forgejo forked from Gitea in 2022, when part of the community wanted governance with no company behind it. It now lives under Codeberg e.V., a German nonprofit. In daily use, you get Gitea's light footprint and the same built-in GitHub migration, issues and pull requests included.
Who it's for. Teams that want to self-host fully free software run by a nonprofit. Some users report a Forgejo instance on a Raspberry Pi feeling snappier than GitHub for their workload.
Who it's not for. Teams hoping to drop in their Actions workflows unread.
The catch. Forgejo's own docs say its Actions aim for "familiarity, not compatibility". The default image is Debian with Node, not Ubuntu, so a step that assumes an Ubuntu package can fail. The permissions and continue-on-error keys are ignored. OIDC (signing in to your cloud without stored passwords) needs enable-openid-connect.
How to migrate. Same path as Gitea, then go through every file in .github/workflows. Worth knowing: run Forgejo runners in LXC containers to isolate jobs, which the docs support. Teams that moved CI onto their own hardware report pipelines going from 40 to 10 minutes.
- Free
- free software, self-hosted
- Paid
- no license fee
- Best for
- community-run self-hosting
- Catch
- Actions need tweaks
Codeberg: the nonprofit home for open source
Free for FOSSWhy move to Codeberg. It's where Zig and Gentoo went. Codeberg is a Forgejo instance run by Codeberg e.V., a nonprofit with servers in Berlin. As a nonprofit, it has no investors. After Zig's move, membership jumped from 600 to more than 1,200.
Who it's for. Open source projects that want a European, community-run home.
Who it's not for. Companies with private code. Codeberg is for free and open source software only. There's no commercial private hosting, and you can't pay your way into an exception. Contributors to free software can keep private repos up to 100 MB.
The catch. Past 750 MiB of Git data or 1.5 GiB of packages, you have to ask. CI (Woodpecker) is also on request. There are no pull mirrors. And some user reports mention false positives from the anti-bot protection.
How to migrate. Use the Forgejo migrator for repo, issues and PRs. Since pull mirrors aren't offered, flip it: push-mirror from Codeberg to GitHub so your project stays discoverable there.
- Free
- yes, for open source
- Paid
- none, optional membership
- Best for
- FOSS projects
- Catch
- no private commercial code
SourceHut: minimal, email-driven, no JavaScript
For puristsWhy move to SourceHut. SourceHut works without JavaScript and without tracking, built around an email workflow: contributions arrive as patches sent to a mailing list, the way the Linux kernel works. Pricing is $4, $8 or $12 a month, and all three tiers get the same features. You choose what you pay.
Who it's for. Developers and small projects who like patch-by-email and want a lean forge funded by its users.
Who it's not for. Teams used to browser-based pull requests and reviews. The culture shift is real, and the UI looks dated.
The catch. It's still a public alpha. You pay to host projects and to use builds.sr.ht for CI. Contributors pay nothing, and financial aid exists.
How to migrate. git push your repo. Issues and PRs stay on GitHub, so export what matters first.
- Free
- contributing only
- Paid
- $4, $8 or $12/mo
- Best for
- email workflow, no JS
- Catch
- alpha, dated UI
The 7 alternatives side by side
Left column: what you get without paying. Right column: the first paid price, and what comes over from GitHub.
Monthly cost for a 10-person team: GitHub Team $40, GitLab Premium $290, Bitbucket Standard $36.50, Azure DevOps $30 (5 free, then 5 × $6), Gitea and Forgejo $0 plus your server.
If you're in the UK or EU and want your data in Europe, look at Codeberg (servers in Berlin, open source only), GitLab Self-Managed on your own European hosting, or a managed GitLab host with a European region.
| Free tier | First paid plan and migration | |
|---|---|---|
| GitHubWhere you're starting | $0, about 2,000 Actions minutes | Team $4/user/mo, Enterprise $21 |
| GitLab | 5 users, 400 min, 10 GiB | Premium $29; imports issues, reviews, wiki |
| Bitbucket | 5 users, 50 build minutes | Standard $3.65; imports code only |
| Gitea | Self-hosted, no caps | Enterprise yearly; imports issues and PRs |
| Azure DevOps | 5 users, 1,800 min | $6/user; imports the Git repo |
| Forgejo | Self-hosted, no caps | No license fee; imports issues and PRs |
| Codeberg | Free, open source only | No paid plan; imports issues and PRs |
| SourceHut | Contributing only | $4/mo; push the repo only |
GiB = gibibyte, close to a GB. List prices before tax, subject to change. None of these forges converts your GitHub Actions workflows automatically.
Moving off GitHub in eight steps
The repo is the easy part. This plan walks you through what doesn't show up in git clone: CI, secrets, integrations and discoverability.
The steps
Inventory everything that lives on GitHub
FirstFor each repo, list open issues, open pull requests, every file in .github/workflows, Actions secrets and variables, webhooks, installed GitHub Apps, Pages sites, published packages, LFS objects and Sponsors.
Importers take the code and, at best, issues. Nobody moves the rest for you.
- Time
- about an hour per ten repos
- Skip it and
- a deploy quietly stops
Run a pilot on one repo
Week 1Pick a representative repo with a real pipeline and a few issues, and move it alone. You'll see what the importer keeps, what it drops, and how long the workflow rewrite really takes.
Write down what the importer leaves behind. On GitLab, that's required status checks, outside collaborators and the org structure.
- Time
- one to two days
- You get
- a real estimate
Create the right access token
ImportFor GitLab, create a classic personal access token with repo scope, and add read:org if the repos belong to an organization.
Revoke it the moment you're done. It can read every private repo you have.
- GitLab scopes
- repo, read:org
- Afterwards
- revoke the token
Check LFS and storage headroom
ImportIf you use Git LFS, check space on the other side: 10 GiB total on GitLab Free, 1 GB of LFS on Bitbucket Free, and a request past 750 MiB on Codeberg. On GitHub, LFS data packs are $5 a month for 50 GB. Compare before you move.
- GitLab Free
- 10 GiB
- Bitbucket Free
- 1 GB LFS
Rewrite CI, one workflow at a time
The big oneNo forge converts your workflows. On GitLab, each job becomes a stage in .gitlab-ci.yml. Azure Pipelines uses its own YAML. Gitea and Forgejo look familiar, but the base image differs (Debian on Forgejo) and some keys are ignored.
Tip: use the move to run CI on your own runners. On GitLab Self-Managed and Forgejo, they don't eat into a minute quota. On GitHub, the Free credit buys about 2,000 Linux 2-core minutes at $0.006 each. To size the job, time the rewrite on your pilot and multiply by your number of workflows.
- Time
- pilot time × workflow count
- Watch for
- missing marketplace actions
Recreate secrets properly
SecurityActions secrets don't come along with any import. Recreate them on the new forge; on GitLab, as masked and protected variables, so they stay out of job logs and only reach protected branches.
Rotate them while you're at it. Keys that sat in one place for years deserve new values.
- On GitLab
- masked + protected
- Good habit
- rotate keys
Replace Pages, Sponsors and integrations
What doesn't followSwap GitHub Pages for GitLab Pages, Codeberg Pages or a host like Netlify. Move donations to another platform. Reconnect webhooks and apps (Slack, deploy tools, code scanning) one by one.
Update the old repo's README with the new address, and the links in your published packages.
- Pages
- GitLab, Codeberg, Netlify
- Don't forget
- webhooks
Keep a GitHub mirror, then archive
CutoverPlenty of projects keep a read-only mirror on GitHub: the new forge pushes every commit there, so the project stays visible and searchable.
Once the team has settled in, archive the GitHub repos instead of deleting them. Existing links keep working and the history stays readable. As long as GitHub stays the source and the new forge is a mirror, you can roll back without losing anything.
- How
- push mirror to GitHub
- Avoid
- deleting repos
Is your tool missing from this page? Email us: hello@hackceleration.com
What makes a GitHub exit go wrong
Failed migrations almost never break on the code. They break on these six things.
Assuming CI comes along
Mistake number one. Your workflows are code written for GitHub, using its marketplace. Budget time to rewrite them, and run old and new pipelines side by side for a few days.
Missing the 5-user wall
GitLab Free, Bitbucket Free and Azure DevOps all stop at 5 users. A six-person team finds the paid plan when inviting the last colleague. Count every account, contractors included.
Comparing raw minutes
Bitbucket multiplies minutes by runner size. Azure DevOps limits you by parallel jobs. GitLab and GitHub count compute credit. Compare cost per real pipeline run, not the headline minute number.
Putting private code on Codeberg
Codeberg is for open source only, and the nonprofit won't take money for an exception. For private code, self-host Forgejo or Gitea, or use GitLab.
Underestimating lost reach
For a public project, stars, forks and discovery happen on GitHub. Leave without a mirror and you drop out of search. Zig also gave up a Sponsors channel worth more than $170,000 a year.
Mistaking a new tool for sovereignty
Azure DevOps belongs to Microsoft, just like GitHub. If the goal is keeping data in Europe, check the server region (Codeberg in Berlin, your own instance, a managed host's EU region), not just the brand.
- Inventory of repos, issues, workflows, secrets, webhooks and Pages
- Real headcount, contractors included
- One pilot repo migrated with a green pipeline
- Access token created with the right scopes, then revoked
- Enough room for LFS objects
- Secrets recreated as masked, protected variables
- Pages, donations and integrations reconnected
- GitHub mirror in place and README updated
- GitHub account kept open, repos archived, while outside links still point there
GitHub alternative FAQ
What is better than GitHub?
Nothing is better across the board, but several forges win on one axis. GitLab beats it on all-in-one DevOps and self-hosting. Bitbucket is cheaper per seat for Jira teams. Gitea and Forgejo win on running your own forge with no CI minute caps. Pick the axis that made you search first.
Is GitLab better than GitHub?
For an all-in-one platform you can host yourself, yes. For reach and community, no. Price often decides it: $4 per user on GitHub Team versus $29 on GitLab Premium. Baserow, which moved from GitLab to GitHub, says it misses GitLab's code review, merge when the pipeline passes, and branch-to-issue links.
Is there a free GitHub alternative?
Yes. Self-hosted Gitea or Forgejo are free with no user or minute limits. GitLab Free covers 5 users and 400 CI minutes a month. Codeberg is free for open source projects. Tip: public groups on GitLab.com aren't held to the 5-user cap.
What is the best self-hosted GitHub alternative?
Gitea or Forgejo for a small team: light, quick to set up, and they import issues and PRs straight from GitHub. GitLab Self-Managed if you need the full DevOps suite and have someone to run a heavier install. Managed GitLab hosts exist if you want GitLab without the ops work.
Can I migrate GitHub Actions?
Not as-is. GitLab, Bitbucket and Azure DevOps use their own syntax, so you rewrite. Gitea and Forgejo read Actions-style YAML, but Forgejo itself warns it aims for familiarity, not compatibility. Expect to fix base images and ignored keys like
permissions.Is AWS CodeCommit still an option?
Yes, again. AWS closed CodeCommit to new customers in 2024, then reopened it in 2025 across 29 regions, with LFS support announced for 2026. It's bare-bones compared to GitHub. It makes sense only if your team is all-in on AWS; migrate with
git push --mirror. Google Cloud Source Repositories, on the other hand, stopped taking new customers in 2024.Will GitHub charge for self-hosted runners?
Not right now. A $0.002 per minute fee for private repos was announced in 2025 and then postponed after developer pushback. The official docs say self-hosted runners are free today. Postponed isn't cancelled, so keep a plan B if your bill depends on it.
Are there newer GitHub alternatives worth watching?
Tangled, built on the AT Protocol, is an early-stage forge to keep an eye on, not one to bet a company on yet. If you want AI coding help without Copilot, our AI coding tools ranking compares the alternatives.
Get the next migration guide in your inbox
One tool to leave, one destination, one migration plan. Nothing else.