1. Who We Are
TubPlayer ("the App") is developed and published by Tubs Software ("we", "us", "our"). This privacy policy explains what data the App collects, how it is used, and the choices available to you.
2. Data We Collect
| Data | Storage | Shared? |
|---|---|---|
| Playlist credentials (server, username, password) | Device only; AES-256 encrypted (Android Keystore) | Never |
| Playlist content (channels, movies, series, EPG) | Device only; local SQLite database | Never |
| Watch history & progress | Device only; local SQLite database | Never |
| App settings & preferences (theme, parental PIN, display options) | Device only; SharedPreferences (PIN is SHA-256 hashed) | Never |
| Search history | Device only; SharedPreferences (max 20 entries) | Never |
| Crash reports & diagnostics | Firebase Crashlytics | Anonymous (see Section 4) |
| Backup files (if you enable cloud backup) | Your Google Drive; AES-256-GCM encrypted before upload | Your account only (see Section 5) |
| Content metadata (posters, plots, ratings) | Device only; fetched from TMDB, cached locally | Never |
3. Playlist Credentials
When you add an IPTV playlist requiring authentication (Xtream Codes), the server address, username, and password are stored exclusively on your device using Android's EncryptedSharedPreferences with AES-256-SIV key encryption and AES-256-GCM value encryption, backed by the Android Keystore.
They are used only to connect directly from your device to your IPTV provider's server. Log messages that might contain stream URLs are sanitised in release builds to strip credentials before being written to Logcat or Crashlytics.
4. Crash Reports & Analytics
The App uses Firebase Crashlytics (provided by Google) to collect anonymous crash reports and non-fatal error diagnostics. Crashlytics is disabled in debug builds and enabled only in release builds.
What is included in crash reports:
- Device model, Android version, and app version
- Stack traces and error codes when a crash or playback failure occurs
- Navigation context (which screen was active, which section was selected)
- Stream error details (error code, error type, server domain only — never the full URL or credentials)
- Playlist type counts (e.g. "2 Xtream, 1 M3U" — never playlist names, URLs, or credentials)
What is never included:
- Playlist credentials (server addresses, usernames, passwords)
- Stream URLs (only the server domain is logged, never the path which contains credentials)
- Content you watch, your watch history, or your favourites
- Any personally identifiable information
Crashlytics data is governed by Google's Firebase privacy policy. You can disable Crashlytics by contacting us, and we will provide a build with it disabled in a future update.
5. Google Drive Backup (Optional)
If you choose to connect your Google account for cloud backup, the App uses Google's drive.file scope. This is the most restrictive Drive scope available — it only allows the App to access files that it has created itself.
How backup works:
- Your app data (playlists, settings, watch history, credentials) is encrypted on your device using AES-256-GCM before being uploaded
- The encrypted backup file is stored in your personal Google Drive account
- We have no access to your Google Drive or your backup files
- You can disconnect Google Drive at any time from the App's settings, and delete backup files directly from your Google Drive
If you do not enable Google Drive backup, no data is sent to Google Drive and no Google account connection is made. Local backups to your device's Downloads folder are also available and do not involve any cloud service.
6. TMDB (The Movie Database)
The App uses the TMDB API to fetch content metadata such as movie posters, plot summaries, cast information, and ratings. These requests are made directly from your device to TMDB's servers and contain only the content title being searched — no personal information, credentials, or device identifiers are included. Fetched metadata is cached locally in the App's database.
TMDB is a third-party service governed by its own privacy policy.
7. Data Stored on Your Device
All app data — including playlists, channel guides, watch history, favourites, parental settings, and preferences — is stored locally on your device in a SQLite database and Android SharedPreferences. This data is not transmitted anywhere unless you explicitly initiate a backup (see Section 5).
The parental control PIN, if set, is stored as a one-way SHA-256 hash. The original PIN cannot be recovered from the stored hash.
8. Third-Party Services
| Service | Purpose | Data Sent |
|---|---|---|
| Your IPTV provider | Stream content, fetch channel lists, EPG | Credentials you configured (device → provider only) |
| Firebase Crashlytics | Crash reporting | Anonymous diagnostics (see Section 4) |
| TMDB API | Content metadata | Content titles only |
| Google Drive | Cloud backup (optional) | Encrypted backup file to your own account |
9. Children's Privacy
The App is not directed at children under the age of 13. We do not knowingly collect personal information from children. The App includes parental controls that allow a parent or guardian to restrict access to playlist management features using a PIN.
10. Data Retention & Deletion
All locally stored data can be deleted by:
- Removing individual playlists from the App (deletes all associated content, history, and credentials for that playlist)
- Clearing the App's data through Android Settings → Apps → TubPlayer → Clear Data
- Uninstalling the App (removes all local data)
Crashlytics data is retained by Google according to their standard retention policy (typically 90 days for crash data). We do not have the ability to associate crash reports with individual users.
Google Drive backup files remain in your Google Drive until you delete them. Disconnecting Google Drive from the App does not automatically delete previously created backup files.
11. Changes to This Policy
We may update this privacy policy from time to time. The effective date at the top of this page will be updated accordingly. Continued use of the App after changes constitutes acceptance of the updated policy.
12. Contact
For questions about this privacy policy or how the App handles data, contact us at support@tubplayer.com.