A keyboard-driven, vim-like browser based on PyQt5.
Python JavaScript Cucumber HTML Shell CSS
Failed to load latest commit information.
.github Improve GitHub issue template Aug 5, 2016
doc implement optional download-open handler setting Dec 16, 2016
icons Add xpm version of the 32x32 png logo May 3, 2016
misc Switch from CherryPy to cheroot, take 2 Jan 23, 2017
qutebrowser Really fix Python 3.6 deprecation warnings Jan 18, 2017
scripts freeze_tests: Add queue module for cheroot Jan 23, 2017
tests Switch from CherryPy to cheroot, take 2 Jan 23, 2017
www Always show scrollbar so the page doesn't jump around Oct 28, 2016
.appveyor.yml Use requirements files for tox dependencies May 29, 2016
.coveragerc Set source in .coveragerc. Oct 23, 2015
.editorconfig Add basic editorconfig for enforcing style Apr 6, 2016
.flake8 flake8: Get rid of 'hacking' plugin Nov 8, 2016
.gitignore Add a QtWebEngine C++ testbrowser Nov 2, 2016
.pydocstylerc Add a .pydocstylerc. Jan 30, 2016
.pylintrc Fix lint Nov 4, 2016
.travis.yml travis: Set matrix.fast_finish Nov 16, 2016
CHANGELOG.asciidoc Update changelog Jan 13, 2017
CONTRIBUTING.asciidoc Win Dev Environment instructions Oct 25, 2016
COPYING Add GNU GPL Feb 6, 2014
FAQ.asciidoc Update 9. How do I play Youtube videos with mpv? May 3, 2016
INSTALL.asciidoc Add python3-pyqt5.qtquick to INSTALL Dec 27, 2016
MANIFEST.in Adjust .eslint* paths in MANIFEST.in Aug 9, 2016
README.asciidoc Update authors Jan 7, 2017
codecov.yml Add a codecov.yml May 2, 2016
pytest.ini Xfail tests which fail on Docker/Travis Dec 20, 2016
qutebrowser.desktop Add Keywords entry to comply with freedesktop guidelines Dec 10, 2016
qutebrowser.py Revert "[DONOTMERGE] Re-run Codecov" Dec 22, 2016
requirements.txt requirements: Update Pygments to 2.2.0 Jan 22, 2017
setup.py Check pep257 via flake8. Feb 10, 2016
tox.ini tox: Switch to Python 3.6 Jan 13, 2017



qutebrowser logo A keyboard-driven, vim-like browser based on PyQt5 and QtWebKit.

license badge version badge requirements badge Build Status AppVeyor build status coverage badge

qutebrowser is a keyboard-focused browser with a minimal GUI. It’s based on Python, PyQt5 and QtWebKit and free software, licensed under the GPL.

It was inspired by other browsers/addons like dwb and Vimperator/Pentadactyl.


screenshot 1 screenshot 2 screenshot 3 screenshot 4


See the github releases page for available downloads (currently a source archive, and standalone packages as well as MSI installers for Windows).

See INSTALL for detailed instructions on how to get qutebrowser running for various platforms.


In addition to the topics mentioned in this README, the following documents are available:

Getting help

You can get help in the IRC channel #qutebrowser on Freenode (webchat), or by writing a message to the mailinglist at qutebrowser@lists.qutebrowser.org.

Contributions / Bugs

You want to contribute to qutebrowser? Awesome! Please read the contribution guidelines for details and useful hints.

If you found a bug or have a feature request, you can report it in several ways:

For security bugs, please contact me directly at mail@qutebrowser.org, GPG ID 0xFD55A072.


The following software and libraries are required to run qutebrowser:

The following libraries are optional and provide a better user experience:

To generate the documentation for the :help command, when using the git repository (rather than a release), asciidoc is needed.

On Windows, colorama is needed to display colored log output.

See INSTALL for directions on how to install qutebrowser and its dependencies.


Working on qutebrowser is a very rewarding hobby, but like (nearly) all hobbies it also costs some money. Namely I have to pay for the server and domain, and do occasional hardware upgrades [1].

If you want to give me a beer or a pizza back, I’m trying to make it as easy as possible for you to do so. If some other way would be easier for you, please get in touch!


