Kiwix: Offline Browser
Official site: https://www.kiwix.org
- About this app
- Search usage
- Removing navigation bars
- Image download
- Technical information
- Licence information
- Other platforms/versions
- Download ZIM archives (content):
About this app
If your Internet access is expensive, slow, unreliable, controlled or censored, you can still gain free offline access to many valuable resources. Carry the world's largest Encyclopaedia around in your pocket, in any language, or a worldwide Travel Guide when you are on the road!
To use this app, you will need to download, completely free, one or more archives (called ZIM archives) from the Kiwix website and store them on your device or a thumb drive / external drive. You will then be able to access your chosen content totally offline.
Archives are available with content in many different languages from sources such as Wikipedia, Wiktionary, WikiMed, Wikivoyage, Project Gutenberg, Stack Exchange, TED Talks and many others. There are also "themed" archives with selected topics of interest such as medicine, movies, history, geography, maths, physics, etc.
Step 1: Choose your content
Go to https://library.kiwix.org (easy-to-use graphical interface, archive previews) or https://download.kiwix.org/zim/ (traditional file list), and select the archives that interest you in your favourite language(s). If you don't have Internet access, you can also access/share content from a USB stick.
For a quick test, we recommend you start with a small archive containing all the Wikipedia articles about climate change in English.
Wikipedia archives with "mini" in the filename are the smallest, since they only contain the introduction of each article; "nopic" means no pictures; "maxi" means everything except video and audio. The largest files without any of these qualifiers are complete. Note that you can only see the filenames easily in the traditional file list .
Before downloading non-Wiki ZIM types, check if your browser supports ZIM archives with dynamic content: look at the bottom of the Configuration page, in the API panel, and if you see "ServiceWorker API available and registered" in green, then the app can read all ZIM types. Otherwise you should mostly stick to MediaWiki (Wikipedia, Wikivoyage, Wiktionary...) and Stack Exchange archives (see modes below for an explanation).
Step 2: Download or copy the content onto your device
Download your chosen content and/or copy it into a dedicated ZIM folder on your device's storage. Check the size before you download archives as many file sizes are very large (several Gigabytes). Themed versions such as WikiMed, or versions without images, are much smaller than full Wikipedia archives and can be readily downloaded in your browser.
If you don't have enough internal storage, consider using a modern microSD card, an external hard drive, or thumb drive. For larger archives (greater than 2GB) on older devices, it is possible that an archive might not be supported if your storage is formatted using a FAT filesystem (NB exFAT is fine). See Downloading large archives below for a solution.
Step 3: Select your file or drag-and-drop
Go to the "Configure" menu and select your archive, or select the folder containing your ZIM archives if you are offered that option. You can also drag and drop the file into the the open app (if you have a split file, be sure to drag all parts).
Step 4: Enjoy your offline content!
Title and full-text search usage
There are three types of search:
Title search matches the start of an article title, so if you search for 'France' you will get 'France (country)', 'France (disambiguation)', 'France (film)', etc. This kind of search tries to be case-insensitive, but the number of case variants tried is necessarily limited. If not enough results are returned, you can increase the maximum number of search results using the slider in Configuration.
Alphabetical search: If you type a letter of the alphabet in the search box (upper case may be most useful), it will show an alphabetical list of articles starting with that letter. This is useful for ZIM archives that have descriptive rather than semantic titles (e.g. TED Talks). You can also display a list of all titles (up to the limit set in Configuration) simply by clicking the search button without typing anything.
Full-text search: This type of search is only availalbe in relatively recent desktop browsers, and if the archive contains a full-text index. If it is supported, it will be used automatically, but it is slower than title search, and you may notice a delay before results are added to the title-search results. Additionally, full-text search cannot be used if your archive is split into various chunks. To see whether it is available, look in the API panel at the bottom of the Configuration page after you have loaded a ZIM. If it says "Xapian [fulltext]" then it should be automatically enabled for that ZIM.
Removing navigation bars
The default setting is for the top and bottom navigation bars to slide away when you scroll down and slide back when you scroll up. However,
in some ZIM archives, e.g. PhET, it is not possible to scroll, and the navigation bars can obscure some content. In this case, in most browsers
you can swipe decisively up or down on the window (with touch or with the mouse wheel/touchpad) to toggle the display of the navigation bars.
In all browsers, you can also use the
Unfortunately it is not usually possible to download and save an image from a ZIM article using the context menu (after right-clicking or long-pressing the image). One workaround is to choose "Copy Image" in the context menu, then paste it in any suitable software (Paint, Gimp etc, or even a Word processor), and then save it from there.
Kiwix JS works offline, and does not collect or record any of your personal data. It only remembers your browsing history for the duration of a session (for the purpose of returning to previously viewed pages). This history is lost on exiting the app and is not recorded in any way.
This application only reads the archive files that you explicitly select on your device together with files in its own package. Some ZIM archives contain active content (scripts) which may, in rare circumstances, attempt to contact external servers for incidental files such as fonts. We have a Content Security Policy which attempts to prevent this, but it is not possible to guarantee that all such requests will be blocked, for example if a ZIM were to contain intentionally malicious code that can break the sandbox. Please note that scripts will only run if you enable ServiceWorker Mode (the default) in Configuration. Nevertheless, if you believe your Internet access is insecure, or is being observed or censored, we recommend that you completely shut down your Internet (Data or WiFi) access before using the application.
ZIM archive format
Offline archives use the OpenZIM format , but note that this app has only been tested extensively on MediaWiki (Wikipedia, Wikivoyage, etc.), Gutenberg, Stackexchage and TED Talks archives. Video content is supported if your device, browser or OS understands the format. Some ZIMs use a proprietary dynamic UI which is only supported in ServiceWorker Mode (see below).
Downloading and storing large archives
Full versions of Wikipedia can be enormous: French, German and Spanish Wikipedia with images are each >25GB; full English Wikipedia with images is >90GB. For these very large archives you can find convenient BitTorrent links provided by library.kiwix.org , which may be more reliable than attempting to use your browser. You can use an open-source BitTorrent client such as QBittorrent with these links (install the software before clicking on the torrent link).
If you need to store a large ZIM archive on an older filesystem formatted as FAT16 or FAT32, you need to be aware of the file size limits of those systems
(FAT16 < 2GiB; FAT32 < 4GiB). Most modern microSD cards, thumb drives or hard drives are formatted as exFAT or another modern FS such as NTFS, which do not
have this issue. If your ZIM archive is larger than the FS limit, it is possible to split the archive into several 2GiB-1 or 4GiB-1 files (or smaller).
You will need to give a file extension to each chunk in the right order following this pattern:
..., etc.). When you pick this archive in the app, be sure to pick all the chunks, or drag-and-drop them all into the app.
For some information on how to split archves, see Download a ZIM archive .
ServiceWorker and JQuery modes
Depending on your browser or framework, this app may be capable of running in different modes, which we call "ServiceWorker Mode" and "JQuery Mode". There is a toggle under Compatibility Settings in Configuration that allows you to select between these. Here is a technical explanation of what these modes do:
ServiceWorker Mode: This is the default mode. As its name implies, it requires that the browser or framework
be capable of installing a Service Worker, which is usually the case in modern browsers. It works by intercepting
the browser or framework's Fetch calls (network requests) and supplying the requested content from the ZIM. In this
proprietary UIs are fully supported in this mode. This mode can feel initially a little
slower than JQuery mode until commonly used assets are cached, but it soon equals JQuery mode in speed, at least in
modern browsers. However, older browsers such as IE11 are incompatible with this mode, and the app must be running
in a secure context (
localhost, or certain browser extensions). While this mode is not natively supported in Mozilla (Firefox) browser extensions, we provide a functional workaround by re-launching the extension as a Progressive Web App (PWA). Note that this mode cannot run with the
file:protocol (but only IE11 and old Edge allow the app to run by launching
index.htmlfrom the file system).
Feedback / helping / contributing
We welcome constructive feedback and suggestions for improvement. We will consider feature requests, but it is even better if you can contribute to improving the app! The source code is on GitHub , and we welcome Pull Requests (but open an issue and discuss your proposal first).
The bug and issue tracker is on GitHub too. We use it as our roadmap. Alternatively, you can send your feedback by email. In all cases, if you are reporting a bug, please give as much detail as you can: which device you are using, which version of Kiwix, which archive, which articles etc.
If you like the Kiwix project and use it, please consider giving a donation at https://support.kiwix.org to help maintain our servers, ZIM files and applications. You can also help by:
- Adding articles to Wikipedia or improving the existing ones, by editing articles ;
- Participating in the Kiwix project.
We owe a big debt of gratitude to:
- Kelson and all the Kiwix community for welcoming us to this project;
- Wikipedia teams and contributors for helping to make knowledge available to everybody;
- All the developers of libraries and tools we used, for releasing them as Free software (see libraries and tools paragraph).
Copyright 2013-2023 Mossroy, Peter-x, Jaifroid and other contributors.
This application is licensed under the GPL v3 Licence:
Kiwix is free software: you can redistribute it and/or modify it under the terms of the GNU General Public Licence as published by the Free Software Foundation, either version 3 of the Licence, or (at your option) any later version.
Kiwix 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 Licence for more details.
You should have received a copy of the GNU General Public Licence along with Kiwix (file LICENSE-GPLv3.txt). If not, see https://www.gnu.org/licenses/.
Main libraries and resources used:
- The core-js library, copyright Sebastian McKenzie and contributors, released under an MIT Licence
- jQuery 3.7, released under the MIT Licence
- Bootstrap 4, released under an MIT Licence
- Fontawesome Free, icons licensed under CC BY 4.0 Licence, code licensed under a MIT Licence
- QUnit 2, released under the MIT Licence
- Kiwix logo from kiwix.org, released under the Creative Commons Attribution Share Alike Licence
- OpenZIM specifications from www.openzim.org, released under the Creative Commons Attribution Share Alike Licence
- The Zstandard library, released under a BSD Licence and a GPLv2 Copying Licence
- The WebP-Hero browser polyfill, copyright Chase Moskal, released under an MIT Licence
- The http-server, copyright Charlie Robbins, Marak Squires, Jade Michael Thornton and contributors, released under an MIT Licence
- Vite Frontend Tooling, copyright Yuxi You and Vite contributors, released under an MIT Licence
- The TestCafé suite, copyright Developer Express Inc., released under an MIT Licence
- Selenium WebDriver, copyright The Software Freedom Conservancy, released under an Apache Lincence v2
- Mocha Testing Framework, copyright The OpenJS Foundation and Mocha contributors, released under a Creative Commons Attribution 4.0 International Licence
- i18next Internationalization Framework, copyright i18next, released under an MIT Licence
Other Kiwix clients exist on various platforms such as desktop and mobile apps for Linux, Windows, Android and iOS. We also have an offline-first, fully featured PWA based on the code in Kiwix JS: https://pwa.kiwix.org .
See the official download site: https://www.kiwix.org/applications/ .
This application needs a ZIM archive to work.
For full instructions, please see the section About.
Drag and drop a new ZIM file, or display file selectors.
Please select or drag and drop a .zim file (or all the .zimaa, .zimab etc in case of a split ZIM file):
Only ZIMs with static content (e.g. Wiki-style) are supported in JQuery mode.
For information on ZIM compatibility, see About (Usage).
Scanning for archives... Please wait
archive(s) found in selected location.
Please select the archive you want to use:
(Re-pick folder if there is new content on your device)
Rescans your SD Cards and internal memory
(Auto themes match the dark/light mode of your device.)
* Implements workarounds specific to Wikimedia ZIMs. Try generic option if there are display errors with recent ZIMs.[ Show article with applied theme ]
Kiwix JS can speed up the display of articles by caching assets:
Select max number of search results:
See About (Technical Information) for an explanation of the difference between these modes:
Work around anti-fingerprinting measures by substituting WebP images with canvas elements (setting determined automatically, can be disabled):
Reset the app to default settings and erase all caches: