Bitbucket alternatives: where to go, and what survives the move

Six forges reviewed, one for each reason to leave, plus an eight-step migration plan.

Short answer: GitLab if you want to keep your pull requests and their comments, since it's the only destination that imports them from Bitbucket Cloud. GitHub if you want the biggest community and an official converter for your Bitbucket Pipelines. Azure DevOps if you're a small team already on Microsoft. Gitea or OneDev if you want to self-host, and Codeberg if your project is open source.

The real deciding factor is what you're willing to lose. Your code and Git history move everywhere. Pull requests, issues, attachments and CI don't, and that's what we compared.

Romain CochardCEO of Hack'celeration
Updated 20266forges compared8migration steps2026prices checked

The ranking is editorial: a sponsored slot is always flagged on its card, and no affiliate link changes a score.

The real reasons

Why teams leave Bitbucket, and what staying costs them

Bitbucket is still cheap per seat and tightly wired into Jira. But since 2025 Atlassian has squeezed the free plan and is changing how paid plans are billed. These are the five reasons developers give most often.

The free plan shrank in 2025

Atlassian capped free workspaces at 1 GB of storage in total, across every repository. Go over and the workspace turns read-only: no more pushes. The same change removed Downloads and Snippets from Free and cut Pipelines log retention to 90 days. One developer put it this way when moving his repos to GitHub: "I'm sad to be moving off the platform" (dev.to). Watch out: the pricing page still says 1 GB "per repository". The rule that applies is the one in Atlassian's announcement, 1 GB total.

50 build minutes a month, and you can't buy more

Free includes 50 Bitbucket Pipelines minutes a month, and free workspaces can't buy extra minutes. Compare that with 2,000 on GitHub Free, 1,800 on Azure DevOps and 400 on GitLab Free. A Hacker News user: "I hit my 50 mins in a week and was completely disappointed." Also mind the multiplier: a 5-minute step on a 2x runner counts as 10 minutes.

Your bill is about to float

Atlassian has published a 2026 billing roadmap: annual billing consolidated per organization, monthly plan quotas pooled at organization level, then, before the end of 2026, annual plans moving to usage-based billing for build minutes, LFS storage and Packages at published rates. If your team runs a lot of builds, expect the invoice to move month to month. Overage costs $10 per 1,000 minutes or per 100 GB.

Outages and slowness

In early 2025 Bitbucket Cloud went down for about 4 hours 40 minutes: a saturated database took out Git, the web UI, the API and Pipelines at once. Slow page loads on large repos come up again and again in reviews. As one Hacker News user put it: "I moved away from bitbucket to github to get away from these sort of issues."

Everything pulls you into the Atlassian suite

Native Jira integration is Bitbucket's best argument, and also what keeps teams locked in. Older threads complain that features found elsewhere out of the box were sold as add-ons. If your team has left Jira, or plans to, the main reason to stay is gone. See our guide to switching from Jira.

The 6 alternatives

Bitbucket alternatives, forge by forge

For each forge: why move there, who it fits, its real limit, what comes across from Bitbucket, and its 2026 price. Prices are in US dollars, excluding tax, as the vendors list them.

01

GitLab: the only one that brings your pull requests from Bitbucket Cloud

Most complete

Why move to GitLab. GitLab ships a built-in Bitbucket Cloud importer. It brings over the repository description, Git data, pull requests with their comments, and Git LFS objects. No other destination on this list carries your code review history out of Bitbucket Cloud. You also get CI/CD, issues, boards and a package registry, on GitLab.com or on your own server with Self-Managed.

Who it's for. Teams with years of review discussions in Bitbucket that they want to keep searchable, and companies that may want to bring their forge in-house later.

Who it's not for. Teams leaving Bitbucket to cut costs: Premium is $29 per user per month billed annually, almost eight times Bitbucket Standard.

The catch. The importer leaves things behind: Bitbucket issues, PR approvals, approval rules, and Markdown images and attachments, which stay as links back to Bitbucket. PRs from forks arrive empty. GitLab.com Free is capped at 5 users per top-level private group, 400 compute minutes a month and 10 GiB of storage.

