Introduction
Qutebrowser is a keyboard-focused web browser that uses Vim-style keybindings for navigation. Built on Python and QtWebEngine (Chromium), it provides a minimal interface where nearly every action is performed via keyboard commands, making it popular among developers who prefer terminal-centric workflows.
What Qutebrowser Does
- Navigates the web entirely through keyboard shortcuts with Vim-style modal keybindings
- Follows links via hint mode, where each link gets a short letter label to press
- Manages tabs, bookmarks, and history through command-mode or keyboard shortcuts
- Supports userscripts and Greasemonkey scripts for page-level customization
- Renders modern web pages using the QtWebEngine (Chromium) backend
Architecture Overview
Qutebrowser is written in Python using the Qt framework. It uses QtWebEngine (based on Chromium) for page rendering, which provides modern web standards support. The keybinding layer is a custom modal input system inspired by Vim, with normal, insert, command, and hint modes. Configuration is done through a Python file or YAML, and the internal command system can be extended with Python userscripts that interact with the browser via IPC.
Self-Hosting & Configuration
- Install from distribution package managers on Linux, or via Homebrew on macOS
- Configure via
~/.config/qutebrowser/config.pyusing Python syntax for full flexibility - Customize keybindings, search engines, ad-blocking lists, and appearance through config directives
- Built-in ad blocking uses Brave's filter lists by default, configurable to use host-based blocking
- Supports per-domain settings for JavaScript, cookies, and other permissions
Key Features
- Full Vim-style keybinding system with modal editing (normal, insert, command, hint modes)
- Hint-based link following that assigns letter labels to clickable elements
- Python-based configuration file for programmatic customization
- Built-in ad blocker using filter lists without requiring extensions
- Lightweight resource usage compared to mainstream Chromium-based browsers
Comparison with Similar Tools
- Nyxt — Lisp-based programmable browser; Qutebrowser uses Python and QtWebEngine with Vim keybindings
- Vimium (extension) — Adds Vim bindings to Chrome/Firefox; Qutebrowser integrates them at the browser level
- surf — Suckless minimal browser; Qutebrowser provides more features while maintaining keyboard-first design
- Brave — Privacy-focused Chromium fork with GUI; Qutebrowser targets keyboard-driven workflows
FAQ
Q: Does Qutebrowser support browser extensions? A: Qutebrowser does not support Chrome or Firefox extensions. It provides built-in ad blocking and userscript support as alternatives.
Q: Can I use a mouse with Qutebrowser? A: Yes. Mouse interactions work normally. The keyboard-driven design is an option, not a requirement.
Q: Is Qutebrowser based on Chromium? A: It uses QtWebEngine for rendering, which is built on Chromium's Blink engine. The browser shell itself is written in Python.
Q: How do I search from the address bar? A: Press "o" to enter a URL, or type a search engine prefix followed by your query. Search engines are configurable in the config file.