zoffline

zoffline enables the use of Zwift offline by acting as a partial implementation of a Zwift server. By default zoffline is only for a single player. See Step 6: Enable Multiplayer for how to enable support for multiple users/profiles.

zoffline also offers riding against ghosts (your previous rides). Enable this feature by checking "Enable ghosts" in zoffline's launcher. See Extra features for more details.

Additionally, zoffline's launcher allows selecting a specific map to ride on without mucking about with config files.

Install

Setting up zoffline requires two primary steps. First, zoffline must be installed and run on a system before running Zwift (either on the system running Zwift or on another locally networked system). Second, Zwift must be configured to use zoffline instead of the official Zwift server.

Step 1: Install zoffline

There are four ways with which to install and run zoffline depending on your platform:

Simplest (Windows only) To install zoffline on Windows: Linux, Windows, or macOS (from source) To install zoffline on Linux, Windows, or macOS:

zoffline can be installed on the same machine as Zwift or another local machine.

Using Docker Using Docker Compose

Step 2: Configure Zwift client to use zoffline

Windows Instructions

Why: We need to redirect Zwift to use zoffline and convince Windows and Zwift to accept zoffline's self signed certificates for Zwift's domain names. Feel free to generate your own certificates and do the same.

macOS Instructions

Why: We need to redirect Zwift to use zoffline and convince macOS and Zwift to accept zoffline's self signed certificates for Zwift's domain names. Feel free to generate your own certificates and do the same.

Android (non-rooted device)

Why: We need to redirect Zwift to use zoffline (this is done by the Virtual Hosts app) and convince Zwift to accept zoffline's self signed certificates for Zwift's domain names (this is done by the patch tool ZofflineObb).

Android (rooted device)

Why: We need to redirect Zwift to use zoffline and convince Zwift to accept zoffline's self signed certificates for Zwift's domain names. Feel free to generate your own certificates and do the same.

Enabling/Disabling zoffline

To use Zwift online like normal, comment out or remove the line added to the hosts file before starting Zwift. Then ensure Zwift is fully closed (right click the Zwift system tray icon and exit) and restart Zwift.

Step 3 [OPTIONAL]: Obtain current Zwift profile

Expand

If you don't obtain your current Zwift profile before first starting Zwift with zoffline enabled, you will be prompted to create a new profile (height, weight, gender). Your profile can be further customized and changed via the in game menu (e.g. name, nationality, weight change, etc).

To obtain your current profile:

Step 4 [OPTIONAL]: Upload activities

Strava Garmin Connect Intervals.icu

Step 5 [OPTIONAL]: Install Zwift Companion App

Android (non-rooted device)

Step 6 [OPTIONAL]: Enable multiplayer

Expand

To enable support for multiple users perform the steps below:

Extra features

Ghosts Bots RoboPacers Bookmarks All-time leaderboards Entitlements CDN proxy Discord bridge

Community Discord server and Strava club

Please join the community supported Discord server and Strava club.

Dependencies

Docker

-or-

Note

Future Zwift updates may break zoffline until it's updated. While zoffline is enabled Zwift updates will not be installed. If a zoffline update broke something, check the CHANGELOG for possible changes that need to be made.

Don't expose zoffline to the internet, it was not designed with that in mind.

If zoffline is out of date from Zwift's official client If zoffline is behind in support of the latest Zwift client it can be updated to run using the latest Zwift version.

Note: there is no guarantee that an untested Zwift update will work with zoffline. However, historically, Zwift updates rarely break zoffline.

Alternatively, this script can be used to downgrade Zwift to the version supported by zoffline.

Zwift phased updates

If you install Zwift during a phased update period, when you enable zoffline it's possible that Zwift attempts to update again and fails. To workaround this situation, rename the file Zwift_ver_cur.<version>.xml in Zwift directory to Zwift_ver_cur.xml and edit the file Zwift_ver_cur_filename.txt accordingly.

Disclaimer

Zwift is a trademark of Zwift, Inc., which is not affiliated with the maker of this project and does not endorse this project.

All product and company names are trademarks of their respective holders. Use of them does not imply any affiliation with or endorsement by them.