# Using Quart Extensions

There are a number of extensions for Quart, some of which are listed here,

- Quart-Auth Secure cookie sessions, allows login, authentication and logout.

- Quart-Babel Implements i18n and l10n support for Quart.

- Quart-Bcrypt Provides bcrypt hashing utilities for your application.

- Quart-compress compress your application’s responses with gzip.

- Quart-compress2 A package to compress responses in your Quart app with gzip .

- Quart-CORS Cross Origin Resource Sharing (access control) support.

- Quart-DB Managed connection(s) to postgresql database(s).

- Quart-events event broadcasting via WebSockets or SSE.

- Quart-Login a port of Flask-Login to work natively with Quart.

- Quart-minify minify quart response for HTML, JS, CSS and less.

- Quart-Mongo Bridges Quart, Motor, and Odmantic to create a powerful MongoDB extension.

- Quart-Motor Motor (MongoDB) support for Quart applications.

- Quart-OpenApi RESTful API building.

- Quart-Keycloak Support for Keycloak’s OAuth2 OpenID Connect (OIDC).

- Quart-Rapidoc API documentation from OpenAPI Specification.

- Quart-Rate-Limiter Rate limiting support.

- Quart-Redis Redis connection handling

- Webargs-Quart Webargs parsing for Quart.

- Quart-WTF Simple integration of Quart and WTForms. Including CSRF and file uploading.

- Quart-Schema Schema validation and auto-generated API documentation.

- Quart-session server side session support.

- Quart-LibreTranslate Simple integration to use LibreTranslate with your Quart app.

- Quart-Uploads File upload handling for Quart.

## Supporting sync code in a Quart Extension

Extension authors can support sync functions by utilising the `quart.Quart.ensure_async()` method. For example, if the extension provides a view function decorator add `ensure_async` before calling the decorated function,

    def extension(func):
        @wraps(func)
        async def wrapper(*args, **kwargs):
            ...  # Extension logic
            return await current_app.ensure_async(func)(*args, **kwargs)
        return wrapper