Cookies and storage on your device
Last updated: 2026-10-10
Status. This is the current version, and it describes how WatchMatrix.TV actually works today, so you can rely on it as our statement of what we do. It is a first version that has not yet been reviewed by a lawyer. If that review changes anything, we will update this page and move the date above.
The short version
WatchMatrix.TV sets no cookies. Not one. We do not have a login, so there is no session cookie. We do not run analytics, so there is no analytics cookie. We do not run advertising, so there is no advertising cookie or tracking pixel.
What we do instead is save a small amount of information in your own browser, using a browser feature called local storage. That information stays on your device. It is never sent to us. This page lists every single thing we save, why we save it, and how to delete it.
One thing we cannot speak for: the video players themselves. When you add a YouTube, Twitch, Kick, Rumble or X stream, that platform’s own player loads in your browser and can set its own cookies under its own name, exactly as if you had opened its website. That is their processing, under their privacy policy, and we receive none of it.
Why this page exists even though we set no cookies
Privacy law in this area is not really about the word “cookie”. It is about storing information on your device, or reading information already stored there, whatever the technology. The EU ePrivacy rule and the UK equivalent are written that way. Local storage counts. So does anything similar.
So the honest way to describe this product is not “we use no cookies, nothing to see here”. It is: here is every key we write, what is in it, and what it is for.
What we store, in full
On the website (browser local storage)
Local storage has no expiry date. Unlike a cookie, a value written to local storage stays until you delete it, or until your browser evicts it to reclaim space. Two of our entries have an age rule inside the app, noted below, but even then the stored value itself is not automatically deleted. It is simply ignored.
Everything below is written by our own site under our own name. None of it is transmitted anywhere.
wm_walls_v1- your saved layouts, up to 50. Each holds a name you typed, the encoded layout tokens naming the streams and services in that layout, a tile count and a saved-at timestamp. So the layouts you chose to save are still there next time. Kept until you delete it. Functional: you asked for it.wm_last_wall_v1- your most recent layout, so the “resume” chip can offer it back. Kept until you delete it; the app ignores it after 7 days. Functional: you asked for it.wm_tracker_v1- your watch list. For each title you marked: title, service, movie or series, season, episode, how far in you got, watching or completed, and when you updated it. Kept until you delete it. Functional: you asked for it.wm_session_log_v1- a local count of minutes watched, up to 500 entries. Each entry is a calendar day, a platform name such asyoutube, and a number of minutes. It does not record titles. It draws the stats page you can open yourself. Kept until you delete it. On-device measurement: see the note below.wm_ambient_v1- the single character1, meaning the ambient light effect is switched on. Kept until you delete it. Functional: you asked for it.wm_bar_dock_v1- where you put the control bar:top,bottom,left,rightorfloating. Stored once you move the bar; with nothing stored the bar sits in the bottom dock (the default). Kept until you delete it. Functional: you asked for it.wm_remote_pair_v1- the last pairing code of the screen you connected to, so Remote Matrix can reconnect; removed when you tap Forget or the screen issues a new code. Functional: you asked for it.wm_remote_draft_v1- links you added on the remote before casting them, kept on the phone until they are cast or removed. Functional: you asked for it.wm_remote_install_v1- whether you asked the remote to stop offering the home-screen install; removed only by clearing site data. Functional: you asked for it.wm_consent_party- your watch-party consent decision: the feature name, whether you granted or withdrew it, and when. It is what lets us honour your choice. Kept until you delete it; treated as stale after 2 years, which asks you again. Strictly necessary: it records your own choice.
A note on the minutes counter, because we would rather over-explain it than have you find it yourself. This is the only entry that is written automatically. While a stream is playing, the app banks one minute against that platform every sixty seconds. Mechanically that resembles analytics. Substantively it is not: it never leaves your device, we never see it, it names the platform rather than the title, and its only purpose is the stats page you can open yourself. The code that writes it makes no network requests of any kind. You can export it and wipe it from the stats page.
One important detail about how browsers scope this. Local storage is separate for every web address, and this site is served from more than one address. Each one keeps its own separate copy of everything above, and clearing one does not clear the others.
On the Android app (device storage, sandboxed to the app)
The WatchMatrix phone app, offered through Google Play for Android, stores exactly these ten entries in its own app storage on your phone. None of it is transmitted. Android Auto Backup is off for the app, so none of it is copied into a backup in your Google account either.
watchmatrix.streams.v1- the stream layout of your current wall on the Watch tab.watchmatrix.webtiles.v1- the addresses of web pages you pinned to the wall yourself. They are never put into a share link or a cast and never logged in your stats.watchmatrix.review.asked.v1- the single character1, recording that Google Play’s own “rate this app” prompt was shown once, so it is not shown again.wm_walls_v1- your saved walls (named layouts).wm_last_wall_v1- the last wall you built, so the “resume” chip can offer it back.wm_lists_v1- lists of links you saved.wm_session_log_v1- your watch stats: a calendar day, a platform and a number of minutes per entry, with a fixed maximum number of entries. It does not record titles.wm_ambient_v1- whether ambient mode is on.wm_remote_draft_v1- the Remote tab’s draft: links you added that are waiting to be cast.wm_remote_pair_v1- the screen you paired with: its connection id, its pairing secret and when you paired. The secret only lets this phone drive that screen.
Two other kinds of data can also sit in the app’s storage, and our code never reads either. The video players in your stream tiles, and the web pages you pin, run in the app’s built-in web view and can keep their own cookies and site data there, as in a browser. And the Google software inside the app, the Cast software and the ML Kit QR code scanner, may keep its own files there. The Privacy Policy, section 10, describes both.
On the browser extensions
Two extensions exist in the source. Neither is published to any store, so you cannot install them today.
- The window tiler (“Matrix”) stores nothing. It asks for one permission, the ability to arrange windows, and does not request storage at all.
- “Matrix TV” stores two things in extension storage: your watch list, and one opt-in record per site (Netflix or Disney+). It writes nothing at all until you switch a specific site on and confirm.
On the desktop app
The desktop “Matrix Browser” is built but its download is currently paused and no file is being served. If and when it ships, it writes three files in its own data folder on your computer: a per-service consent file for a page-reading feature that ships switched off; a watch history file for that same feature, which stays empty in the shipped build because the feature is off; and, if you pair an LG TV, the TV’s address on your home network and the pairing key it gave you.
Separately, because the desktop app is a real browser, the websites you sign in to inside it store their own cookies and site data, in the app’s own folder on your computer, exactly as they would in Chrome or Safari. That is normal browser behaviour. The app does not read those cookies: there is no cookie access anywhere in its source.
What we do not store
- No cookies. There is no cookie write and no cookie header anywhere in the product. The website is a static export with no server that could set a session cookie, and our one server function returns data only and sets no cookie.
- No session storage and no database in your browser. No
sessionStorage, no IndexedDB, no Cache Storage and no service worker anywhere in the product. - No analytics of any kind. No Google Analytics, no tag manager, no Plausible, Fathom, PostHog, Mixpanel, Amplitude, Segment, Matomo, Umami, Hotjar or Clarity. No Sentry, Bugsnag, Datadog or Crashlytics. No Meta, TikTok, AppsFlyer, Adjust or OneSignal. None of these appear in any dependency list or in any shipped file. The Google Cast software and the ML Kit QR code scanner inside the Android app do send Google their own diagnostics; that is described in the Privacy Policy, section 10.
- No advertising and no tracking pixel. There is no ad network, no pixel and no beacon anywhere.
- No fingerprinting. No canvas, WebGL, audio or font fingerprinting. On this website, three device readings exist and all three are for layout or feature detection, none stored and none transmitted: your screen size, sent only to a locally installed extension over local messaging; a single check of whether the browser is a Chromecast; and this site’s own hostname, which the Twitch player requires. The mobile app additionally reads which operating system it is running on, and the desktop app puts its own name into the browser user agent; both are described in the Privacy Policy, sections 9 and 10.
- No web fonts. The site loads no fonts from Google or anywhere else.
- No identifier for you. We never generate a visitor id, a device id or an advertising id. The only random values the product creates are the temporary codes for a watch party or a phone pairing session, which are made fresh each time and thrown away when the session ends, and the pairing code a remote keeps so it can reconnect to your own screen, listed above.
Categories, stated honestly
Cookie policies usually sort entries into four buckets. Here they are, with the empty ones left visibly empty rather than quietly dropped.
- Strictly necessary. One entry:
wm_consent_party, which records your own consent decision so we can honour it. - Functional (you asked for it).
wm_walls_v1,wm_last_wall_v1,wm_tracker_v1,wm_ambient_v1,wm_bar_dock_v1,wm_remote_pair_v1,wm_remote_draft_v1,wm_remote_install_v1. Each exists because you saved a layout, marked a title, paired a remote, added links on the remote, switched something on, or dismissed the install prompt. - Performance / analytics. Empty. We run no analytics.
wm_session_log_v1is a local minutes counter that never leaves your device and that you can export and wipe from the stats page. We describe it above rather than hiding it inside another category. - Advertising / targeting. Empty. There is no advertising anywhere in this product, and no data is ever used for it.
Third-party players and what they may store
This is the part we do not control, so we will be exact about it.
When you add a stream, we build the platform’s own official player address and put it in a frame on the page. That is the whole mechanism. Everything inside that frame is the platform’s own code running under the platform’s own name.
What that means for you. YouTube, Twitch, Kick, Rumble and X can set their own cookies and use their own storage under their own names, can see your IP address and browser because your device is requesting from them directly, and if you are signed in to them they can connect the view to your account. We cannot prevent this, we cannot switch it off for you, and we never receive any of it. It is governed by their privacy policies, not ours.
The specific third parties that can store something on your device when you use particular features:
- YouTube (www.youtube.com), when you add a YouTube stream or open a shared link containing one. We use the standard YouTube embed, not the no-cookie variant.
- Twitch (player.twitch.tv, clips.twitch.tv), when you add a Twitch stream or clip.
- The Twitch player script, when you add a Twitch channel or recording that supports play/pause control. This one loads as a script on our own page rather than inside a frame, which gives it more reach than a framed player. It is the only third-party code that ever runs in our page.
- Kick (player.kick.com), when you add a Kick stream.
- Rumble (rumble.com), when you add a Rumble video.
- X (platform.twitter.com), when you add an X post.
- Twitch and YouTube chat, when you open the chat side panel. Posting a message signs you in to that platform inside its own frame, which we never see.
- Movie of the Night (cdn.movieofthenight.com), when you open the TV guide. Poster artwork is loaded straight from their content network by your browser, which discloses your IP address to them. We cannot tell from our own code whether their content network also sets a cookie on those image requests, so we are not going to claim either way.
- Google Cast, on the website only if casting is switched on in a future build. In the current website build the Cast software is never loaded. If that changes, this page will be updated at the same time. The Android app does include Google’s Cast software; see the note on the Android app above.
Two limits we do put in place, which genuinely help.
- We tell the platforms as little as we are allowed to. Every frame and the whole site send
strict-origin-when-cross-originas the referrer policy. In practice that means a platform is told the request came from https://watchmatrix.tv and nothing more. It is not told the rest of the address, which is where your list of streams lives. - We read almost nothing of what a player sends back.A player on the page can post messages back to the page, and YouTube’s does: once we ask it to report, it streams a running status object into the page, which carries the playback position along with other details about the player and the video. The only thing the app reads out of it is the position, and whether the player is paused, used to keep tiles in sync. The rest is ignored, none of it is stored, and none of it is about you. What is read stays in your browser tab except during a watch party, where the position goes to the people in your party and nowhere else.
On the TV guide.The guide currently has no link anywhere in the site’s navigation, but the page still works if you have a bookmark or an old link. If you open it, the poster artwork loads from Movie of the Night as described above, and if you type in its search box, that text is sent to our own server function and on to Movie of the Night. That is a network disclosure rather than device storage, so it is covered in the Privacy Policy rather than here.
Watch parties, the phone remote and screen sharing
These features do not store anything on your device except the consent record and the remote’s pairing and draft entries listed above. They do send information over the network, including to third-party connection services, and one of them sends video. That is described in the Privacy Policy, not here, so that both documents stay accurate rather than half saying the same thing.
Do Not Track and Global Privacy Control
We do not run any code that reads a Do Not Track header, a Global Privacy Control signal, or any similar browser signal.
The reason is that there is nothing for such a signal to switch off. We do not track you across websites, we do not build a profile, and we do not sell or share personal information for advertising. There is no setting on our side that a signal could change.
Browser signals may still be received and acted on by the video platforms whose players you load. That is between you and them.
How to delete everything
On the website, all at once
The most complete way is your browser’s own controls, because they remove everything this site stored, in one action. Menu names change between browser versions, so the reliable route is:
- Chrome and Edge: the icon left of the address bar, then site settings or site data, then delete. Or Settings, then Privacy and security, then delete browsing data.
- Firefox: the padlock icon, then clear cookies and site data. Or Settings, then Privacy and Security, then Cookies and Site Data, then Manage Data.
- Safari: Settings or Preferences, then Privacy, then Manage Website Data, then find watchmatrix.tv.
- Any browser: using a private or incognito window means nothing is kept after you close it.
Remember the point above about separate addresses. If you have used the site on more than one of them, do this on each one.
On the website, item by item, inside the app
These are the controls that exist today. We list only the ones that are really there.
- Watch stats.“Clear stats”, with a confirmation, next to “Export JSON”, on the stats page. It is linked from the keyboard shortcuts panel in the viewer.
- The resume entry.The small close control on the “resume” chip, labelled “Forget last wall”, on the homepage and in the viewer.
- Saved layouts. Delete, one layout at a time, in the saved layouts panel in the viewer. There is no delete-all.
- Your watch list.Export the list to a file, and “Remove” one title at a time. There is no clear-all. These controls sit inside the TV guide, which currently has no link in the navigation.
- Ambient light preference. Switching ambient mode off deletes the entry.
- Watch-party consent. The “Stop sharing” button in the party bar. It is only reachable from inside a party.
We are telling you plainly where this falls short.There is no single “delete everything” button in the app today, there is no way to clear your whole watch list in one action, and there is no way to withdraw watch-party consent without joining a party first. Until that changes, the browser controls above are the complete answer, and they do work.
On the Android app
- Inside the app:Settings, then “Clear all app data”, erases all ten entries listed above; close and reopen the app afterwards. In the same screen, “Forget paired screens” removes only
wm_remote_pair_v1and “Clear draft” removes onlywm_remote_draft_v1. The stats screen can export and clear your stats. - Through Android:Settings, then Apps, then WatchMatrix, then Storage, then Clear storage. Menu names vary a little between phones. This also removes the cookies and site data of the players and web pages inside the app, and any files Google’s software keeps there, which the in-app button does not touch.
- Uninstalling the app removes everything it stored.
On the desktop app
Delete the app’s data folder, or uninstall the app. Website cookies and logins created inside the desktop app are removed with it, because they live in that folder.
On the browser extensions
Removing the extension removes its storage. In “Matrix TV” you can also switch an individual site back off, which records the withdrawal.
Do we ask for consent before storing this?
No banner is shown today. Our reading is that everything above is either strictly necessary or is something you asked for by using a feature: a layout you saved, a title you marked, a switch you turned on. A banner asking permission to save the thing you just pressed save on is not a real choice, and honouring a refusal would simply mean the feature stops working. The one entry written automatically rather than on a press is the minutes counter described above, and it never leaves your device.
We would rather explain that reasoning, and list every key with the exact way to delete it, than put a box on the screen that does not offer you a real choice.
Changes and contact
If what we store changes, we will change this page and move the date at the top. There is no mailing list to notify, because we do not have your email address and do not want it.
WatchMatrix.TV is operated by Links.to LLC, which is the company responsible for the storage described on this page. Questions about anything on it: watch.matrix.tv@gmail.com.
← Back to WatchMatrix.TV