## Welcome to Kiwix JS for Windows

#### Version 1.0 (changes)

### Please read this important information

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.

This application may be packaged with a small sample ZIM archive of the top 100 Wikipedia articles (without images and only the lede), so that you can get a feel for how offline Wikipedia browsing works. Please note, to keep the app size small this archive does not contain images apart from the landing page, and each article contains only the article summary (the introductory section). For the full experience you must download an offline ZIM archive and store it on your device! You can do this from the Configuration page , or else see the About page for more information.

Alternatively, if you only want Wikivoyage or WikiMed in English, look for "Wikivoyage by Kiwix" or "WikiMed" in the Microsoft Store (Windows 10) and install those apps instead.

Kiwix JS is free and open source. If you like it, please leave a positive review. Constructive feedback and help with improving the app are very welcome: see About section.

### Changes in version 2.0

- Critical bugfix for Electron app: libzim loading error with large ZIM archives due to race condition
- Prevent Electron app from rebooting on every load to reactivate the Service Worker
- Experimental use of libzim WASM port to read Full Text index in Electron/PWA apps only (not currently supported in UWP app)
- Information added to API panel to show status of Full Text index
- Run full-text and title search in parallel for faster return of results
- Sample archive changed to wikipedia_en_100_mini_2022-11
- Building Electron app on GitHub actions now downloads the latest packaged archive before cloud-building
- Removal of several JQuery functions, replaced with native DOM methods
- Remove some unused functions
- Fix critical startup bug which prevented opening of some packaged archives
- Fix bug which prevented reload of last visited page on re-launch of app
- When dark mode is set to auto, do not use darkReader for Wikimedia ZIMs

And there's more...

### Features in Version 2.x

- Download ZIM archives in-app from Download Library
- Read Zimit archives you create yourself with youzim.it
- Light and dark themes available
- Open a new browsable tab or window with long-press or Ctrl-click
- In-page searching and highlighting (Ctrl-Shift-F, Alt-F, Ctrl-F)
- Title search with wildcards .* or regexes
- Show alphabetical index of all articles in archive (type space in search field)
- Search for all assets in ZIM archive by prefixing namespace (or type space + / in search)
- User-selectable font scaling
- Printing articles (with optional filtering for Wikipedia articles)
- Fast equation typesetting with KaTeX
- Transform Wikipedia layout from mobile to desktop style and vice versa
- Disable image display and load one-by-one if your device is slow
- Export article to self-contained HTML page to view in browser
- Export images, PDFs, EPUBs, videos
- PWA mode to support archives with dynamic content on supported systems
- Works with Continuum (mobile UWP version)

##### Modal title goes here

Modal text goes here

### Please choose print options

Print the desktop (not mobile) style (default: yes) Print navigation boxes (default: no) Print endnotes (default: no) Print External Links / Further Reading (default: no) Print See Also (default: no) Print infoboxes (default: yes) Print images (default: yes) Resize document for printing: Current value: 75%

#### Information

## Kiwix JS Windows

### Offline Wikipedia Viewer (Version )

Packaged ZIM archive:

- Adding archives and languages
- Changelog and Features
- Title search syntax and alphabetical ZIM Archive Index
- Link handling, image download, tabs and windows
- Technical Information
- Privacy Policy
- 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 -- but note that our main focus is on Wikipedia-related archives (Wikipedia, Wikivoyage, WikiMed, Wiktionary). There is provisional support for Zimit archives: for more information on Zimit and how to make your own ZIM archives, see youzim.it. Zimit 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.

### Usage

#### 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 Compatibility settings in configuration, but this mode is only available in modern browsers).

#### 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, note the location of the saved file when you get the notification that it 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 (note that these buttons only appear after you tap "Select Storage"). In most modern contexts the archive will be remembered on next launch (Firefox 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

