Skip to content
Linthra
Features Screenshots Get it Community GitHub

Privacy Policy

Last updated: 2026-10-18

Linthra is an open-source Android music player focused on local music and user-controlled self-hosted music libraries.

This policy explains what information Linthra handles, where it is stored, and how it is used.

In short: Linthra has no ads, no trackers, no analytics, and does not sell user data.

  • Linthra does not sell user data.
  • Linthra does not include ads.
  • Linthra does not use third-party advertising trackers.
  • Linthra does not operate a cloud account system for users.
  • Linthra does not send personal data to TheZupZup or to a Linthra-owned server.
  • Server connections such as Jellyfin, Plex, Subsonic/Navidrome, and Audiobookshelf are optional and are configured by the user.

Data handled by the app

Depending on how the user chooses to use Linthra, the app may handle the following data on the user's device:

  • Local music file information, such as song titles, album names, artists, duration, and artwork references.
  • Playback state, queue information, favorites, playlists, and play history.
  • Self-hosted server settings, such as server URL, selected library, and connection state.
  • Authentication tokens or session details for user-configured music services such as Jellyfin, Plex, Subsonic/Navidrome, or Audiobookshelf.
  • For a Subsonic-compatible server, only if the user turns on legacy sign-in (off by default, for servers such as Nextcloud Music that refuse token sign-in): the server password itself.
  • In the GitHub Sponsor APK only, and only if the user chooses to connect GitHub: a GitHub access token, used to check sponsorship.
  • Diagnostic information generated locally when the user chooses to report a problem.

Local music

When the user grants access to local music files or folders, Linthra reads those files to build and display the music library. Local files remain on the user's device unless the user explicitly uses a feature that connects to their own server or exports information.

Self-hosted and third-party music servers

Linthra can connect to user-configured music services, including Jellyfin, Plex, Subsonic/Navidrome-compatible, and Audiobookshelf servers.

When the user connects one of these services, Linthra may send requests to that server to browse libraries, stream music, display artwork, and report playback state where supported by the server.

These connections are between the user's device and the server or service configured by the user. Linthra does not operate those servers. The privacy practices of those services are governed by the user's server configuration and the policies of the service provider.

Other services Linthra contacts

Apart from the servers you configure, Linthra contacts two outside services, and only in these cases:

  • Plex sign-in (plex.tv). If you choose "Connect with Plex", Linthra talks to plex.tv, Plex's account service, to create a sign-in code, wait for you to approve it on the Plex page that opens in your browser, and then list the servers and Plex Home users on your account. Nothing contacts plex.tv at startup or in the background. Signing in with a server address and token instead does not use plex.tv at all.
  • GitHub Sponsors check (GitHub Sponsor APK only). The APK attached to GitHub Releases for sponsors can unlock supporter extras. If you choose "Connect GitHub", Linthra uses GitHub's device sign-in (github.com) and then asks GitHub's API (api.github.com) whether your account sponsors the project. Once you have signed in, that check runs again each time the app starts, until you disconnect. The F-Droid, Google Play, Flatpak and other builds do not contain this and never contact GitHub on their own.

Links in the app, such as the project page, the privacy policy or the prefilled bug report, open in your browser when you tap them. Linthra does not fetch them itself.

Authentication and tokens

Authentication tokens and session information are stored locally on the user's device, in the platform's secure storage. Linthra uses music server tokens only to connect to the music servers configured by the user.

Server passwords are not stored, with one opt-in exception. Subsonic's legacy sign-in, for servers that refuse token sign-in such as Nextcloud Music, has no token to keep, so when the user turns it on Linthra keeps the password in the same secure storage (Android Keystore-backed on Android, libsecret on Linux) and sends it to the user's own server with every request. It only works with an https:// address, Linthra's own requests never follow a redirect with it, and signing out deletes it. The server, and any proxy in front of it, may record it in their access logs, so an app password or API key is the better choice where the server offers one (Nextcloud Music asks for an API key from its Music settings, which can be revoked there).

In the GitHub Sponsor APK, if the user connects GitHub, Linthra also stores the GitHub access token that GitHub issues for it. The token is limited to reading the user's GitHub profile (the read:user scope). Linthra sends it only to GitHub's API (api.github.com), only to check whether the account sponsors the project, and deletes it when the user disconnects GitHub. No other build stores a GitHub token.

Linthra is designed to avoid storing tokenized stream URLs in long-term storage, logs, diagnostics, or cache metadata.

Data sharing

Linthra does not sell or share user data with advertisers or data brokers.

Linthra may communicate with user-configured music servers only when needed for app functionality, such as signing in, browsing a library, streaming tracks, fetching artwork, syncing metadata, or reporting playback state. The only other services it contacts are the ones listed under "Other services Linthra contacts" above, in the situations described there.

Data storage and deletion

Most Linthra data is stored locally on the user's device. The user can remove app data by using Android system settings to clear Linthra's storage or uninstall the app.

When a user disconnects a music service inside Linthra, the related local session information is removed or made inactive according to the app's current implementation.

Network security

Linthra supports connections to user-provided server URLs. Users are encouraged to use HTTPS whenever possible. If a user configures a server using an unencrypted HTTP connection, data sent to that server may not be encrypted in transit.

Children

Linthra is not designed specifically for children. The app is intended for users who manage their own music library or self-hosted music services.

Open source

Linthra is open-source. Its source code is available at: https://github.com/TheZupZup/Linthra

Checking this yourself

Some of this policy is checked automatically, so you do not have to take the project's word for it.

Every pull request runs an audit of the dependency files Linthra ships from — the resolved Dart/Flutter packages, the archives the Linux build fetches, the plugins linked into the Linux binary, the Android Gradle files and the Rust lockfiles — against a written list of known advertising, analytics, attribution, telemetry and third-party crash-reporting SDKs. The current result is:

  • Advertising SDKs: none
  • Analytics SDKs: none
  • Attribution / install-tracking SDKs: none
  • Automatic third-party crash reporting: none
  • Telemetry, session-replay and APM SDKs: none

You can reproduce it from a checkout with no toolchain and no network access by running python3 scripts/check_tracker_dependencies.py.

That check proves a narrow thing: no named tracking SDK is in the dependency graph. It does not prove that Linthra cannot track users, and it says nothing about Linthra's own network code. What it covers, what it does not, and how a future finding gets reviewed are written down in docs/tracker-dependency-audit.md.

A second check lists every host name and IP address written into the code Linthra ships, against a reviewed inventory that says what each one is for. A new fixed destination, or a known one turning up somewhere new, fails the pull request until a person reviews it. Today it finds three hosts Linthra's own code connects to (plex.tv, github.com and api.github.com, as described above) and nothing that is contacted without you doing something first. You can run it with python3 scripts/check_network_destinations.py.

It only sees addresses written down in the source, not ones built at run time or returned by a server. The details are in docs/network-destinations.md, and PRIVACY_AUDIT.md lists every check, what is still checked by hand, and the limits of both.

Contact

For privacy questions or support, contact: support@linthra.ca

← Back to home
Linthra
GitHub repository Download r/Linthra community AndroidFreeware OpenAPK Privacy Policy License (AGPL-3.0-or-later)

Need help or found a bug? Contact us at support@linthra.ca.

Built by TheZupZup in Canada. 🇨🇦