Terraform State (tfstate) Viewer

Paste or open a Terraform state file and get a readable summary instead of scrolling thousands of lines of JSON. It shows top-line metrics (format version, serial, resource/instance/output counts, providers), lists every resource by its full address with the notable attributes (id, arn, region, instance_type…) surfaced, and renders the outputs table with sensitive values hidden. It reads modern v4 and legacy v3 state, and because it runs entirely in your browser, the file is never uploaded anywhere.

Files are read locally — nothing is uploaded.

How to use the Terraform State (tfstate) Viewer

Paste the contents of a terraform.tfstate file into the box, or use Open .tfstate to load one from disk — the file is parsed locally in your browser and nothing is sent to a server. The viewer immediately renders a metric grid (state format version, Terraform version, serial, and counts of resources, data sources, instances, outputs and providers) followed by an expandable list of every resource and a table of outputs.

Each resource is shown by its full Terraform address — module path, optional data. prefix, type and name, plus the instance index for counted or for_each resources — which is exactly the identifier you'd pass to terraform state show or terraform import. Expand a resource to see its most useful attributes (id, ARN, region, AMI, tags and similar) and the total attribute count. Sensitive outputs are never displayed; they're marked as hidden so you can see that an output exists without exposing its value. Use this to audit what a state file contains, find a resource's address before a targeted operation, or review a state after an import — but remember that a real state file can still contain secrets in resource attributes, so handle it accordingly.

What a Terraform state file holds

Terraform state is the JSON file that maps the resources declared in your configuration to the real objects that exist in your cloud or service providers. Terraform writes it after every apply, and reads it on every plan to compute the difference between desired and actual infrastructure. Without state, Terraform would have no way to know that the aws_instance.web in your code corresponds to a specific running EC2 instance, so the file is the authoritative record of what Terraform manages.

The current format is version 4, a flat resources array where each entry carries a mode (managed or data), type, name, provider reference, and a list of instances — one per count index or for_each key — each holding the full attribute map captured from the provider. Older Terraform (0.11 and earlier) wrote version 3, which nested resources inside a modules array keyed by module path, with attributes under a primary block. This viewer normalizes both shapes into the same resource list so a legacy state reads as cleanly as a modern one.

Reading raw state by hand is awkward because the files are large, deeply nested, and ordered for machines rather than people. The practical questions you usually have — how many resources are tracked, what providers are involved, what is the exact address of a given resource, what are the output values — are buried. This tool answers them at a glance and renders entirely client-side, which matters because state frequently contains sensitive data: provider credentials echoed into attributes, database passwords, private keys, and the values of any output not marked sensitive. Inspecting it in the browser, with sensitive outputs masked and nothing uploaded, keeps that data on your machine. For routine work the canonical commands remain terraform state list and terraform show -json; this viewer is for quickly eyeballing a state file you already have in hand.

Common use cases

  • Find a resource address. Look up the exact address to pass to terraform state show, rm or import.
  • Audit a state file. See at a glance how many resources, providers and outputs a state tracks.
  • Review legacy state. Read a pre-0.12 v3 state file without standing up an old Terraform version.
  • Post-import sanity check. Confirm an imported resource landed with the attributes you expected.

Frequently asked questions

Is my state file uploaded anywhere?

No. The file is read and parsed entirely in your browser with JavaScript; it never leaves your machine. That said, state files routinely contain secrets, so treat the file itself as sensitive and avoid pasting it into tools you do not trust.

Which state versions are supported?

Both the current version 4 format (a flat resources array, written by Terraform 0.12 and later) and the legacy version 3 format (resources nested under a modules array, written by Terraform 0.11 and earlier). The viewer normalizes both into a single resource list with consistent addresses.

Why are some output values hidden?

Outputs marked sensitive in your configuration are masked and shown as "(sensitive — hidden)" so you can confirm the output exists without exposing its value on screen. Non-sensitive outputs are shown in full. Note that resource attributes are not masked, so a complete state can still reveal secrets.

What does the resource address mean?

It is the canonical identifier Terraform uses, composed of any module path, an optional data. prefix for data sources, the resource type and name, and an index in brackets for resources created with count or for_each. It is exactly what you supply to commands like terraform state show ADDRESS.

Can it edit or fix a state file?

No — it is read-only. It is for inspecting and understanding state, not modifying it. To change state, use the official terraform state subcommands (mv, rm, import) or terraform apply; hand-editing a state file is risky and generally discouraged.