# Compress Middleware This middleware compresses the response body, according to `Accept-Encoding` request header. ::: info **Note**: On Cloudflare Workers and Deno Deploy, the response body will be compressed automatically, so there is no need to use this middleware. ::: ## Import ```ts import { Hono } from 'hono' import { compress } from 'hono/compress' ``` ## Usage ```ts const app = new Hono() app.use(compress()) ``` ## Options ### encoding: `'gzip'` | `'deflate'` The compression scheme to allow for response compression. Either `gzip` or `deflate`. If not defined, both are allowed and will be used based on the `Accept-Encoding` header. `gzip` is prioritized if this option is not provided and the client provides both in the `Accept-Encoding` header. ### threshold: `number` The minimum size in bytes to compress. Defaults to 1024 bytes. ### contentTypeFilter: `RegExp` | `(contentType: string) => boolean` A `RegExp` or function to determine whether the response should be compressed based on its `Content-Type`. By default, a built-in list of compressible Content-Types is used. You can pass a `RegExp` to compress only matching Content-Types: ```ts // Compress only JSON responses app.use(compress({ contentTypeFilter: /^application\/json/ })) ``` Or pass a function for custom logic. The built-in `COMPRESSIBLE_CONTENT_TYPE_REGEX` is also exported so you can extend the default behavior: ```ts import { compress, COMPRESSIBLE_CONTENT_TYPE_REGEX, } from 'hono/compress' // Compress the default Content-Types plus a custom one app.use( compress({ contentTypeFilter: (type) => COMPRESSIBLE_CONTENT_TYPE_REGEX.test(type) || type === 'application/x-myformat', }) ) ```