Skip to main content

Compression middleware for Starlette - supporting ZStd, Brotli, and GZip

Project description

starlette-compress

PyPI - Python Version Liberapay Patrons GitHub Sponsors

starlette-compress is a fast and simple middleware for compressing responses in Starlette. It supports more compression algorithms than Starlette's built-in GZipMiddleware, and has more sensible defaults.

  • Python 3.9+ support
  • Python 3.14 compression.zstd support
  • Compatible with asyncio and trio backends
  • ZStd, Brotli, and GZip compression
  • Sensible default configuration
  • Zero-Clause BSD — public domain dedication
  • Semantic Versioning compliance

Installation

pip install starlette-compress

Basic Usage

Starlette

from starlette.applications import Starlette
from starlette.middleware import Middleware
from starlette_compress import CompressMiddleware

middleware = [
    Middleware(CompressMiddleware)
]

app = Starlette(routes=..., middleware=middleware)

FastAPI

You can use starlette-compress with FastAPI too:

from fastapi import FastAPI
from starlette_compress import CompressMiddleware

app = FastAPI()
app.add_middleware(CompressMiddleware)

Advanced Usage

Changing Minimum Response Size

Control the minimum size of the response to compress. By default, responses must be at least 500 bytes to be compressed.

# Starlette
middleware = [
    Middleware(CompressMiddleware, minimum_size=1000)
]

# FastAPI
app.add_middleware(CompressMiddleware, minimum_size=1000)

Tuning Compression Levels

Adjust the compression levels for each algorithm. Higher levels mean smaller files but slower compression. Default level is 4 for all algorithms.

# Starlette
middleware = [
    Middleware(CompressMiddleware, zstd_level=6, brotli_quality=6, gzip_level=6)
]

# FastAPI
app.add_middleware(CompressMiddleware, zstd_level=6, brotli_quality=6, gzip_level=6)

Supporting Custom Content-Types

Manage the supported content-types. Unknown response types are not compressed. Check here for the default configuration.

from starlette_compress import add_compress_type, remove_compress_type

add_compress_type("application/my-custom-type")
remove_compress_type("application/json")

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

starlette_compress-1.6.1.tar.gz (55.4 kB view details)

Uploaded Source

Built Distribution

starlette_compress-1.6.1-py3-none-any.whl (11.5 kB view details)

Uploaded Python 3

File details

Details for the file starlette_compress-1.6.1.tar.gz.

File metadata

  • Download URL: starlette_compress-1.6.1.tar.gz
  • Upload date:
  • Size: 55.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for starlette_compress-1.6.1.tar.gz
Algorithm Hash digest
SHA256 dd1fa8aba94e255a3f7d4e8281c65ec1d6bd02de1af7500f1db1d611ac54071d
MD5 79bea6be8798c993b346b35b87b30f39
BLAKE2b-256 4a7be9b8eae86ea0c11d0ff83e903ca8a7bff3ae71c881f48755591bc4ab3164

See more details on using hashes here.

Provenance

The following attestation bundles were made for starlette_compress-1.6.1.tar.gz:

Publisher: workflow.yaml on Zaczero/starlette-compress

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file starlette_compress-1.6.1-py3-none-any.whl.

File metadata

File hashes

Hashes for starlette_compress-1.6.1-py3-none-any.whl
Algorithm Hash digest
SHA256 bda2375ba7c871d9d44d0b3d3eb52377311b5a4c16707e422b2abea7f1a9d09c
MD5 0b5044131b9916b04adfcae94e79ba1d
BLAKE2b-256 8ab58af353bb6926b042134f1ac5a63e3f590a578ecb2279787d3178739ae004

See more details on using hashes here.

Provenance

The following attestation bundles were made for starlette_compress-1.6.1-py3-none-any.whl:

Publisher: workflow.yaml on Zaczero/starlette-compress

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page