Contributors, sorted by the number of commits in descending order:

  • Florian Bruhin

  • Daniel Schadt

  • Ryan Roden-Corrent

  • Jakub Klinkovský

  • Jan Verbeek

  • Antoni Boucher

  • Lamar Pavel

  • Marshall Lochbaum

  • Bruno Oliveira

  • Alexander Cogneau

  • Felix Van der Jeugt

  • Daniel Karbach

  • Martin Tournoij

  • Kevin Velghe

  • Raphael Pierzina

  • Joel Torstensson

  • Patric Schmitz

  • Tarcisio Fedrizzi

  • Claude

  • Corentin Julé

  • meles5

  • Philipp Hansch

  • Panagiotis Ktistakis

  • Artur Shaik

  • Nathan Isom

  • Thorsten Wißmann

  • Austin Anderson

  • Fritz Reichwald

  • Jimmy

  • Niklas Haas

  • Maciej Wołczyk

  • Spreadyy

  • Alexey "Averrin" Nabrodov

  • nanjekyejoannah

  • avk

  • ZDarian

  • Milan Svoboda

  • John ShaggyTwoDope Jenkins

  • Clayton Craft

  • Peter Vilim

  • knaggita

  • Oliver Caldwell

  • Julian Weigt

  • Sebastian Frysztak

  • Jonas Schürmann

  • error800

  • Michael Hoang

  • Liam BEGUIN

  • Julie Engel

  • skinnay

  • Zach-Button

  • Tomasz Kramkowski

  • Samuel Walladge

  • Peter Rice

  • Nikolay Amiantov

  • Ismail S

  • Halfwit

  • David Vogt

  • Claire Cavanaugh

  • rikn00

  • kanikaa1234

  • haitaka

  • Nick Ginther

  • Michał Góral

  • Michael Ilsaas

  • Martin Zimmermann

  • Jussi Timperi

  • Brian Jackson

  • thuck

  • sbinix

  • neeasade

  • jnphilipp

  • Tobias Patzl

  • Stefan Tatschner

  • Samuel Loury

  • Peter Michely

  • Panashe M. Fundira

  • Link

  • Larry Hynes

  • Johannes Altmanninger

  • Jeremy Kaplan

  • Ismail

  • Edgar Hipp

  • Daryl Finlay

  • arza

  • adam

  • Samir Benmendil

  • Regina Hug

  • Mathias Fussenegger

  • Marcelo Santos

  • Joel Bradshaw

  • Jean-Louis Fuchs

  • Franz Fellner

  • Eric Drechsel

  • zwarag

  • xd1le

  • rsteube

  • rmortens

  • oniondreams

  • issue

  • haxwithaxe

  • evan

  • dylan araps

  • addictedtoflames

  • Xitian9

  • Tomas Orsava

  • Tom Janson

  • Tobias Werth

  • Tim Harder

  • Thiago Barroso Perrotta

  • Sorokin Alexei

  • Simon Désaulniers

  • Rok Mandeljc

  • Noah Huesser

  • Moez Bouhlel

  • Matthias Lisin

  • Marcel Schilling

  • Lazlow Carmichael

  • Kevin Wang

  • Ján Kobezda

  • Johannes Martinsson

  • Jean-Christophe Petkovich

  • Jay Kamat

  • Helen Sherwood-Taylor

  • HalosGhost

  • Gregor Pohl

  • Eivind Uggedal

  • Dietrich Daroch

  • Derek Sivers

  • Daniel Lu

  • Arseniy Seroka

  • Andy Balaam

  • Andreas Fischer

The following people have contributed graphics:

  • Jad/yelo (new icon)

  • WOFall (original icon)

  • regines (key binding cheatsheet)

Thanks / Similar projects

Many projects with a similar goal as qutebrowser exist:

  • dwb (C, GTK+ with WebKit1, currently unmaintained - main inspiration for qutebrowser)

  • vimb (C, GTK+ with WebKit1, active)

  • vimprobable (C, GTK+ with WebKit1, dead)

  • surf (C, GTK+ with WebKit1, active)

  • luakit (C/Lua, GTK+ with WebKit1, not very active)

  • jumanji (C, GTK+ with WebKit1, not very active)

  • uzbl (C, GTK+ with WebKit1/WebKit2, active)

  • conkeror (Javascript, Emacs-like, XULRunner/Gecko, active)

  • lispkit (quite new, lisp, GTK+ with WebKit, active)

  • Vimperator (Firefox addon)

  • Pentadactyl (Firefox addon)

  • VimFx (Firefox addon)

  • cVim (Chrome/Chromium addon)

  • vimium (Chrome/Chromium addon)

  • ViChrome (Chrome/Chromium addon)

  • Vrome (Chrome/Chromium addon)

Most of them were inspirations for qutebrowser in some way, thanks for that!

Thanks as well to the following projects and people for helping me with problems and helpful hints:

Also, thanks to:

  • Everyone contributing to the crowdfunding.

  • Everyone who had the patience to test qutebrowser before v0.1.

  • Everyone triaging/fixing my bugs in the Qt bugtracker

  • Everyone answering my questions on Stack Overflow and in IRC.

  • All the projects which were a great help while developing qutebrowser.


This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.


qutebrowser optionally uses pdf.js to display PDF files in the browser. Windows releases come with a bundled pdf.js.

pdf.js is distributed under the terms of the Apache License. You can find a copy of the license in qutebrowser/3rdparty/pdfjs/LICENSE (in the Windows release or after running scripts/dev/update_3rdparty.py), or online here.

1. It turned out a 160 GB SSD is rather small - the VMs and custom Qt builds I use for testing/developing qutebrowser need about 100 GB of space