qutebrowser
A keyboard-driven, vim-like browser based on Python and Qt.
What it is and what it does
qutebrowser is a web browser designed for users who prefer keyboard-driven workflows similar to vim. It runs on Python and Qt, offering a minimal graphical interface where most navigation and commands are executed via keyboard shortcuts rather than mouse clicks. The browser is free software licensed under GPL-3.0-or-later and draws inspiration from earlier keyboard-focused projects like dwb and Vimperator.
The package depends on jinja2 and PyYAML for configuration and templating, and requires substantial Qt infrastructure (QtCore, QtQuick, QtSQL, QtDBus, QtOpenGL, and either QtWebEngine or QtWebKit as the rendering backend). Installation involves resolving these compiled dependencies, which creates high friction on systems without pre-built binaries. The project maintains active development with recent releases and supports Python 3.9 through 3.13.
Use it for:
- Daily web browsing for developers and power users who work primarily in terminal-based environments and prefer keyboard shortcuts.
- Research and information gathering workflows where rapid keyboard navigation and command-line-style interactions speed up task completion.
- Customizing browser behavior through configuration files (jinja2 templates and YAML) without writing browser extensions.
- Lightweight browsing on systems where traditional browsers feel heavy, leveraging the minimal GUI design.
- Learning vim-like keybindings in a graphical application context before or alongside terminal editor mastery.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
A keyboard-driven, vim-like web browser built on Python and Qt that prioritizes keyboard navigation over mouse interaction.
Yes, if you are a keyboard-focused developer or power user willing to manage Qt dependencies. The active maintenance, zero known vulnerabilities, and GPL license make it a solid choice for personal use. No, if you need a browser that works out-of-the-box on systems without pre-installed Qt libraries or if you require proprietary redistribution rights.
Install
qutebrowser on PyPI
pip
pip install qutebrowseruv
uv add qutebrowserpoetry
poetry add qutebrowserInstalling qutebrowser
Before you install
High install friction due to substantial Qt and PyQt dependencies that require compilation or pre-built binaries on most systems. Maintenance is active with a recent release, though the primary maintainer works part-time on the project.
License in practice
GPL-3.0-or-later copyleft license means any modifications or derivative works must be released under compatible terms; suitable for personal use but restrictive for proprietary redistribution.
Quickstart
pip install qutebrowser
qutebrowser https://example.com
Requires Qt 5.15.0+ or Qt 6.2.0+ and PyQt 5.15.0+ or 6.2.2+ to be installed separately; Python 3.9 or newer required.
Verify before relying
- Whether PyQt and Qt libraries are pre-installed on target systems or must be compiled from source.
- Exact installation time and disk footprint on common platforms (Linux, macOS, Windows).
- Whether the adblock, pygments, and colorama optional dependencies are worth installing for typical workflows.
Package facts
| License | GPL-3.0-or-later (copyleft) |
| Python support | supports the current Python release (>=3.9) |
| Install friction | high — source build required |
| Runtime dependencies | 2 — jinja2, PyYAML |
| Maintenance | actively maintained — 133 days since the last release |
| First released | |
| Downloads | 87,782/month — #13,770 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: qutebrowser-3.7.0.tar.gz
Keywords: pyqt, browser, web, qt, webkit, qtwebkit, qtwebengine
Tags
More Internet packages
Botocore provides low-level, data-driven access…
permissive · top 100 on PyPI
aiobotocoreProvides an async client for AWS services using…
permissive · top 100 on PyPI
pydanticPydantic validates Python data structures…
permissive · top 100 on PyPI
filelockProvides a platform-independent file locking…
permissive · top 100 on PyPI
fastapiFastAPI is a Python web framework for building…
permissive · top 100 on PyPI
googleapis-common-protosProvides common Protocol Buffer message…
permissive · top 100 on PyPI
PyQtWebEnginePyQtWebEngine provides Python bindings to embed…
copyleft · top 15,000 on PyPI
PyQt6-WebEnginePyQt6-WebEngine provides Python bindings to…
copyleft · top 15,000 on PyPI
PyQt5PyQt5 provides Python bindings for the Qt v5…
copyleft · top 5,000 on PyPI
QtAwesomeQtAwesome provides iconic fonts—Font Awesome,…
permissive · top 15,000 on PyPI
aqtaqt is the Qt-based desktop GUI for Anki, the…
agpl · top 15,000 on PyPI
PyQt6PyQt6 provides Python bindings for Qt v6,…
copyleft · top 5,000 on PyPI
pywebviewpywebview wraps native webview components to…
permissive · top 5,000 on PyPI
superqtProvides additional Qt widgets and UI…
permissive · top 15,000 on PyPI
pytest-qtpytest-qt is a pytest plugin that provides…
permissive · top 5,000 on PyPI
PyQtWebEngine-Qt5Provides the Qt5 runtime libraries required by…
copyleft · top 15,000 on PyPI