Welcome to the official FastHTML documentation.
FastHTML is a new next-generation web framework for fast, scalable web applications with minimal, compact code. It’s designed to be:
FastHTML apps are just Python code, so you can use FastHTML with the full power of the Python language and ecosystem. FastHTML’s functionality maps 1:1 directly to HTML and HTTP, but allows them to be encapsulated using good software engineering practices—so you’ll need to understand these foundations to use this library fully. To understand how and why this works, please read this first: about.fastht.ml.
Since fasthtml
is a Python library, you can install it with:
pip install python-fasthtml
In the near future, we hope to add component libraries that can likewise
be installed via pip
.
For a minimal app, create a file “main.py” as follows:
Running the app with python main.py
prints out a link to your running
app: http://localhost:5001
. Visit that link in your browser and you
should see a page with the text “Hello World!”. Congratulations, you’ve
just created your first FastHTML app!
Adding interactivity is surprisingly easy, thanks to HTMX. Modify the file to add this function:
You now have a page with a clickable element that changes the text when clicked. When clicking on this link, the server will respond with an “HTML partial”—that is, just a snippet of HTML which will be inserted into the existing page. In this case, the returned element will replace the original P element (since that’s the default behavior of HTMX) with the new version returned by the second route.
This “hypermedia-based” approach to web development is a powerful way to build web applications.
Because FastHTML is newer than most LLMs, AI systems like Cursor, ChatGPT, Claude, and Copilot won’t give useful answers about it. To fix that problem, we’ve provided an LLM-friendly guide that teaches them how to use FastHTML. To use it, add this link for your AI helper to use:
This example is in a format based on recommendations from Anthropic for use with Claude Projects. This works so well that we’ve actually found that Claude can provide even better information than our own documentation! For instance, read through this annotated Claude chat for some great getting-started information, entirely generated from a project using the above text file as context.
If you use Cursor, type @doc
then choose “Add new doc”, and use the
/llms-ctx.txt link above. The context file is auto-generated from our
llms.txt
(our proposed standard for providing
AI-friendly information)—you can generate alternative versions suitable
for other models as needed.
Start with the official sources to learn more about FastHTML:
We also have a 1-hour intro video:
https://www.youtube.com/embed/Auqrm7WFc0I
The capabilities of FastHTML are vast and growing, and not all the features and patterns have been documented yet. Be prepared to invest time into studying and modifying source code, such as the main FastHTML repo’s notebooks and the official FastHTML examples repo:
Then explore the small but growing third-party ecosystem of FastHTML tutorials, notebooks, libraries, and components:
Finally, join the FastHTML community to ask questions, share your work, and learn from others: