Skip to content

Privacy Policy

Jimmy Pautz edited this page Oct 4, 2026 · 2 revisions

Privacy Policy

Effective Date: October 4, 2026
Application: KOReader Device Backup & Restore Plugin (backup.koplugin)
Project Repository: https://github.com/ultimatejimmy/backup.koplugin


1. Overview

KOReader Backup is a free, open-source plugin created for the KOReader document viewer. Its purpose is to allow users to create, restore, manage, and synchronize backups of their KOReader settings, reading history, reading statistics, custom fonts, icons, patches, and plugins across their devices.

We strongly value your privacy and believe in complete transparency. This Privacy Policy details how the plugin handles your data and interacts with third-party cloud storage providers (Google Drive, Microsoft OneDrive, Dropbox), custom network storage protocols (WebDAV, FTP, SFTP), and wireless device-to-device transfers (Beam Transfer).


2. Information We Do NOT Collect

  • No Analytics or Telemetry: KOReader Backup does not collect, record, track, or analyze any telemetry, analytics, device identifiers, or personally identifiable information (PII).
  • No Central User Accounts: There are no developer-hosted accounts, user registrations, logins, or central tracking databases.
  • No Advertising or Monetization: The application contains no advertisements, tracking scripts, or data-broker integrations.
  • No Developer Access to Your Files: The developers have zero access to your backup archives, e-books, reading history, documents, or files stored in your cloud accounts or servers.

3. Cloud Storage Integrations & Data Access

KOReader Backup allows you to optionally connect third-party cloud storage services to upload, download, and manage your backup archives. All cloud storage connections are entirely opt-in.

3.1 Google Drive

When you connect Google Drive, the plugin requests permission for the following OAuth scope:

  • Scope: https://www.googleapis.com/auth/drive.file
    (See, edit, create, and delete only the specific Google Drive files you use with this app)
  • Scope of Access: Under this restricted scope, the plugin has access strictly and exclusively to files and folders created by the plugin itself (such as the koreader_backups folder and backup archives created by KOReader).
  • Zero Access to Other Drive Files: The plugin cannot read, scan, view, modify, list, or delete any of your other personal files, documents, photos, or folders stored in your Google Drive.
  • Usage: Used solely to upload KOReader backup archives, download archives during a restore, list backups in your backup folder for management, and delete old backups based on your rolling retention settings or manual requests.

3.2 Microsoft OneDrive

When you connect Microsoft OneDrive (via the Microsoft Graph API), the plugin requests permission for the following OAuth scopes:

  • Scopes: Files.ReadWrite, offline_access
  • Scope of Access: The plugin interacts strictly with your designated backup directory (default: /koreader_backups) and backup archives created for KOReader.
  • Zero Access to Other OneDrive Files: The plugin does not scan, read, modify, or index any other personal files, documents, photos, or folders in your OneDrive storage.
  • Usage: Used solely to upload backup archives, download archives during restore operations, list backups for inspection, and prune older archives in accordance with your configured retention policy.

3.3 Dropbox

When you connect Dropbox, the plugin requests permission for the following OAuth scopes:

  • Scopes: account_info.read, files.content.write, files.content.read, files.metadata.read, files.metadata.write
  • Scope of Access: The plugin interacts strictly with your designated backup directory (default: /koreader_backups) and backup archives created for KOReader.
  • Zero Access to Other Dropbox Files: The plugin does not view, read, index, or delete any personal files, folders, or paper documents outside of your KOReader backup folder.
  • Usage: Used solely to upload backup archives, download archives during restore operations, list backups for inspection, and prune older archives according to your retention settings.

3.4 Custom & Self-Hosted Protocols (WebDAV, FTP, SFTP)

When you configure WebDAV (e.g., Nextcloud, ownCloud), FTP, or SFTP:

  • Direct Server Connection: The plugin connects directly from your e-reader to your specified host and port.
  • Credentials: Server credentials (host, port, username, password) are used exclusively for direct file transfer to the remote directory you specify.
  • No Intermediaries: No data, credentials, or traffic are ever routed through or visible to any third-party developer servers.

4. Wireless Beam Transfer (Device-to-Device Relay)

KOReader Backup includes a Beam Transfer feature that lets you send a backup wirelessly from one e-reader to another using a temporary 6-character PIN code.

  • Ephemeral Zero-Knowledge Relay: Transfers use an edge relay worker (https://backup.ultimatejimmy.workers.dev) running on Cloudflare Workers.
  • Automatic Expiration (15-Minute TTL): Backups staged for beam transfer are held in temporary distributed storage with a strict 15-minute Time-To-Live (TTL). After 15 minutes, or once deleted, data is automatically and permanently purged.
  • No Inspection or Logging: Backup archives are treated as opaque binary data. The relay worker never inspects, decompresses, logs, or modifies the archive contents.
  • No User Association: No user accounts, device identifiers, or tracking metadata are attached to transfer codes.
  • Self-Hosting Support: Users can configure their own custom relay worker URL in the plugin settings if they prefer not to use the default edge relay.

5. OAuth 2.0 Device Flow & Helper Relay

Dedicated e-ink e-readers lack standard desktop web browsers for traditional OAuth redirect loops. To provide secure authentication without requiring users to enter passwords directly into the plugin:

  • Standard RFC 8628 Device Flow: For Google Drive and Microsoft OneDrive, the plugin uses standard OAuth 2.0 Device Authorization Grant flows. You authenticate directly on your phone or PC by visiting the provider's verification URL and entering the code displayed on your e-reader.
  • OAuth Bridge Helper: For providers requiring a web bridge (such as Dropbox) or client secret confidentiality, the open-source Cloudflare Worker acts as an intermediary bridge for the authorization handshake.
  • Zero Token Retention on Relay: The relay worker only proxies the temporary code exchange between the e-reader and the cloud provider. It does not store, log, or persist your OAuth access tokens or refresh tokens. Tokens are returned directly to your device.

6. Storage & Security of Credentials

  • Local Device Storage Only:
    • OAuth authorization tokens (access_token, refresh_token) are stored locally on your device in KOReader's settings directory (settings/backup_cloud_tokens.lua).
    • Self-hosted credentials (passwords for WebDAV, FTP, SFTP) are stored locally on your device in settings/backup_cloud_creds.lua.
  • Encrypted In-Transit Communication: All communication with cloud APIs and relay servers uses encrypted HTTPS/TLS (or SFTP / FTPS for custom servers).
  • No Third-Party Transmission: Your credentials, authentication tokens, and backup files are never transmitted to, inspected by, or stored on any central developer tracking systems.

7. Data Sharing and Transfer

  • Zero Third-Party Sharing: We do not sell, rent, trade, lease, or transfer your personal data, backups, or cloud account credentials to any third parties, advertisers, or data brokers.
  • User-Directed Destinations: Your backup archives are stored exclusively in your own personal cloud storage accounts or self-hosted servers under your direct ownership and control.

8. Third-Party Platform Policy Compliance

Google API Services

KOReader Backup's use and transfer of information received from Google APIs to any other app will adhere to the Google API Services User Data Policy, including the Limited Use requirements.

Microsoft Identity & Graph Platform

The plugin complies with Microsoft Graph API and identity platform policies, utilizing minimal necessary permissions to deliver user-initiated file backup and restore functionality.

Dropbox Platform

The plugin complies with the Dropbox Developer Terms and Acceptable Use Policy, accessing only designated backup resources necessary for user-initiated operations.


9. User Control, Retention & Access Revocation

  • Deleting Your Backups: You can delete individual backups or entire backup archives at any time:
    • Directly from the KOReader Manage Backups menu.
    • Directly from your cloud provider's web interface or mobile app (Google Drive, OneDrive, or Dropbox).
  • Disconnecting Cloud Storage: You can disconnect any cloud provider at any time within the KOReader Backup & Restore Settings menu. Disconnecting immediately removes stored tokens and credentials from your device.
  • Revoking App Permissions Remotely: You can immediately revoke KOReader Backup's access to your cloud accounts at any time from your provider's security dashboard:

10. Open Source Code Transparency

The full source code of both the KOReader Backup plugin and the Beam/OAuth relay worker is free, open source, and available for public audit and verification:


11. Contact

If you have questions, feedback, or concerns regarding this Privacy Policy or the plugin's data handling practices, please open an issue on GitHub:
https://github.com/ultimatejimmy/backup.koplugin/issues