--- layout: "language" page_title: "yamlencode - Functions - Configuration Language" sidebar_current: "docs-funcs-encoding-yamlencode" description: |- The yamlencode function encodes a given value as a YAML string. --- # `yamlencode` Function -> **Note:** This page is about Terraform 0.12 and later. For Terraform 0.11 and earlier, see [0.11 Configuration Language: Interpolation Syntax](../../configuration-0-11/interpolation.html). `yamlencode` encodes a given value to a string using [YAML 1.2](https://yaml.org/spec/1.2/spec.html) block syntax. ~> **Warning:** This function is currently **experimental** and its exact result format may change in future versions of Terraform, based on feedback. Do not use `yamldecode` to construct a value for any resource argument where changes to the result would be disruptive. To get a consistent string representation of a value use [`jsonencode`](./jsonencode.html) instead; its results are also valid YAML because YAML is a JSON superset. This function maps [Terraform language values](/docs/configuration/expressions/types.html) to YAML tags in the following way: | Terraform type | YAML type | | -------------- | -------------------- | | `string` | `!!str` | | `number` | `!!float` or `!!int` | | `bool` | `!!bool` | | `list(...)` | `!!seq` | | `set(...)` | `!!seq` | | `tuple(...)` | `!!seq` | | `map(...)` | `!!map` | | `object(...)` | `!!map` | | Null value | `!!null` | `yamlencode` uses the implied syntaxes for all of the above types, so it does not generate explicit YAML tags. Because the YAML format cannot fully represent all of the Terraform language types, passing the `yamlencode` result to `yamldecode` will not produce an identical value, but the Terraform language automatic type conversion rules mean that this is rarely a problem in practice. ## Examples ``` > yamlencode({"a":"b", "c":"d"}) "a": "b" "c": "d" > yamlencode({"foo":[1, 2, 3], "bar": "baz"}) "bar": "baz" "foo": - 1 - 2 - 3 > yamlencode({"foo":[1, {"a":"b","c":"d"}, 3], "bar": "baz"}) "bar": "baz" "foo": - 1 - "a": "b" "c": "d" - 3 ``` `yamlencode` always uses YAML's "block style" for mappings and sequences, unless the mapping or sequence is empty. To generate flow-style YAML, use [`jsonencode`](./jsonencode.html) instead: YAML flow-style is a superset of JSON syntax. ## Related Functions - [`jsonencode`](./jsonencode.html) is a similar operation using JSON instead of YAML. - [`yamldecode`](./yamldecode.html) performs the opposite operation, _decoding_ a YAML string to obtain its represented value.