Kiwix JS Windows
Offline Wikipedia Viewer (Version )
Packaged ZIM archive:
- Adding archives and languages
- Changelog and Features
- File handling and File System access
- Title search syntax and alphabetical ZIM Archive Index
- Full-text search
- Removing navigation bars
- Link handling, dynamic content and image download
- Window and tab management
- Browser support
- Technical Information
- Feedback and Support
- Credits and Licence
- Official site : https://www.kiwix.org/
DISCLAIMER: Please be aware that Kiwix works with offline archives. To get updated info, you will need to
download a new archive periodically. Information in official archives is free, open source and provided by volunteers.
Kiwix gives no guarantee as to the accuracy of information in the archives you access with this app.
Kiwix aspires to make the world's knowledge available to everyone for free. If your Internet access is expensive, slow, unreliable, insecure or censored, you can still gain access to a huge repository of knowledge and culture in almost every language using Kiwix offline archives.
To use this app, you will need to obtain/download one or more archives (called ZIM archives). You can download them in this app (see Usage below), or if you know someone with an archive you want, you can also share archives, e.g. on a USB stick. Archives are available in many different languages for resources such as Wikipedia, WikiMed, Wiktionary, Wikivoyage, Project Gutenberg, TED Talks, Stackexchange, etc. You can access this virtual offline encyclopaedia even if you are undertaking a long plane journey, hiking, and travelling or living in areas with weak or non-existent Internet access.
Offline archives use the OpenZIM format. This app is regularly tested with a range of different archives, and works with almost all of them, depending on the capabilities of your browser or framework. There is now full support for Zimit archives, including preliminary support for next-generation Zimit v2. For more information on Zimit and how to make your own ZIM archives, see youzim.it. Zimit classic archives usually work best in browsers/frameworks that support Service Worker mode (see below).
You can search through the titles of articles in each archive to find the one you want, or view all the article titles with the ZIM Archive Index (see Title search). There is experimental support for full-text search in the PWA and Electron apps (for ZIM archives that include a full-text index). Please note that UWP and NWJS apps are not yet supported.
On some Wikipedia and Wikivoyage (English and German) pages you will see map pins: . By default, on Windows 10/11, you can tap this icon to open the Windows Maps app at the selected location. In the UWP and PWA versions of this app, this will work offline if you have downloaded the map for the relevant country or region in the Windows Settings for Offline Maps. If you are not using Windows, then in Configuration, you can change this action so that the pin opens an online OpenStreetMap centred on the map pin instead.
Step 1: Download some content
You can browse the Kiwix repository on the Configuration page, and the app will provide instructions according to the type of file you download. Alternatively, visit https://download.kiwix.org/zim/ or https://library.kiwix.org using a regular computer. To use all the features of ZIM archives that have dynamic content (e.g. PhET), the needs to be running in PWA/ServiceWorker mode (see Performance/compatibility settings in configuration), which is available in modern browsers (on iOS devices it is only available in Safari).
Step 2: Copy the content onto your device
If you have enough space, you can put several archives on your device storage. If you download the content directly in the app, ensure you save the file to the device and note the location of the file once the download has completed. For PC users: if you see that the ZIM archive has a Kiwix icon, you may be able to open it by double-clicking it. For Mobile users: if you downloaded via a PC, you will generally need to use a USB cable to copy the ZIM archive(s) to an accessible location on your device, such as the SD card or the main storage area if there is enough space there.
Step 3: Go to the "Configure" menu and select your ZIM file (or double-click / drag-and-drop your file into the app)
On the Configuration page, tap the "Select storage" button. If you have downloaded more than one archive, or you have a split ZIM archive consisting of several 2GB files, then you will need to pick the folder that contains these files or else (in older browsers) you will need to select all the split parts. If you have just one unsplit ZIM archive, you can instead pick the file directly, using the respective buttons on the Configuration page (you may need to tap "Select Storage" first). In most modern contexts the archive will be remembered on next launch (Firefox, Safari and IE11 are exceptions). If in the future you add more files to a folder you have selected, then you can use the rescan button to refresh the list of archives in the folder.
Alternatively, in the UWP app, and experimentally in an installed PWA on the PC, you can simply double-click the ZIM file to launch it in the app, even if the app is closed (your choice will be remembered on next launch). You can also drag-and-drop your ZIM file into the app, but it may not be remembered on next launch in all contexts (try it if this method interests you!).
Step 4: Enjoy your content offline!
Changes in 1.0
When installed, Kiwix JS Windows 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 with the optional exception of the last-visited page.
If you access this app from a secure web server (e.g. the PWA server), it will only work offline if your browser is capable of installing a Service Worker (note that on iOS devices, ServiceWorker mode only works in Safari). If you install, bookmark or add the PWA version to your home screen, then it will work offline (if ServiceWorker Mode is available), but note that by design any PWA will periodically check the PWA server (in this case, https://pwa.kiwix.org/), if it is available, to check for an updated Service Worker.
Electron and NWJS versions of the app may access GitHub on each start of the app to check for an update. The installer (setup) version for Windows, and the AppImage version for Linux, will also self-update. You can block the update check in these apps by unchecking the Allow Internet Access checkbox.
By default, this application will remember your last-visited page for each ZIM between sessions using local storage or a cookie that is accessible only by this app on this device. If you are accessing sensitive information that you do not wish to be displayed next time you open this app, we recommend that you turn this option off in the Configuration options.
This application only reads the archive files that you explicitly select on your device and files included in its own package: it is not capable of reading any other files. It will only access the Kiwix download server if you specifically request it to access the download library for ZIM archives on the Configuration page. If you run the app as a PWA, it will cache its own code from the secure PWA server and then can be used offline. Some ZIM archives contain active content (scripts) which may, in rare circumstances, attempt to contact external servers for incidental files such as fonts. These scripts will only run if you enable Service Worker mode in Configuration.
If you believe your Internet access is insecure, or is being controlled or censored, we recommend that you completely shut down your Internet access (Data or WiFi) before using the application.
Builds of this app are available that do not use a Store or an online Service Worker. Please see:
File handling and File System access
This app reads very large files stored on your device. All versions of the app can pick a file from any user-accessible location, and on desktop browsers, you can drag-and-drop any ZIM archive into the app. Some versions of the app can also be granted access to a folder or directory in which you may store several ZIM archives. If this option is available, you will see a "Select folder" button (after clicking "Select storage"). In almost all cases, except for installed Electron apps or if you are using the Origin Private File System (see below), you will be asked to grant permission to access previously picked files or folders every time the app launches (usually this is just one or two clicks). This is a security feature of your browser and operating system.
Chromium desktop browsers support the File Handling API when you install the PWA. This allows you to associate ZIM files with the app, so that when you double-click a ZIM file in your system's file explorer, it will open in the app. The first time you do this, you will be asked for permission to handle ZIM archives, and the browser will remember your choice. You can change your choice in the browser settings. Each time you launch a ZIM, it will open in a separate instance of the app, allowing you to browse multiple ZIMs at the same time. Note that multiple instances are not currently supported in the Electron/UWP apps.
Origin Private File System
In some modern browsers, you will see an experimental option "Use Private File System" under the File and Folder selectors. If you tick this option,
then the app will request an Origin Private File System
(OPFS) from the browser. Then, when you pick a ZIM file, instead of opening it, it will be stored in the OPFS. You may also select more than one archive to store in the OPFS,
including all the parts of a split ZIM file (
.zimab, etc.). Note that in this case, only the
.zimaa entry will be displayed in
the file list. If you drag-and-drop a file into the app while the OPFS is displayed, that file will be not be stored in the OPFS, but instead will be opened and displayed.
You may also download archives directly into the OPFS by using the appropriate download link in the Dowmload Library. Look for the link under "Direct download to Origin Private File System". Downloading this way is suitable for archives of up to around 2GB in size, depending on your download speed. Larger files may take too long, and it is generally better to use a browser-managed download link for very large files. Then, if you wish, you can move the file into the OPFS using the "Add file(s)" picker.
If you want to delete an archive from the Private File System, click the icon, and then click on the file you wish to delete. You will be asked for confirmation.
In some cases, you may be able to export an archive from the OPFS to the visible file system. Click the icon, and then click on the file you wish to export. The OPFS copy of the file is not deleted after export. If you do not see the export icon, then this feature is not available in your browser.
On iOS in Safari, the OPFS appears to be supported, but there is currently no way to download or move a file from the user-visible file system into the OPFS.
This is because the
WriteableFileStream API is not yet available on iOS, but it may become available soon.
The main advantages of the OPFS, especially on mobile, are:
- that the file system can be accessed by the app without needing to give permission, even after you relaunch the app (the last selected archive will automatically launch);
- Additionally, once a file is stored in the OPFS, access to it, e.g. on Android, is much faster than with standard file picking.
However, there are some limitations of the OPFS:
- the file system has a quota set by the browser, which may be very small in some browsers;
- on mobile OS, it can take a long time to store a file in the OPFS, especially if it is larger than 1GB. On Firefox for Android, importing a file is very slow -- it can be faster to download the file directly into the OPFS from the Download library;
- when you clear the app's data (e.g. clearing cookies, etc.), the browser can delete the file system and any files in it without warning;
- any file you store here will only be accessible by this app (unless you export it to the visible file system).
Title search syntax and alphabetical ZIM Archive Index
All versions of this app support basic title search, which is very fast and matches the start of an article title. Some versions may also support full-text searching (see below).
With title search, 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.
You can also use the wildcards
.+ as part of your title search (these follow regular expression syntax: if you
don't know the difference then use
.*). For example, you can search for 'list.*medieval', and you will get (in full English Wikipedia)
'List of Medieval bestiaries', 'List of Medieval topics', etc.
Incorrect search syntax! If you get this message, it's because you used a wildcard but the syntax was incorrect. Everything after
the wildcard must be a valid regular expression or else the search will fail! For simple text or numbers after a wildcard, don't worry, it'll work fine,
but you need to be aware that regular expressions reserve characters like '?', '(', '^', '$', '*', '+', so these (and others) must be used correctly if you
use wildcards with them. You might be able to correct an error by placing a backslash before each reserved character, e.g.
Wildcards can come anywhere in a string, including at the beginning. This works fine for Stackexchange, Gutenberg, PhET and similar ZIMs, and if full-text search is not available, using a wildcard is the only way to get all the Stackexchange questions on topics/words that don't have a tag. For Wikipedia, wildcards work best when they come after a simple string. If your search text starts with a wildcard in full English Wikipedia, it will start searching at the very beginning of the index and try to search through everything (there are millions of titles)! It will give up after somewhere between 250,000 and 1,000,000 searches (this is 10,000 x the value you set in Configuration for max search results).
You can now search for assets like images or other non-HTML files in a ZIM by prefixing a namespace. For example, in older ZIMs, all images are in namesapce
so you would type, e.g.,
I/aquarius. In newer ZIMs, all contents (including assets) are in namespace
C, so to distinguish images, you might
need to add a file extesnions, like
You can see the full alphabetical ZIM Archive Index by typing a space in the title search box. This is useful for ZIMs that have descriptive titles where you don't know the exact title you are searching for (e.g. Gutenberg or TED Talks, especially in jQuery mode, or for browsing Stackexchange or PhET). You can change your alphabet in Configuration for non-Roman alphabets. You can also show the full URL index by typing space / (a space followed by forward slash).
If not enough results are returned in your searches, you can increase the maximum number of search results using the slider in Configuration (under 'Other display settings and search').
For the geeks, you can also use full regular expressions enclosed in non-capturing parentheses, like
(?:My\sCrazy\sSearch(es)?$). Alternatively, you
can use full regex syntax after a wildcard (not before, except that '\s' will be converted to a space). Regex syntax will match titles in a case-insensitive manner.
You can search for different diacritics with a regex like 'discours.*m[eé]thode' or `Gonz.*[áa]lez I[nñ][áa]rrit[uùú]`. Long searches will give up after
maxSearchResultsSize * 10^4 title scans.
Some versions of this app (PWA and Electron-based) support full-text search if your ZIM has a full-text index. The API panel in Configuration will tell you whether the loaded ZIM and app support full-text search. A full-text search will be launched automatically after the title search if the latter didn't return the maximum number of results you have set in Configuration (default is 30). Users of iOS will need to be on iOS 15+ for full-text search to work (if you are on an earlier version, we recommend you disable use of libzim WASM/ASM in Expert settings -> Troubleshooting and development).
Full-text results are displayed after any matching title search results. Full-text search results can be considerably slower than title search with very large ZIM archives. If you see the search result you want, you can click on it without having to wait for the full-text results.
If you are using the PWA on Android, please note that full-text search is only enabled by default for archives in the Origin Private File System. This is because conventional file access on most Android versions is far too slow, but it is much faster in the OPFS. If you want to enable it in all cases, open the 'Troubleshooting and development' section in Configuration and select 'WASM' from the dropdown next to 'Force use of libzim W/ASM'.
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
Link handling, dynamic content and image download
This app does its best to handle links to special ZIM content, like active (dynamic) content, embedded videos, downladable content (EPUBs, PDFs) and images, but not everything works smoothly with every option.
The app can usually operate in two modes: "JQuery" (which manipulates the content of the article) and "ServiceWorker" (which tries to get out of the way and let the ZIM do its thing - see below under Technical information for a fuller explanation). JQuery mode doesn't support active or dynamic content. You will usually get an Active Content Warning popping up at the top of the landing page (Home) if you open a ZIM that requires you to switch to ServiceWorker mode. If you can't switch, you can often still access content in these archives by using title search or typing a space in title search to show the ZIM Archive Index (see above), but some things, especially any proprietary User Interface, won't work.
You can download images (as long as they haven't been inserted dynamically) by turning on the option Allow image manipulation in Configuration. Then you will be able to right-click an image and save it to disk or open it in a new tab (only tested in Wikimedia ZIMs). However, this doesn't work in the UWP or NWJS apps. Workaround for the UWP app: you can enable the Download or open current article (breakout link) option, export the article to a new browser tab (by clicking the Breakout icon), and then you will be able to manipulate images in the browser tab. Please note that enabling Image manipulation or the Download/ feature can interfere badly with some ZIMs that rely heavily on active content. So turn these options off if you are using such ZIMs.
You can download EPUBs and PDFs, e.g. from Gutenberg ZIMs, in JQuery mode, but the proprietary User Interface doesn't work (use title search instead). In the UWP Desktop app in ServiceWorker mode, you need to enable the option Open ZIM links in new tab (or window) in Configuration to be able to download EPUBs and PDFs. This isn't necessary in JQuery mode or in the PWA/ Electron/ NWJS apps. In JQuery mode, the app will offer to download videos so you can view them in a different application. This is useful if your system doesn't support the WebP video format (e.g. the mobile UWP app).
PhET ZIMs: These science and maths simulations only work in ServiceWorker mode. There is currently a bug which causes the experiment/ simulation to be shifted by several pixels, making it hard to click on the experiment's controls. WORKAROUND: Please switch the Hide toolbars while scrolling option to never. This eliminates the pixel shift. You may also have to use the title search or ZIM Archive Index (press a space in title seaarch) to find the experiments, as there is an unresolved issue with displaying the ZIM's User Interface.
Window and tab management
You can open ZIM links in a new browsable tab (or window) by setting the options in Configuration. Right-click (or double right-click if you set that option), ctrl-click, middle click and long press should all work. Somne contexts (e.g. mobile) don't support this option, or it works badly or very slowly. For those contexts, use the Download or open current article feature instead. With this feature, the tab is non-browsable, but you can save the page to PDF or print it, etc., from that tab.
Help! - when I click on an external link it gets blocked! Don't panic, this is the Content Security Policy potecting you. You have probably activated Service Worker mode. To open external web sites, you need to turn on the option Open links in a new tab (in Service Worker mode). In JQuery mode, external links will open in a new tab/window regardliness of this setting. Additionally, please note that your browser's popup blocker may be interfering with options that open new tabs or windows. When asked, enable popups always for the app (if you trust Kiwix), and then reload the app.
In most browsers and frameworks you can set the app to full-screen mode using the option in Configuration, and in Chromium and Firefox browsers you can also lock the orientation of the app while it is in full-screen mode. Because the browser may throw you out of full-screen mode, for example, when you select an archive or when opening a new window, you may need to click in the app to re-activate full-screen mode. Full-screen mode needs to be activated by a user gesture: it is not possible to activate it automatically.
We test the app frequently on older browsers and operating systems. The app will usually detect which features don't work on a given browser, and disable them or work around them. However, in some cases (e.g. Firefox <= 59), the app will set itself to Service Worker mode, but this mode will silently fail. If affected, please try switching the app to JQuery mode (see below).
We have a version of this app using the NWJS framework that runs on Windows XP/Vista, and there are Electron apps for 32bit and 64bit Linux and Windows 7/8/10/11 as well as a UWP (Store) app.
The PWA is fully supported for offline use in modern browsers on Android, iOS, macOS, Linux and Windows. On Android, Linux and Windows, using Chrome/Chromium browsers (including Edge and Samsung Internet), you can install the PWA using a button in Configuration for a near-native experience. On iOS in Safari, you can add the PWA to your Home screen, which has the same effect.
- Firefox >= 60 on all operating systems (but see note about Android*)
- Edge Chromium >= 79
- Chrome/Chromium >= 59 (and many browsers based on Chromium, e.g. Opera, Samsung Internet)
- Edge Legacy 18, including UWP
- Safari on iOS
* The Firefox on Android app only works well with files stored in the Origin Private File System. Picking files from the user-visible file system suffers from a Firefox bug whereby the app attempts to load the picked file into memory, which can take a very long time and may fail.
Although deprecated, we will keep support for as long as is practical:
- Internet Explorer 11 (JQuery mode only, no offline use of PWA)
- Edge Legacy <= 17 (JQuery mode only, no offline use of PWA)
- Firefox 45-59 (some versions require you to switch manually to JQuery mode)
- Chromium 49-58 (some versions only run in JQuery mode)
Depending on your browser or framework, this app may be capable of running in two different modes, which we call "ServiceWorker Mode" and "JQuery Mode" for short. There is a toggle under Performance/compatibility settings in Configuration. Here is an explanation of what these modes do:
Feedback / helping / contributing
This application is still a work in progress. There are bugs that need fixing and improvements that need to be implemented. Suggestions and patches/pull requests are welcome: the source code is on github. The Kiwix JS Windows issue tracker is on GitHub too, though also check the tracker for Kiwix JS as a lot of the development is done for both apps.
Alternatively, you can send your feedback by email .
In all cases, 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 donations:
- to the Wikimedia foundation, to help maintaining their servers and article contents. See the donation page
- to Kiwix, to help maintaining the ZIM files and applications. There is a donation button in the home page of kiwix.org
You can also help by:
- Adding articles or improving the existing ones, by editing online Wikipedia articles
- Participating in the Kiwix project
Thanks are due to:
- Kelson and all the Kiwix community for welcoming peter-x, mossroy, jaifroid and sharun-s onto this project
- Wikipedia teams and contributors for helping to spread knowledge to everybody
- All the developers of libraries and tools we use for releasing them as Free software (see Licence paragraph)
Copyright 2013-2023 Jaifroid, Mossroy, Peter-x and other contributors
Jaifroid for adaptation and development of the app on the Universal Windows, Electron, NWJS and PWA Platforms
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:
- jQuery 3, released under the MIT Licence
- Bootstrap 3, released under the Apache Licence 2.0, which includes icons from Glyphicons
- rollup.js 3 for bundling this app, released under an MIT licence
- QUnit 2, released under an MIT Licence
- Kiwix logo from kiwix.org, released under a 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
- KaTeX for typesetting mathematical and chemical equations, released under the MIT licence
- Hilitor for finding and hilighting text inside an article, released under this licence
- DarkReader for converting Web pages to dark mode, released under an MIT Licence
- The Web Archive Browsing Advanced Client and Wombat Client-Side Rewriting Library from the WebRecorder ReplayWeb project, released under a GNU Affero General Public Licence
Other Kiwix clients exist on various platforms. See the official site : https://www.kiwix.org/.
Version: Kiwix JS [check for updates]Open this app in your system browser:
For instructions and usage guide, please see the About tab (top right).
Packaged ZIM archive:
Scanning for archives... Please wait
Archives found on this device (tap "Select storage" to rescan):
There were no ZIM file(s) found in the selected location!
Pick ZIM archive(s):
For multiple or split archives:
Please choose the location of your ZIM archive or drag-and-drop the file(s) here.
For a split archive (.zimaa, .zimab, etc.) you must select all the split parts.
|Opens library of archives for download:
Warning: this will use data
To clear all data from the app, consider a full app reset after your browsing session (see under Expert settings)
Performance / compatibility
Speed up the display of articles by caching assets:
See About (Technical settings) for an explanation of the difference between these modes:
Warning! Disables OS/ZIM checks and may make title search and article reading unresponsive!
Reset the app to default settings and erase all caches:
It will suggest articles starting with the letters you type.