CI Workflow pre-commit black Latest Version Python versions BSD License Documentation server implementation for aiohttp.web applications.

For uploading large files, please consider using aiotus (Python 3.7+) library instead.

  • Works on Python 3.6+

  • Works with aiohttp 3.5+

  • BSD licensed

  • Latest documentation on Read The Docs

  • Source, issues, and pull requests on GitHub


Code belows shows how to enable tus-compatible uploads on /uploads URL for aiohttp.web application. After upload, files will be available at ../uploads directory.

from pathlib import Path

from aiohttp import web
from aiohttp_tus import setup_tus

app = setup_tus(
    upload_path=Path(__file__).parent.parent / "uploads",

Chunk Size

Please, make sure to configure client_max_size for aiohttp.web Application and supply proper chunkSize for or other client.


CORS Headers

To setup CORS headers you need to use cors_middleware from aiohttp-middlewares package. aiohttp-cors library not supported cause of aio-libs/aiohttp-cors#241 issue.


Reverse proxy and HTTPS

When aiohttp application deployed under the reverse proxy (such as nginx) with HTTPS support, it is needed to use https_middleware from aiohttp-middlewares package to ensure that web.Request instance has proper schema.



examples/ directory contains several examples, which illustrate how to use aiohttp-tus with some clients, such as and


pip install aiohttp-tus

Or using poetry:

poetry add aiohttp-tus


aiohttp-tus is licensed under the terms of BSD License.