### Privacy policy

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. If you install or bookmark the PWA version, then it will work offline, 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 versions of the app may access GitHub on each start of the app to check for an update. This applies to the installer (setup) version for Windows, and to the AppImage version for Linux. Other versions for Electron or NWJS do not auto-upaate (and do not access the server).

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.

Additionally, if you obtained this app from a Vendor Store (including extensions), then the Store operator may track your usage of the app (e.g. download, install, uninstall, date and number of sessions) for the purpose of providing anonymous, aggregate usage statistics to developers. If this concerns you, you should check the relevant Store Privacy Policy for further information.

Builds of this app are available that do not use a Store or an online Service Worker. Please see:

- Releases
- NWJS version - this version is completely standalone and will never self-update.

### Title search syntax and alphabetical ZIM Archive Index

Basic 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, e.g. if you search for 'unesco world heritiage', it will try 'Unesco world heritage', 'UNESCO world heritage', 'unesco World heritage', 'Unesco WORLD heritage', etc., but it won't try 'uNesCO' and other non-obvious case combinations. If you want to search for 'uNesCO', then you must type it exactly like that.

You can also use the wildcards `.*` or `.+` 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. `list.*\(france`.

Wildcards can come anywhere in a string, including at the beginning. This works fine for Stackexchange, Gutenberg, PhET and similar ZIMs, and it 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 `I`, 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 `C/aquarius.*webp`.

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. Full-text search is available on Some platforms (Electron and PWA) for ZIMs that include a full-text index. The API panel in Configuration will tell you whether the loaded ZIM and app support full-text 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.

### Link handling, image download, tabs and windows

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). Some contexts, like mobile or old browsers, only support JQuery mode. Desktop systems and modern browsers support both modes. 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 Insert breakout link option, export the article to a new browser tab (by clicking the Breakout link), and then you will be able to manipulate images in the browser tab. Please note that enabling Image manipulation or the Breakout link 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).

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 Insert breakout link feature instead. With the Breakout link 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.

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.

### Technical information

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 Compatibility settings in Configuration. Here is an explanation of what these modes do:

- ServiceWorker Mode (defualt): This mode, as its name implies, requires that the browser or framework be capable of installing a Service Worker. It works by intercepting the browser or framework's Fetch calls (network requests) and supplying the requested content from the ZIM. This mode requires no DOM traversal, and the content is read and supplied as-is from the archive. Dynamic content (e.g. JavaScript) and proprietary UIs are fully supported in this mode. It can feel initially a little slower while commonly used assets are being cached, but it soon equals JQuery mode in speed, at least in modern browsers. However, older browsers such as IE11 do not support this mode, and the app must be running in a secure context (https:, localhost, or certain browser extensions). Note that this mode also cannot run under the file: protocol (but only IE11 and old Edge allow the app to run this way).
- JQuery Mode (deprecated): This mode, which does not in fact require JQuery, is fine for everyday use with Wikipedia / WikiMedia archives. It is a way of inserting articles extracted from the ZIM into the DOM (browser document) by injecting the content into an iframe or tab. We then use native DOM methods, or sometimes JQuery, to parse the article's HTML and insert required assets (images, stylesheets, event listeners for hyperlinks, etc.). On old devices DOM traversal can be slow, but it is compensated for because we do not extract or run JavaScript assets (which would be technically extremely complicated). As a result, for WikiMedia archives this mode is usually quite fast. On the downside, ZIMs that have a proprietary dynamic UI (such as Gutenberg or TED talks) are only partially supported in this mode: the UI does not work, but articles can be searched for and loaded from the search bar.

### 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

### Credits

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)

### Licence information

Copyright 2013-2019 Mossroy, Peter-x, Jaifroid, sharun-s 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
- RequireJS 2, released under the MIT licence or new BSD 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
- Emscripten to generate a XZ decompressor in javascript : https://github.com/kripken/emscripten, released under the MIT Licence
- XZ Embedded (the XZ library converted to Javascript with Emscripten), in public domain
- 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

### Other platforms/versions

