---
page_title: Format and validate Terraform configuration using the Terraform CLI 
description: Learn about the Terraform commands that validate, format, and upgrade code written in HCL.
---

# Write and modify Terrafrom configuration from the CLI

This topic provides an overview of the Terraform CLI commands you can use to develop, format, and validate your Terraform configuration.

## Introduction

The [Terraform language](/terraform/language) is Terraform's primary
user interface, and all of Terraform's workflows rely on configurations written
in the Terraform language.

## Workflows 

Terraform CLI includes several commands to make Terraform code more convenient
to work with. You can integrate the following commands into your editing 
workflow to test expressions and format and validate your configuration syntax:

- The [`terraform console`](/terraform/cli/commands/console) command starts an 
  interactive shell for evaluating Terraform
  [expressions](/terraform/language/expressions), to quickly verify that a 
  particular resource argument results in the value you expect.

- The [`terraform fmt`](/terraform/cli/commands/fmt) command automatically rewrites Terraform
  configuration files to a canonical format and style, so you don't have to
  waste time making minor adjustments for readability and consistency. The `terraform fmt` command works
  well as a pre-commit hook in your version control system.

- The [`terraform validate`](/terraform/cli/commands/validate) commands validates the
  syntax and arguments of the Terraform configuration files in a directory,
  including argument and attribute names and types for resources and modules.
  The `plan` and `apply` commands automatically validate a configuration before
  performing any other work. Running `validate` isn't a crucial part of the core
  workflow but can be very useful as a pre-commit hook or as part of a
  continuous integration pipeline.

-  The [`0.13upgrade`](/terraform/cli/commands/0.13upgrade) and
  [`0.12upgrade`](/terraform/cli/commands/0.12upgrade) commands modify the configuration files in a Terraform module automatically to help deal with major
  syntax changes that occurred in the 0.13 and 0.12 releases of Terraform. Both
  commands are only available in the Terraform version they are
  associated with. Make sure to upgrade older code to be compatible
  with 0.12 before attempting to make it compatible with 0.13. For more detailed
  information about updating code for new Terraform versions, refer to the [upgrade
  guides](/terraform/language/upgrade-guides).
