nicegui
Create web-based user interfaces with Python. The nice way.
What it is and what it does
NiceGUI is a Python-first web UI framework that lets you write browser-based interfaces entirely in Python without touching HTML or JavaScript. You define UI elements (buttons, sliders, tables, 3D scenes, charts) as Python objects, bind them to data, and attach event handlers—the framework handles rendering in the browser and WebSocket communication. It runs on FastAPI with Uvicorn, so it's a full web server you can start with a single Python script.
The framework is designed for rapid prototyping of dashboards, micro web apps, robotics interfaces, and development tools. It supports implicit code reload during development, per-user persistence, shared and individual pages, and runs in Jupyter notebooks. All UI logic stays in Python; the backend-first architecture means you don't manage frontend state separately.
Use it for:
- Build a dashboard to monitor real-time sensor data or system metrics with live-updating charts and gauges.
- Create a configuration UI for tuning machine learning models or motor controllers without writing web code.
- Prototype a robotics control interface with virtual joysticks and live video overlays.
- Develop a smart-home automation panel with buttons, toggles, and status displays.
- Write a data-entry or file-upload tool for internal use without deploying a separate frontend.
- Build a testing or debugging interface for interactive algorithm exploration in Jupyter.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
NiceGUI is a Python framework for building browser-based user interfaces with standard GUI elements, charts, 3D scenes, and real-time data binding, running on FastAPI and communicating via WebSocket.
Yes. NiceGUI is actively maintained, has low install friction, carries no known vulnerabilities, and uses a permissive MIT license. It's well-suited if you need a Python-native web UI without frontend complexity. The 24 runtime dependencies are standard async/web libraries (FastAPI, Uvicorn, Starlette, python-socketio). Start with it for dashboards, internal tools, and prototypes; verify performance and deployment strategy for production use.
Install
nicegui on PyPI
pip
pip install niceguiuv
uv add niceguipoetry
poetry add niceguiInstalling nicegui
Before you install
Low friction: pure Python wheel with no compiled dependencies. Active maintenance—released 2 days ago with 16119 GitHub stars. Supports Python 3.10 through 3.14.
License in practice
MIT license permits commercial and private use with minimal restrictions; you may use, modify, and distribute NiceGUI freely provided you include the license notice.
Quickstart
pip install nicegui
from nicegui import ui
ui.label('Hello NiceGUI!')
ui.button('BUTTON', on_click=lambda: ui.notify('button was pressed'))
ui.run()
Requires Python 3.10 or later; runs a local web server on port 8080 by default.
Verify before relying
- Whether the 24 runtime dependencies introduce any transitive security concerns beyond the 0 known vulnerabilities in NiceGUI itself.
- Performance characteristics under load (e.g., concurrent users, update frequency limits).
- Whether implicit code reload on file change is suitable for production deployments.
Package facts
| License | MIT (permissive) |
| Python support | supports the current Python release (<4,>=3.10) |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | 24 — Pygments, aiofiles, aiohttp, certifi, docutils, fastapi, h11, httpx, idna, ifaddr, itsdangerous, jinja2, markdown2, orjson, pydantic-core, python-dotenv, python-engineio, python-multipart, python-socketio, starlette, tinycss2, typing-extensions, uvicorn, watchfiles |
| Maintenance | actively maintained — 2 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 1,306,533/month — #4,079 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: nicegui-3.16.0-py3-none-any.whl
Keywords: gui, ui, web, interface, live
Tags
More Application Frameworks packages
FastAPI is a Python web framework for building…
permissive · top 100 on PyPI
annotated-docProvides a way to document function parameters,…
permissive · top 100 on PyPI
textualTextual is a Python framework for building…
permissive · top 100 on PyPI
typerTyper builds command-line applications from…
permissive · top 1,000 on PyPI
mcpBuild and connect to Model Context Protocol…
permissive · top 1,000 on PyPI
WerkzeugWerkzeug is a WSGI utility library providing…
permissive · top 1,000 on PyPI
easyguiEasyGUI provides simple, non-event-driven GUI…
permissive · top 5,000 on PyPI
dpguiProvides a web-based GUI for collecting…
copyleft · top 15,000 on PyPI
imgui-bundleDear ImGui Bundle provides Python bindings to a…
permissive · top 15,000 on PyPI
python-fasthtmlFastHTML is a Python web framework that builds…
permissive · top 5,000 on PyPI
quipQuip creates a web-based user interface for…
permissive · top 15,000 on PyPI
pywebviewpywebview wraps native webview components to…
permissive · top 5,000 on PyPI
dearpyguidearpygui is a GPU-accelerated GUI framework…
permissive · top 15,000 on PyPI
imguiPython bindings for the dear imgui C++ library,…
permissive · top 15,000 on PyPI
fastuiFastUI lets you build responsive web…
permissive · top 15,000 on PyPI