Other Kiwix clients exist on various platforms. See the official site : https://www.kiwix.org/.

## Configuration

Version: Kiwix JS [check for updates]

For instructions and usage guide, please see the About tab (top right).

Packaged ZIM archive:

Current archive:

Download more archives from the Archive Library.

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! Please choose a different folder.

For a single unsplit archive

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.

Only Wikimedia contents (wiki*.zim* files) have been tested well with this app.

Tap to select app's local storage or to select a file or folder. You can also drag and drop a ZIM file into the app.

### Download library

| Opens library of archives for download: Warning: this will use data

Allow Internet access? and check for updates

### Display settings

Display size and theme:
Change font size for the User Interface:
(to change article font size, tap and )
100%
Set dark mode for User Interface: [ ] (auto mode uses OS Settings if available) Set dark theme for articles: [ ] (for Wikimedia, Gutenberg and Stackexchange ZIMs only) Use the DarkReader plugin (experimental: should work with wider range of archive types)
Use simple inversion for dark theme (may work with some other archive types) Fix UI bug with secondary displays (increases load and resize time, turn off if not needed)
Display style:
Default ZIM style (in recent WikiMedia ZIMs, this is usually mobile) Use Wikimedia desktop style (and transform if necessary) Use Wikimedia mobile style (and transform if necessary) Use locally cached display styles (recommended for Wikipedia ZIMs) Remove max page width restriction: [ ] (useful for recent Wikipedia archives)
Display hidden block elements (for Wikipedia ZIMs, experimental: shows elements that are hidden in mobile style)
Image and map settings:
Display images if any (if hidden, tap the blue area to display one-by-one)
Allow image manipulation (may interfere with dynamic content)
In Wikipedia ZIMs, hyperlink images to high-res Wikimedia versions (click image to open the external site in a new window, disabled for imagemaps and landing page) Use online OpenStreetMap for map pins instead of offline Windows Maps (for some Wikipedia and English / German Wikivoyage)
Other settings:
Hide toolbars while scrolling: [ ] (scroll slightly up to reveal) Move navigation buttons to top toolbar (note that Kiwix icon acts as Home button)
Alphabetical ZIM Archive Index:
Start character of alphabet: (use capital letters if they exist in your locale)
End character of alphabet: (these are used to set appropriate alphabet for the Archive Index)
Title search:

Wildcards `.*` or `.+` are permitted, e.g. `list.+medieval`, but see usage

Select max number of title search results: (default 30, higher values increase search time)

Warn before opening external links (recommended) Open links in a new tab with right-click, ctrl-click, middle-click or long-press
Open in new window instead
Use double right-click to open window/tab
Add breakout link to open current article in new (non-browsable) window (supported by all browsers) Open all headings (for WikiMedia ZIMs: sets the state of collapsible headings on article load)

### Privacy settings

Persistence of data:
Reopen last-visited page on next app launch

### Performance settings

Speed up archive access

Speed up the display of articles by caching assets:

Cache assets (recommended) Do not cache assets (empties caches: for low-memory devices)
Mathematical and chemical equations and symbols:
Typeset TeX equations with KaTeX (recommended: very fast, but not all symbols may be supported in all languages; will use SVG fallbacks if TeX string not available) Use SVG fallback images (slow and memory-hungry, but will dislplay all symbols)

### Compatibility settings

Content injection mode

See About (Technical settings) for an explanation of the difference between these modes:

ServiceWorker (default - supports all archives with dynamic content) JQuery (deprecated - only for older browsers and frameworks)
Display hidden ZIM archive selectors:
Display selectors for files and folders : This is for downloading other ZIM archives.

### Expert settings

Troubleshooting and development
Permanently hide active content warning (for experienced users) Bypass AppCache (disables offline use of PWA!)

Reset the app to default settings and erase all caches:

API Status
You can search the content of your ZIM archive by typing in the above search field.
It will suggest articles starting with the letters you type.