How to migrate. You need the Maintainer role on the GitLab project and a Bitbucket API token with read:repository and read:pullrequest scopes. Your CI doesn't come along: rewrite bitbucket-pipelines.yml as .gitlab-ci.yml. Before importing, save any images pasted into PRs you care about, because the links die when Bitbucket closes.

Good to know. Over 400 minutes, a 1,000-minute pack costs $10 and 10 GiB of extra storage is $5 a month. That's often cheaper than moving everyone to Premium. Our GitLab switching guide covers the reverse trip.

Free
5 users, 400 CI minutes
Paid
Premium $29/user/month
Imports
code, PRs and comments, LFS
Catch
issues and attachments left behind
See GitLab plans →
02

GitHub: the community, and a converter for your Pipelines

Most used

Why move to GitHub. It's where most developers and open source projects live, with the largest catalog of CI actions. Better still, GitHub publishes GitHub Actions Importer, an official tool that converts Bitbucket Pipelines into GitHub Actions workflows: steps, scripts, services, caches, artifacts, parallel steps, deployments, and branch, PR and tag triggers.

Who it's for. Teams for whom CI is the biggest chunk of the migration, and teams that want to hire or publish where everyone looks.

Who it's not for. Teams that need their Bitbucket Cloud pull requests: GitHub Enterprise Importer only supports Bitbucket Server and Data Center 5.14 or later, into GitHub Enterprise Cloud. From Bitbucket Cloud you move code and Git history, not PRs.

The catch. The converter doesn't translate everything: fail-fast, oidc, size and private ECR images need manual work. Secured variables and SSH keys are never copied, so you recreate them. The tool needs Docker, the gh CLI and a Bitbucket workspace access token.

How to migrate. From Bitbucket Cloud: git clone --mirror, then git push --mirror to an empty GitHub repo, then push LFS objects separately. From Bitbucket Data Center: GitHub Enterprise Importer brings code, history, PRs with comments and reviews, required reviewers and attachments, but not branch permissions, settings or CI. Limits: 40 GiB archive max, and no file over 100 MiB once the migration is done.

Good to know. Team is $4 per user per month, barely more than Bitbucket Standard, with 3,000 Actions minutes and 2 GB of packages. Actions are free on public repos. And if you ever want out again, there's our GitHub switching guide.

Free
2,000 Actions minutes, 500 MB packages
Paid
Team $4, Enterprise $21/user/month
Imports
code and history; PRs from Data Center only
Catch
no PR import from Bitbucket Cloud
See GitHub plans →
03

Azure DevOps: the cheapest pick for a small Microsoft team

Small teams

Why move to Azure DevOps. The first five Basic users are free, with one Microsoft-hosted CI job at 1,800 minutes a month and one self-hosted job with unlimited minutes. Beyond that it's $6 per user per month. Git repos, boards, pipelines and artifacts sit in one service.

Who it's for. .NET and Azure shops, and small private teams that want to stay free longer than Bitbucket allows.

Who it's not for. Open source projects looking for visibility, or teams that want to keep their code reviews: the import only copies the repo.

The catch. "Import repository" copies code and history once, with no ongoing sync. Git LFS files don't come along: push them with git lfs push --all. And if you need parallel CI, each extra hosted job costs $40 a month ($15 for self-hosted).

How to migrate. In Azure Repos, create an empty repo, choose Import, paste the Bitbucket clone URL and credentials for a private repo. Then push the LFS objects. Rewrite Pipelines as azure-pipelines.yml.

Good to know. At 10 people you pay 5 × $6 = $30 a month, less than Bitbucket Standard ($36.50). It's the only option here where leaving lowers the bill.

Free
5 users, 1,800 CI minutes
Paid
$6/user/month after 5
Imports
code and history, LFS separately
Catch
no PRs, one-time import
See Azure DevOps pricing →
04

Gitea: your own forge, no license to pay

Self-hosted

Why move to Gitea. Gitea is an open source forge under the MIT license, free when you host it yourself. It's built to stay lightweight. No 1 GB cap, no metered minutes, no per-seat pricing. You pay for the server, and that's it.

Who it's for. Teams with someone who can run a server, who want out of per-user billing and want their code on their own machines.

Who it's not for. Teams with nobody to handle updates, backups and server security. Atlassian did that work for you.

The catch. We didn't find an importer in Gitea's official docs that brings over Bitbucket pull requests. Plan on code and history only. There's an Enterprise offer, but its listed price isn't clear: ask for a quote if you need it.

How to migrate. Create an empty repo, then git clone --mirror from Bitbucket and git push --mirror to Gitea. Push LFS files next. Rebuild CI in whatever tool you choose.

Good to know. Set up backups before you migrate, not after: on your own forge, a dead disk erases everything Bitbucket used to keep safe for you.

Free
self-hosted, MIT license
Paid
Enterprise paid, per user
Imports
code and history (Git push)
Catch
you run the server
See Gitea plans →
05

OneDev: self-hosted with CI and packages in the free edition

Open source all-in-one

Why move to OneDev. The free Community edition bundles what Bitbucket charges for or splits out: a built-in CI/CD engine, a package registry (Docker, npm, Maven, NuGet, PyPI, RubyGems, Helm), a wiki, code search, pull request review policies, LDAP and single sign-on.

Who it's for. Teams that want to drop Bitbucket and Pipelines in one go, on their own server, without stitching tools together.

Who it's not for. Teams that want a hosted service: OneDev runs on your infrastructure. And teams that depend on a large integration ecosystem: the community is far smaller than GitLab's.

The catch. Enterprise (high availability, audit log, security scanning, time tracking) is $6 per user per month, with a 12 user-month minimum per order. We didn't verify a native Bitbucket importer: plan on a Git push.

How to migrate. Create the project, mirror-push the repo, then rewrite Pipelines in OneDev's CI format. Disabled users, service accounts and AI users don't count toward the Enterprise license.

Good to know. Start on Community and only move to Enterprise if you need high availability or auditing.

Free
Community: CI, packages, wiki
Paid
Enterprise $6/user/month
Imports
code and history (Git push)
Catch
small community, self-hosted
See OneDev plans →
06

Codeberg: free and nonprofit, for open source projects

Open source

Why move to Codeberg. Codeberg is a free forge run by a nonprofit association, Codeberg e.V. Most of its services run on its own hardware in a rented facility in Berlin, Germany. No per-seat pricing.

Who it's for. Open source maintainers who want to leave Bitbucket for a European, non-commercial host.

Who it's not for. Companies with private repos: Codeberg doesn't offer private hosting. Contributors to free software get up to 100 MB of private content, more on request, and nothing if you don't contribute to free software.

The catch. Codeberg's migration tool doesn't list Bitbucket as a source (it supports GitHub, GitLab, Gitea, Forgejo, Gogs, OneDev, GitBucket and Codebase). With the generic "Git" option, only code comes across: no issues, labels, wiki or releases.

How to migrate. Pick the "Git" migration, paste your Bitbucket repo URL and credentials. Copy over the README content and release notes that matter by hand.

Good to know. To bring more across, route through GitLab first (it imports PRs from Bitbucket), then migrate from GitLab to Codeberg, which can import from GitLab. Try it on a test repo before doing it at scale.

Free
yes, for open source
Paid
no paid plan
Imports
code only (Git option)
Catch
no private company repos
Visit Codeberg →
Comparison

The 6 alternatives side by side

Left column: what you get for free. Right column: the first paid price and what the tool brings over from Bitbucket Cloud.

Monthly cost for a 10-person team: Bitbucket Standard $36.50 ($438 a year), GitHub Team $40 ($480), GitLab Premium $290 ($3,480), Azure DevOps $30 (5 free, then 5 × $6, so $360 a year), OneDev Enterprise $60 if you need it, Gitea, OneDev Community and Codeberg $0 plus your server.

We left out AWS CodeCommit: we couldn't confirm its current offer on the official page.

Free planFirst paid tier and what migrates
BitbucketStarting point5 users, 50 CI minutes, 1 GB totalStandard $3.65, Premium $8/user/month
GitLabMost complete5 users, 400 minutes, 10 GiBPremium $29; code, PRs, comments, LFS
GitHubMost used2,000 Actions minutesTeam $4; code, history, Pipelines converted
Azure DevOpsSmall teams5 users, 1,800 minutes$6 after 5 users; code, history
GiteaSelf-hostedunlimited on your serverEnterprise paid, per user; code, history
OneDevOpen source all-in-oneCommunity: CI, packages, wikiEnterprise $6; code, history
CodebergOpen sourcefree for open sourceno paid plan; code only

GiB = gibibyte, close to a GB. Prices exclude tax, in US dollars, and can change. None of these forges imports Bitbucket issues.

Migration plan

Moving off Bitbucket in eight steps

The repo is the easy part. This plan tackles the things that break quietly first: attachments, large files, CI, secrets and the Jira link.

01

Inventory the workspace

First

For every repo, list open pull requests, the bitbucket-pipelines.yml file, repository and deployment variables, SSH keys, webhooks, LFS files, Packages and Jira links. Note who has which permissions.

No importer takes everything. Whatever isn't on your list gets forgotten.

Time
about an hour per ten repos
Risk if rushed
a deployment that stops
02

Migrate one pilot repo first

Lower the risk

Pick an active but non-critical repo with a few PRs, some CI and at least one LFS file. Migrate it and compare commit counts, branches, tags, PRs and readable comments.

This is where you find out what your importer really leaves behind, before you run it on the other 40 repos.

Time
half a day
Check
commits, tags, PRs, LFS
03

Save PR images and attachments

Often missed

Even GitLab doesn't import Markdown images and attachments: they stay as links to Bitbucket. Once you close the workspace, those links die. Find the PRs whose discussions matter (architecture decisions, incidents) and store their attachments somewhere else, such as a folder in the repo or your wiki.

Applies to
every destination
Tip
start with PRs linked from Jira
04

Set up the right access

Before importing

For GitLab: a Bitbucket API token with read:repository and read:pullrequest, plus the Maintainer role on GitLab. For GitHub Actions Importer: a Bitbucket workspace access token, Docker and the gh CLI. For the rest: credentials that can clone private repos.

Create a token just for the migration and revoke it afterwards.

Time
15 minutes
Security
a short-lived token
05

Move large files (LFS)

Doesn't move by itself

git push --mirror doesn't push LFS objects. Fetch them with git lfs fetch --all, then push with git lfs push --all to the new forge. Only GitLab's importer brings them over on its own.

Check sizes first: GitHub rejects files over 100 MiB outside LFS.

Command
git lfs push --all
Trap
files over 100 MiB
06

Convert or rewrite Pipelines

The big job

Heading to GitHub? Run GitHub Actions Importer in audit mode across the workspace first: it tells you how much of your pipelines it converts on its own. Rework fail-fast, oidc, size and private ECR images by hand. For other forges, you rewrite the file in their format.

Run old and new CI side by side for a few days and compare results.

Tool
GitHub Actions Importer
Time
a few hours to a few days
07

Recreate secrets and keys

Never exported

Bitbucket secured variables and SSH keys are never exported. Recreate them on the new forge and rotate the ones that have been around too long. Update deploy keys on your servers.

Applies to
every destination
Tip
rotate old secrets
08

Cut over, then keep Bitbucket read-only

No hard stop

Announce a date, block pushes on Bitbucket with branch permissions, do a final mirror push, then move the team. Reconnect Jira if you keep it. Leave the old workspace read-only for a few weeks before closing it: someone will always need an old discussion.

To automate tasks around Bitbucket during the transition, see the n8n and Make integrations.

Time
one day
Keep
the workspace read-only

Is your tool missing from this page? Email us: hello@hackceleration.com

Migration pitfalls

What makes a Bitbucket exit go wrong

Failed migrations almost never break on the code. They break on these six things.

Assuming the importer takes everything

Even the best one, GitLab's, leaves issues, approvals and attachments behind. GitHub doesn't import PRs from Bitbucket Cloud. Read what isn't imported before you pick a destination.

Mixing up Cloud and Data Center

GitHub Enterprise Importer works from Bitbucket Server and Data Center 5.14+, not from Bitbucket Cloud. Check your edition before following a tutorial. And if you're on Data Center, Atlassian isn't ending it in 2029, unlike Jira and Confluence: there's no deadline pushing you.

Leaving LFS behind

A mirrored repo looks complete, but its large files are just pointers. When Bitbucket closes, the binaries vanish. Push LFS explicitly and check that a fresh clone pulls them.

Underestimating CI

Pipelines are code written for Bitbucket. GitHub's converter helps, but nothing converts to GitLab, Azure DevOps or OneDev. Budget the time.

Breaking the Jira link without noticing

Issue keys in commits and branch names were what tied your work to Jira. If you keep Jira, make sure your destination connects to it before cutover, not after.

Leaving over price without doing the math

Bitbucket Standard is still one of the cheapest per seat. GitLab Premium costs nearly eight times more. If your only problem is the free tier cap, Standard at $3.65 may fix it for less than a migration.

  • Inventory of repos, PRs, Pipelines, variables, keys and webhooks
  • Edition confirmed: Cloud or Data Center
  • Pilot repo migrated and checked
  • Key PR attachments saved
  • LFS objects pushed and checked on a fresh clone
  • CI converted and run in parallel
  • Secrets and keys recreated
  • Jira link checked
  • Bitbucket set to read-only before closing
FAQ · 8 questions

Bitbucket alternatives: frequently asked questions

  • What is the best alternative to Bitbucket?

    GitLab if you want to keep your pull requests: it's the only one that imports them from Bitbucket Cloud. GitHub if CI and community matter most, thanks to its Pipelines converter. For a small Microsoft team, Azure DevOps is free up to 5 users.

  • Is GitHub better than Bitbucket?

    For CI and community, yes: 2,000 free Actions minutes against 50, and a far bigger ecosystem. Bitbucket wins on Jira integration and price per seat ($3.65 against $4). For 10 people, the difference is just $3.50 a month.

  • Is Bitbucket still free?

    Yes, for up to 5 users, but with 1 GB of storage for the whole workspace and 50 CI minutes a month. Over 1 GB, the workspace goes read-only. Tip: move large files to LFS or out of history before you hit the cap, because free workspaces can't buy extra minutes or storage.

  • What is a free self-hosted alternative to Bitbucket?

    Gitea (MIT license) or OneDev Community on your own server: no per-seat price, no metered minutes. OneDev includes CI and a package registry in the free edition. GitLab Self-Managed also has a free edition.

  • Can I migrate pull requests from Bitbucket?

    From Bitbucket Cloud, only GitLab's importer brings them over, with comments but without approvals. From Bitbucket Data Center 5.14+, GitHub Enterprise Importer also imports them into GitHub Enterprise Cloud. Everywhere else, only code and history move.

  • Can I migrate Bitbucket Pipelines to GitHub Actions?

    Yes, with GitHub Actions Importer, GitHub's official tool. It converts steps, services, caches, artifacts and triggers. Run it in audit mode first to see how much it converts automatically. Secured variables have to be recreated by hand.

  • Is Bitbucket Data Center reaching end of life in 2029?

    No. Atlassian is ending most Data Center products in 2029, but Bitbucket and Bamboo Data Center continue beyond that. If you self-host Bitbucket, there's no deadline.

  • Is Bitbucket getting more expensive in 2026?

    Per-seat prices stay the same (Standard $3.65, Premium $8), but before the end of 2026 annual plans move to usage-based billing for minutes, LFS and Packages. If your CI is busy, watch your minutes: extra ones cost $10 per 1,000.

Hack'celeration Labs

Get the next migration guide in your inbox

One tool to leave, one destination, one migration plan. Nothing else.

No spam. Unsubscribe in one click.