Skip to main content
Version: Next

Compress

Compression middleware for Fiber that automatically compresses responses with gzip, deflate, brotli, or zstd based on the client's Accept-Encoding header.

note

Bodies smaller than 200 bytes remain uncompressed because compression would likely increase their size and waste CPU cycles. See the fasthttp source.

Signatures

func New(config ...Config) fiber.Handler

Examples

Import the middleware package:

import (
"github.com/gofiber/fiber/v3"
"github.com/gofiber/fiber/v3/middleware/compress"
)

Once your Fiber app is initialized, use the middleware like this:

// Initialize default config
app.Use(compress.New())

// Or extend your config for customization
app.Use(compress.New(compress.Config{
Level: compress.LevelBestSpeed, // 1
}))

// Skip middleware for specific routes
app.Use(compress.New(compress.Config{
Next: func(c fiber.Ctx) bool {
return c.Path() == "/dont_compress"
},
Level: compress.LevelBestSpeed, // 1
}))

Config

PropertyTypeDescriptionDefault
Nextfunc(fiber.Ctx) boolSkips this middleware when the function returns true.nil
LevelLevelCompression level to use.LevelDefault (0)

Possible values for the "Level" field are:

  • LevelDisabled (-1): Compression is disabled.
  • LevelDefault (0): Default compression level.
  • LevelBestSpeed (1): Best compression speed.
  • LevelBestCompression (2): Best compression.

Default Config

var ConfigDefault = Config{
Next: nil,
Level: LevelDefault,
}

Constants

// Compression levels
const (
LevelDisabled = -1
LevelDefault = 0
LevelBestSpeed = 1
LevelBestCompression = 2
)