Privacy Policy
In short
- No data is sent to the developer — except the answer you may choose to give in the one-question form that opens when you uninstall the extension. No analytics, no tracking, no ads, no developer account.
- Settings and personal lists are stored on your own device — and, only if you turn on sync, in your browser's own sync storage, which your browser carries to your other computers. Credentials are sent to the service you configure to authenticate requests.
- The developer never receives, sees or stores any of your data. The extension has no backend.
- Network requests go only to the addresses you point it at — your own IPTV server or playlist, and the programme guide it names.
- The extension cannot see the pages you browse. It has no content scripts and requests access to no website at install time.
1.What Kepuli-TV is
Kepuli-TV is a browser extension that plays back the content of the user's own Xtream Codes IPTV account, M3U playlist or Stalker portal in a browser tab. It ships no media, no channel list and no accounts of its own: it is a player, useless without credentials the user brings.
The developer and author of this policy is Samuli Vainio, a private individual. Kepuli-TV is a personal project, not a company product. Contact: samuli.vainio@gmail.com.
2.What data the extension handles
Everything below is created by the user's own actions inside the extension's own tab and is
stored locally only, in the browser's per-extension storage
(chrome.storage.local and IndexedDB) on the device where it is used.
| Data | Why it is kept | Where it lives |
|---|---|---|
| Connection settings of each account you add: server address, port, username and password, a playlist address and a programme guide address, or a Stalker portal address and the MAC address your provider registered, and the name you give the account | To connect to your own IPTV server without retyping the credentials on every launch | chrome.storage.local |
| Player preferences: subtitle language and size, stream mode, adult-category hiding, external player template | To remember interface and playback settings | chrome.storage.local |
| Favourites, watch history, resume positions, and the titles of the programmes you have watched for a few minutes (for the picks on the empty player's page) | To show your own lists and continue playback where it stopped | chrome.storage.local |
| Your choice whether to sync, and when it last synced | To sync only when you asked for it | chrome.storage.local |
| Recordings you make, and the recordings you have planned | To play them back or save them as files when you choose | The browser's private file storage for the extension (origin private file system) and chrome.storage.local; never synced |
| Catalogue cache: channel, movie and series listings, categories and programme guide data | To avoid re-downloading the whole catalogue on every launch | IndexedDB |
Sync between computers is off unless you turn it on (Settings → Account & data).
When it is on, your accounts, settings, favourites, channel lists, reminders, and the newest of
your watch history and resume positions are also written to the browser's sync storage
(chrome.storage.sync), which Chrome keeps in your Google account and Firefox in your
Firefox account, and which they bring to the computers signed in to the same account. That
storage is the browser's, governed by Google's or Mozilla's terms; the developer has no access
to it. Passwords go there only if you also tick Include passwords; without it, an
Xtream account goes without its password, a programme guide address that carries credentials
goes blank, the stream addresses of your favourites and history stay behind (they often carry
your user name and password), and a playlist whose address carries credentials does not go at
all, nor do its lists. The lists are named in the sync storage by a code made from the account,
not by the account's address. Turning sync off stops it; the catalogue cache is never synced.
The extension does not ask for or handle names, email addresses, location, payment information, health information, contacts, messages or browsing history.
3.Where data is sent
The extension has no server or cloud service of its own and sends nothing to the developer. Network traffic occurs only as follows:
- Your own IPTV server. The extension fetches catalogues, programme data and media streams from the address you enter in the settings. As the Xtream Codes API works, the username and password travel in the request URL. Your provider sees this traffic, including your IP address and what you watch — governed by their terms and privacy policy, not by this one.
- Your playlist and its programme guide. For an M3U playlist account, the extension downloads the playlist from the address you enter, and the XMLTV programme guide from the address you enter or the one the playlist names. Those servers see the request, including your IP address.
- Your Stalker portal. For a Stalker portal account, the extension talks to the portal address you enter as a MAG set-top box does: the MAC address you enter is sent in a cookie, and the request names a MAG box in its User-Agent. A recording is made from the same streams you could watch, and stays on your device.
- Your browser's sync, only if you turn it on. See section 2. The browser, not the extension, sends that data to Google's or Mozilla's servers.
- When you uninstall the extension. The browser opens a one-question Google Forms page asking why. Its address carries the extension's version, the browser (Chrome or Firefox) and the interface language, pre-filled into the form, and nothing else: no account, server, playlist or viewing information. Nothing is sent unless you choose an answer and press Submit; the form does not collect your email address or ask you to sign in. Answers go to the developer through Google Forms, under Google's privacy policy. You can simply close the page.
- Channel logos and cover art. The browser loads images from the addresses your provider put in the listing. Those may point to a third-party server, which then sees your IP address and browser details, exactly as when any web page loads an image. The extension does not choose these addresses and adds no identifiers to them.
- Handoff to an external player. If you use the handoff feature (VLC, IINA, mpv), the extension builds a playlist file or a URL and gives it to your operating system. The address contains your IPTV credentials, but it does not leave your device: it is passed locally to the player you installed, which opens the stream from your own server.
- Copy to clipboard. A stream URL is copied only when you explicitly click to copy it. That URL contains your credentials, so take care where you paste it.
4.Credential storage and security
Your IPTV credentials are stored unencrypted in the browser's extension storage, as local extension data generally is. Anyone with access to your user account or browser profile on that device can read them. Do not use the extension on a shared or unattended computer if that is a concern.
Credentials are sent as-is to the address you supply. If your server uses http,
that traffic is unencrypted on the network too — use an https address whenever
your provider offers one.
5.Permissions and why they are requested
storage— to keep settings, credentials, favourites, history and resume positions on the device, and, if you turn sync on, in the browser's sync storage.declarativeNetRequestWithHostAccess— for a Stalker portal account only: a rule for the duration of the browser session puts the MAC address cookie and a MAG box's User-Agent on the requests to that portal's address alone, which a page cannot do itself. It acts only on addresses you have granted access to, changes no other request and is gone when the browser closes.unlimitedStorage— for the catalogue cache and recordings. A typical IPTV catalogue is tens of megabytes and exceeds the browser's default quota.-
Optional host access (
http://*/*,https://*/*) — not requested at install time. The browser asks for permission only when you enter your own server address, and grants it for that address alone. It is needed because your server's address cannot be known in advance. If your provider redirects its streams to another server, the browser does not reveal which one; the player then offers Allow all addresses, and access to every address is granted only if you click it and accept the browser's prompt. It is used solely to play your provider's streams.
The extension has no content scripts: it does not read, modify or observe any other tab or web page. It operates solely within its own tab.
6.Remote code
The extension neither loads nor executes any code from outside its package. All executable code — including the media libraries and the WebAssembly audio decoder — ships inside the extension package. Only media and catalogue data are fetched from the network; never code.
7.Deleting your data
- Cache: can be cleared from the extension's settings at any time (Settings → Clear cache).
- Everything the extension stored: Settings → Reset everything (“reset”) removes the credentials, preferences, favourites, watch history, resume positions and the whole cache database, and what the extension put in the browser's sync storage.
- Everything: uninstalling the extension removes all data it stored on the device. There is nothing for the developer to delete, because nothing was ever sent to the developer — apart from an uninstall answer you may have chosen to give, which carries nothing that identifies you.
8.Sale and transfer of data
User data is not sold or transferred to third parties. It is not used or transferred for purposes unrelated to the extension's single purpose, nor to determine creditworthiness or for lending purposes. This is guaranteed technically: the developer receives no data at all, apart from the anonymous answer to the uninstall question, if you choose to give one.
9.Children
The extension is not directed at children under 13 and collects no data from them — as it collects none from anyone.
10.Data controller and GDPR
Because the developer neither receives, processes nor stores personal data, using the extension creates no personal data register held by the developer. The data on your device is under your control and can be deleted as described above. Data subject requests (access, rectification, erasure, portability) are in practice directed at your IPTV provider, which is its own controller.
11.Changes
If this policy changes, the updated version is published at this address and the date at the top of the page changes. Material changes are noted in the extension's release notes.
12.Contact
Samuli Vainio, Tampere, Finland
samuli.vainio@gmail.com