# pallets-eco/flask-wtf

Simple integration of Flask and WTForms, including CSRF, file upload and Recaptcha integration.

Repository: https://github.com/pallets-eco/flask-wtf
Canonical: https://ross.abutalabs.com/products/flask-wtf
Homepage: https://flask-wtf.readthedocs.io
Language: Python
License: BSD-3-Clause
License Family: permissive
Topics: python, flask, wtforms, html, flask-wtf, forms
Last push: 2026-08-01T20:02:57+00:00

## Health v2 (maintenance only)
Score: 80/100 (v2, computed 2026-09-03T02:20:16.233290+00:00)
- activity 95, release rhythm 48, longevity 100
- inputs: {"age_days": 5299, "days_push": 32, "days_rel": 132, "gap_med": 546, "n_releases_24m": 2}
- flags: none
- formula: round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)

## Adoption (not part of the score)
Stars 1508, forks 315 (observed 2026-08-28T04:04:55.486599+00:00)

## What it is
Flask-WTF is a Python library that integrates WTForms with the Flask web framework, providing form rendering, validation, CSRF protection, file uploads, and reCAPTCHA support. It is part of the Pallets ecosystem, the maintainers of Flask.

## Use cases
- add csrf protection to flask forms
- validate and render html forms in flask
- handle file uploads in flask
- add recaptcha to a flask app
- build flask forms with wtforms
- protect flask endpoints against cross-site request forgery

## When to choose
- you are building a Flask app with server-rendered HTML forms
- you need CSRF protection out of the box
- you want WTForms validation integrated with Flask request handling

## When to avoid
- you use a different framework like Django or FastAPI
- your frontend is a SPA handling forms client-side with an API backend
- you need form handling without Flask

## Facets
- artifact type: library
- maturity: stable
- function: form-handling, auth, security, file-upload, middleware
- domain: web-development, backend, security
- platform: python
- tags: flask, wtforms, csrf, recaptcha, forms, validation, web-server

## Member repositories
- pallets-eco/flask-wtf (main) score 80

## Provenance
- Observed fields: from GitHub, fetched 2026-08-28T04:04:55.486599+00:00.
- Health v2: computed from the inputs above; adoption is never an input.
- Inferred fields (summary, facets, guidance): AI-extracted, prompt v1, taxonomy v1, on 2026-08-30T04:32:34.015865+00:00, confidence not recorded.
  - readme: https://github.com/pallets-eco/flask-wtf (fetched 2026-08-28T04:04:55.486599+00:00, sha 8385c244ab59)
  - registry_pypi: https://pypi.org/pypi/flask-wtf/json (fetched 2026-08-29T11:37:26.634502+00:00, sha 152ceecc87e1)
- Data as of 2026-08-30T08:39:29.467469+00:00.
