finds.dev← search

// the find

marshmallow-code/webargs

★ 1,410 · Python · MIT · updated Sep 2026

A friendly library for parsing HTTP request arguments, with built-in support for popular web frameworks, including Flask, Django, Bottle, Tornado, Pyramid, webapp2, Falcon, and aiohttp.

webargs parses and validates incoming HTTP request arguments (query, form, JSON body, headers, etc.) on top of marshmallow schemas, with adapters for Flask, Django, Bottle, Tornado, Pyramid, Falcon, and aiohttp. It's for anyone who wants request validation without committing to a framework that bakes it in, like FastAPI does.

Framework adapters are genuinely thin wrappers around a shared core (core.py), so behavior is consistent across Flask/Django/aiohttp/etc. instead of having subtly different validation semantics per backend. Reusing marshmallow means you get its full field types, nested schemas, and validators for free instead of a bespoke validation DSL. Declared support for both marshmallow 3 and 4 shows the maintainers are actually keeping pace with the ecosystem it depends on, not just frozen on one version. Test suite covers every supported framework individually (test_aiohttpparser.py, test_djangoparser.py, etc.) rather than one generic test path.

Tying validation to marshmallow means you inherit marshmallow's learning curve and quirks even for simple argument parsing — there's no lightweight path if you just want three required query params. Supporting eight frameworks is a lot of surface area for what looks like a small volunteer team; less popular parsers (webapp2, Bottle) are likely to lag in maintenance attention. The library sits in a slightly awkward spot for new projects: newer stacks doing request validation at the framework boundary already (FastAPI, or Flask with Pydantic) don't need this at all, so its growth is capped by developers on older stacks. No async validation story beyond aiohttp's event loop compatibility — CPU-heavy custom validators can still block the loop with no guidance on offloading.

View on GitHub → Homepage ↗

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →