Skip to main content
The GZipMiddleware class compresses HTTP responses using GZip encoding to reduce bandwidth usage and improve transfer speeds for larger responses.

Parameters

minimum_size
int
default:"500"
Minimum response size in bytes before compression is applied. Responses smaller than this threshold will not be compressed.
minimum_size=1000  # Only compress responses >= 1KB
compresslevel
int
default:"9"
Compression level from 1 to 9. Higher values provide better compression but use more CPU. Level 9 provides maximum compression.
compresslevel=6  # Balance between compression and speed

Usage

from fastrapi import FastrAPI
from fastrapi.middleware import GZipMiddleware

app = FastrAPI()

app.add_middleware(
    GZipMiddleware,
    minimum_size=500,
    compresslevel=9
)

Examples

Default compression

from fastrapi import FastrAPI
from fastrapi.middleware import GZipMiddleware
from fastrapi.responses import JSONResponse

app = FastrAPI()

app.add_middleware(
    GZipMiddleware,
    minimum_size=500,
    compresslevel=9
)

@app.get("/heavy")
def heavy_data() -> JSONResponse:
    # Response large enough to trigger GZip compression
    large_data = "x" * 1000
    return JSONResponse({
        "data": large_data,
        "note": "Check content-encoding header!"
    })

Faster compression for high-traffic APIs

app.add_middleware(
    GZipMiddleware,
    minimum_size=1024,  # 1KB minimum
    compresslevel=6     # Faster compression
)

Maximum compression for bandwidth-sensitive applications

app.add_middleware(
    GZipMiddleware,
    minimum_size=200,   # Compress smaller responses
    compresslevel=9     # Maximum compression
)

Build docs developers (and LLMs) love