---
description: |
  The `compress` post-processor compresses an artifact that contains multiple files, such as VMware of VirtualBox builds, into a single archive.
page_title: compress post-processor reference
---

⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️
> [!IMPORTANT]  
> **Documentation Update:** Product documentation previously located in `/website` has moved to the [`hashicorp/web-unified-docs`](https://github.com/hashicorp/web-unified-docs) repository, where all product documentation is now centralized. Please make contributions directly to `web-unified-docs`, since changes to `/website` in this repository will not appear on developer.hashicorp.com.
⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️

<BadgesHeader>
  <PluginBadge type="official" />
</BadgesHeader>

# `compress` post-processor

Artifact BuilderId: `packer.post-processor.compress`

The Packer compress post-processor takes an artifact with files, such as from
VMware or VirtualBox, and compresses the artifact into a single archive.

## Configuration

### Optional:

By default, packer will build archives in `.tar.gz` format with the following
filename: `packer_{{.BuildName}}_{{.BuilderType}}`. If you want to change this
you will need to specify the `output` option.

- `output` (string) - The path to save the compressed archive. The archive
  format is inferred from the filename. E.g. `.tar.gz` will be a gzipped
  tarball. `.zip` will be a zip file. If the extension can't be detected
  packer defaults to `.tar.gz` behavior but will not change the filename.

  This is treated as a
  [template engine](/packer/docs/templates/legacy_json_templates/engine). Therefore, you
  may use user variables and template functions in this field.
  The following special variables are also available to use in the output
  template:

  - `{{.BuildName}}`
  - `{{.BuilderType}}`

  If you are executing multiple builders in parallel you should make sure
  `output` is unique for each one. For example `packer_{{.BuildName}}.zip`.

- `format` (string) - Disable archive format autodetection and use provided
  string.

- `compression_level` (number) - Specify the compression level, for
  algorithms that support it, from 1 through 9 inclusive. Typically higher
  compression levels take longer but produce smaller files. Defaults to `6`

- `keep_input_artifact` (boolean) - if `true`, keep both the source files and
  the compressed file; if `false`, discard the source files. Defaults to
  `false`

### Supported Formats

Supported file extensions include `.zip`, `.tar`, `.gz`, `.tar.gz`, `.lz4` and
`.tar.lz4`. Note that `.gz` and `.lz4` will fail if you have multiple files to
compress.

## Examples

Some minimal examples are shown below, showing only the post-processor
configuration:

```json
{
  "type": "compress",
  "output": "archive.tar.lz4"
}
```

```json
{
  "type": "compress",
  "output": "{{.BuildName}}_bundle.zip"
}
```

```json
{
  "type": "compress",
  "output": "log_{{.BuildName}}.gz",
  "compression_level": 9
}
```
