Library / SDK
kiwix/kiwix-desktop avatar
kiwix/kiwix-desktop

Kiwix Desktop for Reading and Managing ZIM Archives

Kiwix for Windows and GNU/Linux desktops

1,518 stars193 forksC++GPL-3.0

At a glance

What is it?
Kiwix Desktop is a GPL-3.0 C++ application for Windows and GNU/Linux that opens ZIM archives and makes their Web content available offline, primarily for Wikipedia. It combines a Qt6 desktop interface with Qt6 WebEngine, libzim, libkiwix and aria2.
Who is it for?
Kiwix Desktop fits users who already have ZIM archives, especially readers who need Wikipedia available without a network connection. It is less suitable for people who need a simple way to find, download and keep library content current, because the README documents archive reading and management but does not describe a catalog or update workflow.
Can I use it commercially?
Yes, with conditions. GPL-3.0 is a copyleft licence: if you distribute software that includes it, you must release that software's source code under the same licence. Running it internally without distributing it does not trigger that obligation.
Is it still maintained?
Yes. The repository last received commits 1 day ago.
What is it written in?
Mainly C++, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 22, 2026, and from our analysis. They are not legal advice.

Editorial analysis

Kiwix Desktop and the offline ZIM use case

Kiwix Desktop addresses the problem of reading Web content after the original site is no longer reachable or the network is unavailable. Its primary target is Wikipedia, but the application is a general viewer and manager for ZIM files. A ZIM file is described by the README as a highly compressed open format with additional metadata. That format is the central content boundary: Kiwix Desktop does not serve live Web pages directly. It opens an archive that has already been packaged for local use and exposes that packaged content through its viewer.

The project is aimed at desktop users on recent GNU/Linux versions and Microsoft Windows 10 and 11. It is written primarily in C++ and uses a Qt desktop interface. This places it between a document reader and a browser-like surface. The application also provides a way to manage ZIM files, although the README does not document a complete library catalog, metadata search interface or automatic archive refresh workflow. Users should therefore distinguish between opening an existing archive and obtaining suitable archive content.

The Qt6 WebEngine and custom zim: rendering path

Kiwix Desktop uses Qt6 WebEngine to render ZIM content. The repository documentation states that the application relies on a custom `zim:` protocol to expose ZIM data to the Web engine. That design is significant because ZIM content is not merely a plain document format in this application. The archive is presented to the rendering component through a protocol handler, allowing the WebEngine to load pages and resources represented inside the archive.

The repository layout supports this interpretation. The project includes `src/`, `ui/`, `resources/`, `subprojects/` and a Qt project file named `kiwix-desktop.pro`, indicating a native application with separate source, interface and resource areas. The README also documents browser-side debugging through Chromium DevTools. When a rendering problem occurs, the documented path is to set `QTWEBENGINE_REMOTE_DEBUGGING` before launching, open a ZIM file in the interface, and visit the local debugging endpoint in a Chromium-based browser. This gives an engineer or advanced user a way to inspect the WebEngine view rather than treating rendering failures only as application startup errors.

The mechanism does not make Kiwix Desktop an online browser. It is an offline renderer for archive content, and the documentation does not claim that it bypasses the normal need to possess or obtain a ZIM archive.

Building Kiwix Desktop from the main branch

The README documents source compilation for Ubuntu 24.04 or newer. It lists `libzim`, `libkiwix`, Qt6 and `aria2` as required libraries. The first documented step installs the Qt6 packages needed by the build:

bash
sudo apt install qt6-base-dev qt6-base-dev-tools qt6-webengine-dev
     libqt6webenginecore6-bin libqt6svg6

This installs development headers, tools, WebEngine support and the Qt6 SVG package. It does not by itself install the Kiwix library dependencies, so the README says that `libzim` and `libkiwix` must also be available. The application depends on `libkiwix` being built dynamically. If the system packages are missing or too old, the README directs developers to `kiwix-build`, which is the documented route for obtaining and building the library dependency.

After the dependencies are available, the project can be compiled from its root directory:

bash
qmake .
make

`qmake` uses `pkg-config` to locate libraries. A locally installed `libkiwix` may require `PKG_CONFIG_PATH` to point at its pkg-config directory. The README gives this example form:

bash
export PKG_CONFIG_PATH="<...>/BUILD_native_dyn/INSTALL/lib/x86_64-linux-gnu/pkgconfig"

The placeholder must be replaced with the actual installation path. The build system then produces the application binary or install target described by the project.

Selecting Qt6 and installing the compiled application

A machine with both Qt5 and Qt6 installed can cause `qmake` to select an unintended Qt version. The README documents `qtchooser` for selecting Qt6 explicitly. This is particularly relevant because the current build instructions name Qt6, while older Qt5 installations may still be present on a developer workstation.

bash
qtchooser -install qt6 $(which qmake6)   # run once
export QT_SELECT=qt6                     # set in environments where Qt6 builds are desired
qmake --version

The documentation says that `qmake --version` should report Qt6 in its output. If compilation fails with `template-id` syntax errors in a Qt6 minor release, the README provides a compiler flag workaround for compilers that support it:

bash
qmake QMAKE_CXXFLAGS="-Wno-error=template-id-cdtor" .
make

That command suppresses promotion of those particular diagnostics to errors. It is a targeted build workaround, not a general renderer configuration.

Once compilation succeeds, installation is documented as:

bash
sudo make install

This writes the installed application according to the build system. On Linux, a library loading error may require refreshing the loader database:

bash
sudo ldconfig

The README also permits setting `LD_LIBRARY_PATH` to the directory containing a custom `libkiwix` installation when the loader cannot find it. This is relevant for local builds, but it shifts responsibility to the operator for a correct runtime path.

Launching Kiwix Desktop and opening an archive

The installed application is launched with:

bash
kiwix-desktop

The user then needs a ZIM file. The README does not document a command-line syntax for selecting a file, importing a library directory or creating an archive, so the safest first workflow is to launch the graphical interface and open an available ZIM file there. The application should then present the archive content through its Qt6 WebEngine-based viewer.

For troubleshooting rendering rather than installation, the README defines a separate debugging flow. Set an available local port in `QTWEBENGINE_REMOTE_DEBUGGING`, launch the application, open the desired ZIM file in the user interface, and then browse to `http://localhost:<port>` from a Chromium-based browser. That endpoint opens remote debugging UI for the ZIM page rendered by WebEngine. The documented value of `<port>` is a placeholder, not a fixed port supplied by the project.

This first-use sequence has a practical boundary. Kiwix Desktop is an archive reader and manager, not a general-purpose live Wikipedia browser. The user must already have a suitable ZIM archive, and the README does not state that opening the application downloads missing archives automatically.

Practical limits and the GPL-3.0 maintenance surface

The largest practical limitation is dependency complexity. A source build needs more than the desktop application itself. `libzim`, dynamically built `libkiwix`, Qt6, aria2 and pkg-config discovery all participate in getting a usable build. The README warns that operating-system packages may be absent or older than required, and it points to manual compilation of newer dependencies when necessary. This makes source installation less predictable than installing a prepared package.

The rendering path introduces another constraint. Because content is rendered through Qt6 WebEngine and a custom `zim:` protocol, an application build can fail before opening an archive if Qt6 WebEngine is missing or incompatible. The repository provides debugging access through Chromium DevTools, but it does not document support for every older operating system, nor does it claim that WebEngine can render archives created with any ZIM toolchain.

Kiwix Desktop is licensed under GPLv3 or later, as stated in the README and repository metadata. That license affects distribution and modification obligations, but this review does not provide legal advice. The repository is not archived, and the last push was on 2026-10-16. The project also lists Kiwix Desktop releases 2.5.1, 2.5.0 and 2.4.1. The README does not describe rollback procedures, upgrade migrations for user data or a compatibility policy between Kiwix Desktop versions. Those points should be checked before an organization standardizes on a particular release.

Editorial conclusion

Kiwix Desktop fits users who already have ZIM archives, especially readers who need Wikipedia available without a network connection. It is less suitable for people who need a simple way to find, download and keep library content current, because the README documents archive reading and management but does not describe a catalog or update workflow. Before adoption, verify that the required ZIM file is available, that Qt6 WebEngine works on the target system, and that the build dependencies, including libzim and libkiwix, are available at compatible versions. For source builds, confirm that qmake resolves the intended Qt6 installation before running make.

Frequently asked questions

What is Kiwix Desktop used for?

Kiwix Desktop is an offline viewer and manager for ZIM archives, primarily intended to make Wikipedia content available without a network connection. It runs on GNU/Linux and Microsoft Windows 10 and 11.

How do I build Kiwix Desktop on Ubuntu 24.04 or newer?

Install the listed Qt6 development packages, ensure `libzim`, `libkiwix` and `aria2` are available, then run `qmake .` followed by `make`. The README says that `libkiwix` must be compiled dynamically.

How do I troubleshoot ZIM rendering in Kiwix Desktop?

Launch `kiwix-desktop` with `QTWEBENGINE_REMOTE_DEBUGGING=<port>`, open the ZIM file in the interface, and visit `http://localhost:<port>` in a Chromium-based browser. This opens the remote debugging UI for the WebEngine-rendered page.

Official sources

  1. kiwix/kiwix-desktop on GitHub
  2. License: GPL-3.0
  3. Project website
  4. README
  5. Releases
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/kiwix-kiwix-desktop.svg)](https://hysenlabs.com/projects/kiwix-kiwix-desktop)

Was this useful?