Project: Traefik (Orchestration & Management / API Gateway)
File: compress.md

title: "Traefik Compress Documentation" description: "Traefik Proxy's HTTP middleware lets you compress responses before sending them to the client. Read the technical documentation." Compress Allows Compressing Responses before Sending them to the Client {: .subtitle } The Compress middleware supports gzip and Brotli compression. The activation of compression, and the compression method choice rely (among other things) on the request's `Accept-Encoding` header. ```yaml tab="Docker & Swarm" labels: "traefik.http.middlewares.test-compress.compress=true" ``` ```yaml tab="Kubernetes" apiVersion: traefik.io/v1alpha1 kind: Middleware metadata: name: test-compress spec: compress: {} ``` ```yaml tab="Consul Catalog" "traefik.http.middlewares.test-compress.compress=true" ``` ```yaml tab="File (YAML)" http: middlewares: test-compress: compress: {} ``` ```toml tab="File (TOML)" [http.middlewares] [http.middlewares.test-compress.compress] ``` !!! info Responses are compressed when the following criteria are all met: The `Accept-Encoding` request header contains `gzip`, ``, and/or `br` with or without . If the `Accept-Encoding` request header is absent, the response won't be encoded. If it is present, but its value is the empty string, then compression is disabled. The response is not already compressed, i.e. the `Content-Encoding` response header is not already set. The response`Content-Type` header is not one among the , or is one among the . The response body is larger than the (default is `1024`). Optional, Default="" `excludedContentTypes` specifies a list of content types to compare the `Content-Type` header of the incoming requests and responses before compressing. The responses with content types defined in `excludedContentTypes` are not compressed. Content types are compared in a case-insensitive, whitespace-ignored manner. !!! info The `excludedContentTypes` and `includedContentTypes` options are mutually exclusive. !!! info "In the case of gzip" If the `Content-Type` header is not defined, or empty, the compress middleware will automatically a content type. It will also set the `Content-Type` header according to the detected MIME type. !!! info "gRPC" Note that `application/grpc` is never compressed. ```yaml tab="Docker & Swarm" labels: "traefik.http.middlewares.test-compress.compress.excludedcontenttypes=text/event-stream" ``` ```yaml tab="Kubernetes" apiVersion: traefik.io/v1alpha1 kind: Middleware metadata: name: test-compress spec: compress: excludedContentTypes: text/event-stream ``` ```yaml tab="Consul Catalog" "traefik.http.middlewares.test-compress.compress.excludedcontenttypes=text/event-stream" ``` ```yaml tab="File (YAML)" http: middlewares: test-compress: compress: excludedContentTypes: text/event-stream ``` ```toml tab="File (TOML)" [http.middlewares] [http.middlewares.test-compress.compress] excludedContentTypes = ["text/event-stream"] ``` Optional, Default="" `includedContentTypes` specifies a list of content types to compare the `Content-Type` header of the responses before compressing. The responses with content types defined in `includedContentTypes` are compressed. Content types are compared in a case-insensitive, whitespace-ignored manner. !!! info The `excludedContentTypes` and `includedContentTypes` options are mutually exclusive. ```yaml tab="Docker & Swarm" labels: "traefik.http.middlewares.test-compress.compress.includedcontenttypes=application/json,text/html,text/plain" ``` ```yaml tab="Kubernetes" apiVersion: traefik.io/v1alpha1 kind: Middleware metadata: name: test-compress spec: compress: includedContentTypes: application/json text/html text/plain ``` ```yaml tab="Consul Catalog" "traefik.http.middlewares.test-compress.compress.includedcontenttypes=application/json,text/html,text/plain" ``` ```yaml tab="File (YAML)" http: middlewares: test-compress: compress: includedContentTypes: application/json text/html text/plain ``` ```toml tab="File (TOML)" [http.middlewares] [http.middlewares.test-compress.compress] includedContentTypes = ["application/json","text/html","text/plain"] ``` Optional, Default=1024 `minResponseBodyBytes` specifies the minimum amount of bytes a response body must have to be compressed. Responses smaller than the specified values will not be compressed. ```yaml tab="Docker & Swarm" labels: "traefik.http.middlewares.test-compress.compress.minresponsebodybytes=1200" ``` ```yaml tab="Kubernetes" apiVersion: traefik.io/v1alpha1 kind: Middleware metadata: name: test-compress spec: compress: minResponseBodyBytes: 1200 ``` ```yaml tab="Consul Catalog" "traefik.http.middlewares.test-compress.compress.minresponsebodybytes=1200" ``` ```yaml tab="File (YAML)" http: middlewares: test-compress: compress: minResponseBodyBytes: 1200 ``` ```toml tab="File (TOML)" [http.middlewares] [http.middlewares.test-compress.compress] minResponseBodyBytes = 1200 ```