---
description: >-
  The `tofu state show` command is used to show the attributes of a single
  resource in the OpenTofu state.
---

# Command: state show

The `tofu state show` command is used to show the attributes of a
single resource in the
[OpenTofu state](../../../language/state/index.mdx).

## Usage

Usage: `tofu state show [options] ADDRESS`

The command will show the attributes of a single resource in the
state file that matches the given address.

This command requires an address that points to a single resource in the
state. Addresses are
in [resource addressing format](../../../cli/state/resource-addressing.mdx).

:::note
Use of variables in [module sources](../../../language/modules/sources.mdx#support-for-variable-and-local-evaluation),
[backend configuration](../../../language/settings/backends/configuration.mdx#variables-and-locals),
or [encryption block](../../../language/state/encryption.mdx#configuration)
requires [assigning values to root module variables](../../../language/values/variables.mdx#assigning-values-to-root-module-variables)
when running `tofu show`.
:::

The command-line flags are all optional. The following flags are available:

* `-state=path` - Path to the state file. Defaults to "terraform.tfstate".
  Ignored when [remote state](../../../language/state/remote.mdx) is used.

* `-var 'NAME=VALUE'` - Sets a value for a single
  [input variable](../../../language/values/variables.mdx) declared in the
  root module of the configuration. Use this option multiple times to set
  more than one variable. Refer to
  [Input Variables on the Command Line](../plan.mdx#input-variables-on-the-command-line) for more information.

* `-var-file=FILENAME` - Sets values for potentially many
  [input variables](../../../language/values/variables.mdx) declared in the
  root module of the configuration, using definitions from a
  ["tfvars" file](../../../language/values/variables.mdx#variable-definitions-tfvars-files).
  Use this option multiple times to include values from more than one file.

* `-show-sensitive` - If specified, sensitive values will be displayed.

* `-json` - Enables the [machine readable JSON UI](../../../internals/machine-readable-ui.mdx) output.

* `-json-into=out.json` - Produces the same output as -json, but redirected to a file. This allows
  for simultaneous capture of both human readable and machine readable logs.

There are several other ways to set values for input variables in the root
module, aside from the `-var` and `-var-file` options. Refer to
[Assigning Values to Root Module Variables](../../../language/values/variables.mdx#assigning-values-to-root-module-variables) for more information.

The output of `tofu state show` is intended for human consumption, not
programmatic consumption. To extract state data for use in other software, use
[`tofu show -json`](../../../cli/commands/show.mdx#json-output) and decode the result
using the documented structure.

## Example: Show a Resource

The example below shows a `packet_device` resource named `worker`:

```
$ tofu state show 'packet_device.worker'
# packet_device.worker:
resource "packet_device" "worker" {
    billing_cycle = "hourly"
    created       = "2015-12-17T00:06:56Z"
    facility      = "ewr1"
    hostname      = "prod-xyz01"
    id            = "6015bg2b-b8c4-4925-aad2-f0671d5d3b13"
    locked        = false
}
```

## Example: Show a Module Resource

The example below shows a `packet_device` resource named `worker` inside a module named `foo`:

```shell
$ tofu state show 'module.foo.packet_device.worker'
```

## Example: Show a Resource configured with count

The example below shows the first instance of a `packet_device` resource named `worker` configured with
[`count`](../../../language/meta-arguments/count.mdx):

```shell
$ tofu state show 'packet_device.worker[0]'
```

## Example: Show a Resource configured with for_each

The following example shows the `"example"` instance of a `packet_device` resource named `worker` configured with the [`for_each`](../../../language/meta-arguments/for_each.mdx) meta-argument. You must place the resource name in single quotes when it contains special characters like double quotes.

Linux, Mac OS, and UNIX:

```shell
$ tofu state show 'packet_device.worker["example"]'
```

PowerShell:

```shell
$ tofu state show 'packet_device.worker[\"example\"]'
```

Windows `cmd.exe`:

```shell
$ tofu state show packet_device.worker[\"example\"]
```
