Terraform Formatter Online — Beautify HCL in Your Browser

Format Terraform and HCL with consistent indentation. Comments can be preserved on round-trip — all processing stays local.

Loading…
Terraform formatter — HCL beautify playbook
Normalize Terraform and generic HCL before code review or paste into CI snippets. Keeps block structure readable without sending configs to a server.

Developer notes

• Uses @cruglobal/js-hcl2 stringify for indentation and spacing. • “Preserve comments” keeps leading # lines at the top of the file; inline comments inside blocks may be removed. • 512 KB max per paste (ADR-DEVOPS-009). • Pair with validate-terraform for live syntax checks.

When teams pick this route

• Clean up hand-edited module snippets before opening a PR. • Align indentation across copied examples from provider docs. • Format a small root module when the CLI is not installed. • Preview how HCL will look after terraform fmt on a fragment.

Worked examples

Messy resource block from a provider doc

Before

resource "aws_s3_bucket" "logs" { bucket="app-logs-prod" acl="private" tags={ Environment="production" Team="platform" } }

After format

resource "aws_s3_bucket" "logs" { bucket = "app-logs-prod" acl = "private" tags = { Environment = "production" Team = "platform" } }

Variable block with inline comment

Before

# region for the VPC variable "region" { type=string default="eu-west-1" description="AWS region" }

After format

# region for the VPC variable "region" { type = string default = "eu-west-1" description = "AWS region" }

Navigate related DevOps tools

Validate syntax with validate Terraform, compact snippets via minify Terraform, or browse the DevOps hub. For YAML manifests see beautify YAML.

Terraform formatter FAQ

HCL syntax and layout only

Does it preserve comments?

Leading # comment lines at the top of the file are kept when “Preserve comments” is on. Inline comments inside blocks are not preserved — use terraform fmt locally if you need full comment round-trip.

Is this terraform fmt?

Similar intent for layout, but runs in the browser with js-hcl2. It does not execute terraform fmt or contact Terraform Cloud.

What is the size limit?

512 KB per paste. Split large root modules or use the CLI for full trees.

Looking for converters, encoders, formatters, and minifiers in one place? Developer tools hub Open the curated developer tools catalogue.