---
page_title: terraform modules command reference
description: >-
  The `terraform modules` command prints source and version data about all declared
  modules in Terraform configuration.
---

# Command: modules

The `terraform modules` command provides a holistic view of all Terraform modules
declared in Terraform configuration for the current working directory.
This command can be useful for auditing or setting policies on module consumption.
The output of `terraform modules` includes a list of each declared module's
key, source, and version.

-> **Note**: The `terraform modules` command requires **Terraform v1.10.0 or later**.

## Usage

Usage: `terraform modules [options]`

The following optional flags are available:

- `-json` - Displays the module declarations in a machine-readable, JSON format.

The output of `terraform modules -json` includes a `format_version` key, which is set to the value of `"1.0"` in Terraform 1.10.0. The semantics of this version are:

- For minor versions, such as `"1.1"`, changes or additions will be backward-compatible.
  Ignore object properties that are unrecognized to remain forward-compatible
  with future minor versions.
- For major versions, such as `"2.0"`, changes will not be backward-compatible. Reject any input which reports an unsupported major version.

We will introduce new major versions only within the bounds of
[the Terraform 1.0 Compatibility Promises](/terraform/language/v1-compatibility-promises).

## Output Format

The `terraform modules` command returns a nested structure, representing module composition and hierarchy within your configuration.

The following example demonstrates what the `terraform modules` command returns without any additional flags:

```shell-session
Modules declared by configuration:

.
├── "my_private_registry_module"[app.terraform.io/hashicorp/label/null] 1.0.0 (>=1.0.0, < 2.0.1)
├── "my_public_registry_module"[terraform-aws-modules/iam/aws] 5.47.1 (>5.0.1)
└── "my_local_module_a"[./path/to/local/module_a]
    └── "my_local_module_b"[./path/to/local/module_a/module_b]
        └── "my_local_module_c"[./path/to/local/module/module_a/module_b/module_c]
```

The following example is a representation of the JSON output format that `terraform modules -json` returns.

```javascript
{
    "format_version": "1.0",
    "modules": [
        {
            "key": "my_private_registry_module",
            "source": "app.terraform.io/hashicorp/label/null",
            "version": "1.0.0"
        },
        {
            "key": "my_public_registry_module",
            "source": "terraform-aws-modules/iam/aws",
            "version": "5.47.1"
        },
        {
            "key": "my_local_module_a",
            "source": "./path/to/local/module_a",
            "version": ""
        },
        {
            "key": "my_local_module_b",
            "source": "./path/to/local/module_a/module_b",
            "version": ""
        },
        {
            "key": "my_local_module_c",
            "source": "./path/to/local/module/module_a/module_b/module_c",
            "version": ""
        },
    ]
}
```


