
Textual
A Python framework for building terminal and web-browser user interfaces.
- Stars
- 37.6k
- Forks
- 1.4k
- Licence
- MIT
- Language
- Python
- Last update
- 27 days ago
- Type
- Framework
What it is
Textual is a Python framework for building interactive user interfaces that run in a terminal window, and can also be served to a web browser. It provides ready-made widgets such as buttons, data tables, inputs and text areas, plus a layout system and themes. People use it to make text-based apps and dashboards with a simple Python API.
- Build a clock or status display that updates every second
- Create a terminal form with inputs and buttons
- Show data in an interactive table inside the terminal
- Serve a terminal app to a web browser with textual serve
Great for
- Python developers who want a terminal app with buttons, tables and forms
- Developers building internal tools or dashboards that run over SSH or in a terminal
- Teams that want to share a terminal app in the browser using textual serve
- Developers who want a testing framework for their UI code
Not ideal for
- Non-programmers, since apps are built by writing Python code
- Projects needing a native desktop or mobile GUI, since the README describes terminal and browser targets only
- Developers who need a non-Python language, since the framework is Python-specific
How to get it
- 1
Install with a package manager
You'll need: Python
Install Textual via pip
pip install textual textual-dev - 2
Run it
- Install with pip install textual textual-dev
- Run python -m textual to see the built-in demo
- Save the clock example from the README as a Python file and run it
- Open the dev console from another terminal to see logs and events
- 3
Get the most out of it
- Use textual-dev's dev console to see print statements and logs from your running app
- Add custom commands to the built-in command palette opened with ctrl+p
- Serve any app in a browser with textual serve
- Explore the examples directory for more patterns
Downloads
Strengths
- Simple Python API with predefined themes that look good by default
- Includes a testing framework and a dev console for debugging
- Same app can run in a terminal or a web browser
Trade-offs
- Limited to what the terminal and browser targets allow; not a native GUI toolkit
- The README does not detail the web-serving limits or production hosting guidance
- Async support is optional but the framework is built on async internals, which may add learning curve
How it compares
| Project | Stars | Type | Level | Updated | Best for |
|---|---|---|---|---|---|
| textual (this) | 37.6k | Framework | beginner | 27 days ago | Python developers who want a terminal app with buttons, tables and forms |
| rich | 57.7k | Library | beginner | 5 months ago | Python developers who write command-line scripts and want clearer output |
| prezto | 14.6k | Framework | beginner | 7 months ago | People who use Zsh and want a ready-made starting configuration |
| bubbletea | 45.6k | Library | intermediate | 4 days ago | Go developers who want to build interactive command-line tools with a visual interface |
| yazi | 43.2k | App | intermediate | 4 days ago | People who already spend time in a terminal and want a faster way to browse folders |
| ratatui | 23.1k | Library | intermediate | 5 days ago | Rust developers building interactive command-line tools or dashboards |
Stats synced from GitHub. The assessment above was drafted with AI from the project's README on 2026-10-29 and may miss recent changes — check the README before relying on a command. MIT licence: free to use, modify and distribute, including commercially, as long as you keep the copyright notice.