For most teams the two tools are drop-in compatible: same HCL, same providers (AWS included), same state format. They differ on licensing (OpenTofu is MPL 2.0 open source; Terraform is BSL source-available), on client-side state encryption (OpenTofu has it), on the registry, and on the commercial platform around them. Choose on licensing posture and on how much you use HCP Terraform.
The split is a licensing event first. The technical differences followed from it.
On 10 August 2023 HashiCorp announced that its products, Terraform included, would move from the Mozilla Public License 2.0 to the Business Source License 1.1 for future releases (HashiCorp). Terraform 1.5.x and earlier stayed MPL; later versions ship under BSL.
The BSL is source-available, not open source. You can read, use and modify the code, but not to build a product that competes with HashiCorp's commercial offerings, such as hosted Terraform as a service. Each BSL release converts to MPL 2.0 four years after it ships. For a startup running terraform apply against its own AWS account, nothing practical changed. The community objection was about precedent: a tool open for nearly a decade was relicensed by one vendor.
The community asked HashiCorp to revert, then forked the last MPL release. The fork, renamed OpenTofu, became a Linux Foundation project on 20 September 2023 (Linux Foundation). OpenTofu 1.6.0, the first stable release, shipped on 10 January 2024 (OpenTofu).
BSL Terraform is not closed source: the code is public and you can use it for your own infrastructure. It is also not open source by the OSI definition, because the license restricts a competitive field of use. OpenTofu under MPL 2.0 is OSI-approved. If your legal or procurement rules require OSI-approved licensing, that distinction decides the question.
OpenTofu forked from Terraform 1.5 and kept compatibility on purpose. Knowing exactly what is shared is the core of the practical decision.
OpenTofu reads the same HCL, so your .tf files do not change. It speaks the same provider plugin protocol, so the AWS, Kubernetes and thousands of other providers work unchanged. It reads and writes the same state format, so an existing terraform.tfstate needs no conversion. The CLI mirrors Terraform: tofu init, plan, apply, destroy and state commands.
Compatibility is not guaranteed at the edge of the language. The projects now develop independently, so a brand-new function or syntax feature may land in one tool a release before the other. If your configuration depends on a just-released feature, check it exists in the target tool before you switch.
Language: HCL syntax, modules, expressions, the type system and nearly all built-in functions. Providers: shared protocol; the AWS provider runs on either. State and backends: same format; S3, GCS, Azure Blob, HTTP, local and others on both. Workflow: init, plan, apply, destroy, import and state surgery behave the same.
License: MPL 2.0 vs BSL 1.1. New features: OpenTofu has shipped state encryption, provider iteration and OCI registry support; Terraform ships on HashiCorp's cadence with HCP integration. Registry: different default registries with different terms. Commercial platform: HCP Terraform features (Sentinel policy, no-code provisioning, run tasks, the private registry) are HashiCorp products; OpenTofu has no first-party SaaS.
The most cited technical difference is client-side state and plan encryption, which OpenTofu added in 1.7 and Terraform has no native equivalent for.
State files are a known liability: they hold the full resource graph and can hold secrets in plaintext (database passwords, generated credentials, keys). Backend encryption at rest, such as S3 with SSE-KMS, protects the stored bytes, but the state is plaintext again the moment it is read into a laptop or a CI job.
OpenTofu encrypts state and plan files on the client before they leave the machine and decrypts them only in memory (OpenTofu 1.7 release notes). You configure a key provider (AWS KMS, GCP KMS, OpenBao or a passphrase, among others) and an encryption method (OpenTofu docs); from then on the artifacts are ciphertext everywhere.
Terraform relies on backend encryption, access control, and keeping secrets out of state with ephemeral values, write-only arguments and external secret managers. Those are good practices and narrow the gap, but they are not transparent encryption of the whole artifact. For regulated teams that treat state as a secret store, this is a common reason to move.
Providers and modules are where Terraform's network effect lives, and the registry is where the projects split most visibly.
Alongside the relicense, HashiCorp changed the terms of its registry, so OpenTofu runs its own community registry. Most providers, the AWS provider included, are independent open-source projects published to both, so declaring hashicorp/aws resolves the same provider either way. You feel the split in registry features and in the long tail of older community modules.
Terraform's deeper integration story is HCP Terraform: private registry, no-code modules, run tasks, drift detection and Sentinel policy. OpenTofu leans on third-party platforms (Spacelift, env0, Scalr, Terrateam, Atlantis and others), most of which support both tools. For many teams that platform is where they work day to day, which narrows the practical difference.
A fork lives or dies on momentum and governance. OpenTofu has cleared the bar that kills most forks.
OpenTofu has shipped steadily under the Linux Foundation: 1.7 (state encryption, provider-defined functions, removed blocks), 1.8 (early evaluation of variables in backend and module sources), 1.9 (provider for_each and the -exclude flag, release notes), 1.10 (OCI registry support, native S3 state locking and OpenTelemetry tracing, release notes), and later releases. No single company controls it and the roadmap is public.
Terraform keeps moving too, with test framework work, stacks, and ephemeral and write-only handling for secrets. IBM completed its acquisition of HashiCorp on 27 February 2025 (IBM). That reassures buyers who want one enterprise vendor and worries those who distrust single-vendor control.
The 2026 picture is coexistence. Terraform has the larger installed base and the enterprise relationships. OpenTofu has the teams that need OSI-approved licensing, cost-sensitive teams, and much of the open-source platform community. Many organizations run both.
Because OpenTofu reads the same configuration, state and providers, the base case is a binary swap. The work is in the tooling around it.
The standard path for one state, per the OpenTofu migration guide: install tofu, run tofu init against the existing backend, run tofu plan, and confirm a no-op plan. Then use tofu apply from then on. There is no state conversion. For a small, isolated configuration this is often done in an hour or two.
OpenTofu understands the terraform block and the .terraform.lock.hcl file, and it can read .tofu files, which let a configuration use OpenTofu-only syntax without breaking Terraform.
The real effort is wherever your delivery system names the binary: CI pipelines, pre-commit hooks, tflint or Checkov wiring, Atlantis or Terrateam configuration, wrapper scripts. It is find-and-replace plus a test run, multiplied by the number of pipelines.
The hard migrations are tied to HCP Terraform features (Sentinel, no-code modules, run tasks, the private registry, hosted runs). Those have no one-to-one OpenTofu equivalent, so you also move to a third-party or self-hosted platform. And going back from OpenTofu to Terraform after you adopt OpenTofu-only features (state encryption, .tofu syntax) is not guaranteed clean, so pick a direction on purpose.
1. Install tofu alongside Terraform. 2. Run tofu init against the existing backend. 3. Run tofu plan and confirm a no-op: this is the safety gate. 4. Swap terraform for tofu in CI, hooks and scripts. 5. Run tofu apply from the pipeline once and verify.
There is no universal winner. Two questions decide it for most organizations: does an OSI-approved license matter to you, and how much do you use HCP Terraform?
Many teams choose per project: new services on OpenTofu, existing estates on Terraform until there is a reason to move. Because the configuration is shared and most platforms support both, running both is low friction.
You need OSI-approved open-source tooling for compliance, government or procurement reasons. You want native client-side state encryption. You are starting fresh and want foundation governance with no single-vendor license risk. You pair IaC with a third-party platform rather than HCP Terraform.
You rely on HCP Terraform (Sentinel, no-code provisioning, run tasks, the private registry, hosted runs). You want one enterprise vendor with formal support. The BSL restriction does not touch what you do, and your tooling is standardized on Terraform. You depend on a Terraform-only feature that OpenTofu has not shipped.
Picking OpenTofu costs you nothing on AWS. The AWS provider is the same open-source provider on both tools.
The hashicorp/aws provider is published to both registries and is identical either way, so every AWS resource and data source behaves the same. Authentication, assume-role, IAM Identity Center and the S3 backend work the same. Both tools now support native S3 state locking alongside the older DynamoDB lock table, and both work with SSE-KMS on the bucket. OpenTofu can add client-side encryption keyed to AWS KMS in your own account.
AWS does not care which binary runs your HCL. If the IaC work is part of moving workloads onto AWS (MAP) or launching new work on AWS (IW), a vetted AWS partner can file funding for that work when it qualifies and AWS approves: typically $50K to $150K for startups. Depends on the workload; AWS approves. Switching tools on its own is ordinary engineering work.
Identical where it matters most (language, providers, state, workflow); different on the four things that drive the decision: license, governance, state encryption and the first-party platform.
| Dimension | Terraform | OpenTofu |
|---|---|---|
| License | BSL 1.1 (source-available; converts to MPL after 4 years) | MPL 2.0 (OSI-approved open source) |
| Governance | HashiCorp, an IBM company since February 2025 | Linux Foundation (multi-vendor) |
| Config language | HCL | HCL, same files |
| Providers (including AWS) | Shared open-source providers | Same providers, same versions |
| State format | Same | Same; reads existing tfstate |
| Client-side state encryption | No native equivalent | Yes, since 1.7 (KMS, OpenBao, passphrase) |
| Default registry | HashiCorp registry | OpenTofu registry; OCI registries since 1.10 |
| First-party SaaS | HCP Terraform | None; pairs with Spacelift, env0, Scalr, Atlantis |
| Policy as code | Sentinel and HCP policy | OPA, Conftest, Checkov, platform policy |
| Best fit | HCP users and single-vendor buyers | OSI-license needs, new projects, cost-sensitive teams |
You fill in a short form: what you run today, what you want to move, test or build, your stage and your region.
We read your answers and pick one vetted AWS consulting partner that fits the work, the stack and the region. We reply within 24 hours; your matched partner reaches out within 5 business days.
Your matched partner scopes the work with you. Then it checks which partner-filed funding fits: MAP if you are moving to AWS, POC if you want to test something, or incremental workload (IW) funding if you are already on AWS and launching new work.
If the work qualifies, the partner files the funding request with AWS. AWS reviews it and decides. The amount depends on the workload.
CloudRoute is free for startups. Partners pay CloudRoute a monthly membership plus 10% of AWS-approved funding.
AWS Activate credits are separate, and you apply for them yourself. Use Activate Founders if no investor backs you. Use Activate Portfolio with the Org ID or invite from your VC, accelerator, incubator or angel group if it is an Activate Provider. A consulting partner cannot apply for Activate on your behalf.
CloudRoute matches you with a vetted AWS partner who scopes the right tool and runs the migration cleanly: the no-op plan gate, the CI swap, state encryption. CloudRoute is free for startups. If the IaC work is part of a migration to AWS (MAP) or new work on AWS (IW), the partner can file funding for it: typically $50K to $150K for startups. Depends on the workload; AWS approves.