---
page_title: Files and Directories - Configuration Language
description: >-
  Learn how to name, organize, and store Terraform configuration files. Also
  learn how Terraform evaluates modules.
---

# Files and Directories

## File Extension

Code in the Terraform language is stored in plain text files with the `.tf` file
extension. There is also
[a JSON-based variant of the language](/terraform/language/syntax/json) that is named with
the `.tf.json` file extension.

Files containing Terraform code are often called _configuration files._

## Text Encoding

Configuration files must always use UTF-8 encoding, and by convention
usually use Unix-style line endings (LF) rather than Windows-style
line endings (CRLF), though both are accepted.

## Directories and Modules

A _module_ is a collection of `.tf` and/or `.tf.json` files kept together in a
directory.

A Terraform module only consists of the top-level configuration files in a
directory; nested directories are treated as completely separate modules, and
are not automatically included in the configuration.

Terraform evaluates all of the configuration files in a module, effectively
treating the entire module as a single document. Separating various blocks into
different files is purely for the convenience of readers and maintainers, and
has no effect on the module's behavior.

A Terraform module can use [module calls](/terraform/language/modules) to
explicitly include other modules into the configuration. These child modules can
come from local directories (nested in the parent module's directory, or
anywhere else on disk), or from external sources like the
[Terraform Registry](https://registry.terraform.io).

## The Root Module

Terraform always runs in the context of a single _root module._ A complete
_Terraform configuration_ consists of a root module and the tree of child
modules (which includes the modules called by the root module, any modules
called by those modules, etc.).

- In Terraform CLI, the root module is the working directory where Terraform is
  invoked. (You can use command line options to specify a root module outside
  the working directory, but in practice this is rare.)
- In Terraform Cloud and Terraform Enterprise, the root module for a workspace
  defaults to the top level of the configuration directory (supplied via version
  control repository or direct upload), but the workspace settings can specify a
  subdirectory to use instead.
