Skip to content

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
Step-by-step guide: how to use TextualInstall, first run, examples, tips and FAQs

How to get it

  1. 1

    Install with a package manager

    You'll need: Python

    Install Textual via pip

    pip install textual textual-dev
  2. 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. 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

ProjectStarsTypeLevelUpdatedBest for
textual (this)37.6kFrameworkbeginner27 days agoPython developers who want a terminal app with buttons, tables and forms
rich57.7kLibrarybeginner5 months agoPython developers who write command-line scripts and want clearer output
prezto14.6kFrameworkbeginner7 months agoPeople who use Zsh and want a ready-made starting configuration
bubbletea45.6kLibraryintermediate4 days agoGo developers who want to build interactive command-line tools with a visual interface
yazi43.2kAppintermediate4 days agoPeople who already spend time in a terminal and want a faster way to browse folders
ratatui23.1kLibraryintermediate5 days agoRust 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.