Privacy policy

What stays in your browser, what leaves, and how to stop it.

Applies to Watch Later Tidy (TidyWL) version 1.6.0 and later, on Chrome, Microsoft Edge and Firefox. The Edge build is the Chrome one, so wherever this page says Chrome it means Edge too. Published 2026-08-29, ahead of the 1.6.0 release; effective from the day 1.6.0 ships. Versions before 1.6.0 sent nothing about you or your install anywhere; that changed in 1.6.0, and this page exists because of it. Updated 2026-09-07 for version 2.0.0, which adds a paid tier and a Lineup that reads your watch history, again on 2026-09-12 for Firefox's licence permission and the checkout on the pricing page, on 2026-09-18 for version 2.1.0, whose usage report adds counts of a free install looking at Pro and of special announcements, on 2026-09-26 for version 2.2.0, whose usage report splits the videos you remove by whether the whole list was selected, on 2026-09-28 for version 2.3.0, whose usage report counts uses of the four Export & open buttons, on 2026-10-08 for version 2.5.0, whose usage report counts how often a free install met the free removal limit, and on 2026-10-14 for version 2.6.0, whose uninstall link carries your own counts after a # that is never sent. If you never buy Pro, the TidyWL Pro sections below do not apply to you.

The short version

What stays in your browser

TidyWL works by calling YouTube's own endpoints with the session you are already signed in with, exactly as the YouTube web app does. Everything it fetches — your Watch Later, your Liked videos, any playlist you open, and the per-video details on each card — is cached in your browser's extension storage so the dashboard can search, sort and filter thousands of videos without re-fetching. That cache is namespaced per Google account and per playlist. It is never uploaded anywhere, and it goes away when you uninstall the extension.

The Lineup reads two more things, and they stay here as well. To suggest what to watch next, the Lineup reads your own YouTube watch history and your list of subscribed channels — the same way it reads a playlist, through YouTube's own endpoints with the session you are already signed in with. It also asks YouTube which category each video is in, so it can tell music from the rest. All three are cached in extension storage, per Google account, and re-read about once a day: wl_watch_history_<account>, wl_subscriptions_<account> and wl_video_category_<account>. The whole ranking — which videos are picked, and why — is worked out on your machine. None of it is sent to tidywl.com or anywhere else, and nothing derived from it appears in the usage report below. Uninstalling removes all three.

The free removal allowance is counted here too. On an install made from version 2.5.0 on, the free plan removes up to 1,000 hand-picked videos every 30 days, and the 30 days start with the first removal that counts. The day the current 30 days started and the count of what you have used since are kept as wl_removal_allowance, and a mark saying the install is new enough to have the limit as wl_removal_limited, in extension storage, once per install rather than per Google account. Neither is sent anywhere, and uninstalling removes both.

No sign-in, no account with us, no API key, no OAuth token. TidyWL cannot read your YouTube data when you are not signed in to YouTube in that browser. Pro does not change that: a licence key is not an account. There is no password, no profile, and we never learn your email address.

What TidyWL sends to tidywl.com

Three things, all to this site and nowhere else. The third only happens if you buy Pro.

1. A public configuration file

On each YouTube page load the extension fetches a small public JSON file (/config/api-config-v2.json) and, when you open the dashboard, a notices file (/config/announcements.json). These tell the extension where to find fields in YouTube's responses, so that many YouTube-side changes can be fixed without shipping a new version. The requests carry no identifier and no payload; everyone receives the same bytes. Nothing fetched is executed as code. From version 2.1.0 a notice can open once as a window when you open the dashboard, a special announcement: the extension draws it from that file as plain text and links, and only links to tidywl.com, our Discord, the browser stores, GitHub and Ko-fi are made clickable.

2. A usage report

Each install carries a random identifier, generated in your browser when the extension is installed. It is not derived from, linked to, or stored alongside your Google account, your email, or anything else about you, and it is not shown anywhere in the extension. Reinstalling generates a new one.

Whenever one of your lifetime counts changes — after a delete, an unlike, a move, a sync, a Lineup, the first time you open the dashboard on a given day, a look at the Pro plans, or a special announcement — the extension sends that identifier and the counts to https://tidywl.com/api/installs. The report is exactly this, and nothing else:

FieldWhat it is
identifierThe random install ID described above.
browser"chrome", "edge", "opera" or "firefox". Edge and Opera are named from version 2.1.1; before it they were filed as "chrome", and any other Chromium browser, Brave included, still is.
deletedHow many videos you have removed from Watch Later and from playlists, ever, with TidyWL.
unlikedHow many likes you have removed, ever, with TidyWL.
movedHow many videos you have moved to another playlist, ever, with TidyWL. Copies are not counted.
operationsHow many bulk runs you have completed — one per batch, whatever its size.
lineupsHow many times you have built a Lineup, ever, with TidyWL.
lineups_savedHow many of those you saved as a YouTube playlist.
open_daysOn how many days you have opened the dashboard, ever. It goes up by one at most once a day, however many times you open it that day.
gate_lineupHow many times a free install opened the Pro plans from the Lineup.
gate_rulesThe same, from one of the clean-up rules.
gate_pinThe same, from Pin.
gate_undoThe same, from the delete history.
gate_viewsThe same, from saved views.
gate_searchThe same, from the sidebar search. Retired in version 2.1.0, when the sidebar search became free: it stopped counting and reports 0, and an older install keeps reporting whatever it had reached.
upsell_aboutHow many times a free install opened the Pro plans from the About window.
upsell_yearlyHow many times the yearly plan was picked on them, at most once each time they are open.
upsell_clickedHow many times someone went from the Pro plans to tidywl.com, with Upgrade or Learn more.
confirm_proHow many times the Pro link in the free delete confirmation was clicked.
promo_seenHow many limited-time offers a free install was shown. Each offer is shown at most once.
promo_clickedHow many of those were clicked through to tidywl.com.
limit_seenHow many times a free install was shown the free removal limit, from version 2.5.0 on: the question asked when you select more hand-picked videos than are left in the current 30 days.
gate_limitHow many times Get Pro was clicked from it, or from the completion box after it.
special_seenHow many special announcements you were shown. Each is shown at most once.
special_clickedHow many times you clicked the link in one.
removed_wholeOf the videos you removed (deleted, likes removed, or moved away) from version 2.2.0 on, how many went while you had the whole list selected.
removed_partialHow many went while you had only part of the list selected. A copy, and a video deleted from its own card, count in neither.
notebook_sendsHow many times you used Send to Gemini Notebook with at least one video, from version 2.3.0 on.
exportsHow many times you exported your list as JSON or CSV, from version 2.3.0 on.
transcript_runsHow many times a transcript download started, from the toolbar or a video's own menu, from version 2.3.0 on.
tab_opensHow many times you used Open in Tabs, from version 2.3.0 on, however many tabs each time.
Watch Later sizeHow many videos were in your Watch Later the last time you synced it.

Never sent: a video title, a video ID, a channel, a playlist name, a URL, a timestamp of when you did anything, your watch progress, your watch history, your subscriptions, your Google account or email, your licence key, your extension settings, or an IP address the extension has read. The report format has no field that could hold any of these, so none can be sent by mistake.

The two Lineup counts are counts and nothing else. They say how often the feature was used, never what it suggested, what you watched, or which playlist you saved.

Days opened is a number, not a diary. The report carries how many days, never which days, what time or for how long. The server does note the date each report arrives; see How long it is kept, and where.

Looking at Pro is a count, not a sales lead. The fourteen counts from gate_lineup to gate_limit say how often a free install reached for Pro, and from where. Only a free install can move them. They are not linked to a licence key, a purchase or a checkout, so they cannot tell us who bought Pro, or whether anyone did.

Special announcements are counted, never named. The report says how many you were shown and how many you clicked, never which ones or what they said. Like every count here, a change is reported on the next YouTube page load, so looking at the Pro plans or seeing an announcement can add a report that day.

Whole list or part of it splits counts already sent. removed_whole and removed_partial divide the videos you remove by whether you had the whole list selected or only part of it. They never say which list, which videos or when, and they start at zero on the update to 2.2.0, so anything removed before it stays in the totals above and nowhere here.

The Export & open buttons are counted, never what went through them. notebook_sends, exports, transcript_runs and tab_opens go up by one each time one of those buttons does something: never by the number of videos, and never with which videos, which notebook, which file or which tabs. Nothing is counted when there were no videos, or when you answer Cancel to the question Open in Tabs or Download transcripts asks before a long run. They start at zero on the update to 2.3.0.

Counts include what you did before 1.6.0. The extension has counted deletions locally since version 1.4.1 (that is what powers the "you've cleaned up N videos" note). Those totals are reported on the first YouTube page load after updating, so a long-time user's first report already carries their history. One consequence: likes removed before 1.6.0 were counted as deletions at the time and stay in the deleted total; they cannot be separated out after the fact.

Opening the dashboard sends at most one report a day. The first time you open it on a given day, open_days goes up by one and that change is reported; opening it again the same day sends nothing. This is what lets us count how many people use TidyWL in a week, not only how many clean something up. There is still no timer and no install beacon: a report is sent only when a count has changed, an install that has never opened the dashboard or done anything counted above sends nothing at all, and an install that is idle sends nothing while it is idle.

3. A licence check, if you buy Pro

A free install never calls these endpoints. Nothing in this section happens until you enter a key.

Buying Pro gets you a licence key — about twenty random characters, made by our server. It is not derived from your email, your name or anything else about you. It is kept in the extension's synced storage, so it follows your browser profile to your other computers.

The extension sends that key to https://tidywl.com/api/license/… to switch Pro on, and sends it again to check the subscription is still live — at most once every 15 minutes, and only while the dashboard is open. The interval is short on purpose: it is how a cancelled subscription, or a device you removed from another computer, stops working here within minutes instead of a day. If the server cannot be reached at all, Pro keeps working for 14 days and then switches itself off.

Each call carries the key, the activation ID for this device, and — the first time only — the device name you typed. Nothing about your playlists, your videos, your watch history or your Google account goes with it. The same is true of the button that removes a device and the one that opens the billing portal.

On Firefox, none of these calls happens until you allow it. Firefox files a licence check under Authentication information, an optional permission that TidyWL declares and does not assume. The first time you press Activate, remove a device or open Manage subscription without it, TidyWL opens a page explaining the check and Firefox shows its own prompt. Say no and nothing is sent. While that prompt is open, the call you started waits in the browser's memory, never on disk, so it can finish by itself when you allow it. Without the permission the automatic check sends nothing either, and Pro pauses 14 days after the last successful check.

Why

To know how heavily TidyWL is actually used — how many people open it in a week, how many installs clean up in one big purge versus a little every week, how large the lists are — which decides what gets built next. Reviews and donations are the only other signal and both come from a self-selected few. The numbers are used for that and for a public total on this site. They are not sold, not shared with anyone, and not used for advertising.

How to stop it

How long it is kept, and where

One record per install, on a server we run at tidywl.com — a Cloudflare Worker with a Cloudflare D1 database. The server keeps the highest value it has seen for each count and the latest Watch Later size. It also keeps three dates, the day only and never a time: the day your install's first report arrived, the day its latest one did, and the latest day one of your delete, unlike, move or Lineup counts went up. Because the first dashboard open of a day sends a report, the second date is in practice the last day you opened the dashboard. Once a day the server also adds every install's figures up into daily totals — how many installs reported in the last week, how many were new, how many did a clean-up — kept in tables that name no install, and so kept after the records they were added up from expire. A record that has not been updated for 12 months is deleted; before deletion its counts are added to a single running total so the public number never goes backwards, and after deletion nothing about that install remains.

The server does not keep request logs, does not read or store the IP address your report arrives from, and has no error-tracking service attached. Cloudflare, which fronts the site, rate-limits the endpoint per address at its edge; that happens in Cloudflare's infrastructure under Cloudflare's own policies, and nothing about the address reaches the server or its database.

TidyWL Pro — what the licence record holds

Buying Pro creates rows in that same database. There are two kinds, and this is all of it.

The licence

One row per subscription. It holds a fingerprint of your key (the key itself is stored encrypted, so the checkout page can show it to you again, and never in readable form), which plan you are on, whether the subscription is active, past due, cancelled, expired or refunded, whether it is a trial, how many devices it allows, when the next charge is due, when the paid period ends, and Paddle's own identifiers for the subscription and for you as their customer.

Not your email, not your name, not your address, not one digit of your card. None of those ever reach us. Paddle's customer identifier is the only thing on the row that points at a person, and only Paddle can turn it back into one.

The activation

One row per device you switch Pro on. It holds an activation ID we generate, which licence it belongs to, the device name, when it was activated, and when it last checked in. The name is yours to choose — the dashboard fills the box with something like "Chrome on Mac" so the list is not full of blanks, and you can type anything over it.

A key activates on 3 devices. The About modal shows the whole list — every device, its name, when it was added, when it was last seen — and you can remove any of them from any device. Removing one frees the seat straight away; that device drops back to free at its next check, within 15 minutes.

Deactivating deletes the activation row outright. The licence row stays while the subscription exists, and after you cancel, so the key still works if you come back. Ask us and we will delete that too — see below.

Renewal dates

When Paddle tells our server that a subscription started, renewed, failed or was cancelled, the message carries the date of the next charge and the date the paid period ends. Both are stored on the licence row, and the extension reads them back. That is the only reason the About modal can say "Renews Oct 5, 2026" instead of saying nothing.

Paddle, who takes the money

TidyWL Pro is sold through Paddle, which is the merchant of record — legally the seller, and the one that charges you, files the sales tax and handles refunds. The checkout is Paddle's own form, opened over the pricing page on this site in an ordinary browser tab, never inside the extension.

Your card details, billing address and email go to Paddle, and never to us. What Paddle tells us is: this subscription exists, this is its plan, this is whether it is paid, and here are Paddle's own reference numbers for the subscription, for the customer and for each payment. What Paddle does with what you gave them is covered by Paddle's privacy policy, not this one.

The page you land on after paying. When the checkout finishes, the pricing page sends you to a page on this site with the payment's transaction number in the address, and that page trades the number for your key. The address carries nothing else.

Finding a lost key. Every Paddle receipt shows that transaction number. Paste it into the same page, or into Have a key? in the extension, and it goes to our server once, to look your key up. The lookup stores nothing new: the number is already on your licence, recorded when Paddle told us about the payment. The same number is enough to see the key, so treat your receipts the way you would the key.

Manage subscription. The button in the About modal asks our server for a link into Paddle's customer portal, where you can cancel, change your card or download invoices. The server looks up your Paddle customer identifier, asks Paddle for a signed-in link to that account, and hands it straight back for the browser to open in a new tab. It only happens when you click it. That link is a credential, so it is never written down: not stored, not logged, not kept once the tab is open.

Requests about your data

Because the usage identifier is random and lives only in your browser's extension storage, we cannot tell which usage record is yours, and neither can you without reading the extension's storage directly. There is therefore no lookup, export or delete-on-request for those records; expiry after 12 months of inactivity is the deletion mechanism. If you have a question anyway, write to support@tidywl.com.

A Pro licence is different, because the key identifies it. Write to support@tidywl.com from any address and quote your key, and we can tell you exactly what is on your licence row, or delete the row and every activation on it. Deleting it is permanent — the key stops working and cannot be restored — so cancel your subscription with Paddle first. Anything Paddle holds, including your email and your invoices, has to be asked of Paddle.

What you send yourself

Send to Gemini Notebook takes the videos you selected and adds their links as sources to a Gemini Notebook (formerly NotebookLM), using your own Google session. Those links go to Google, because that is the entire point of the feature. It only happens when you click the button, and only after you have granted the browser permission for notebook.google.com that the extension asks for the first time you use it. Google's handling of what arrives there is covered by Google's privacy policy, not this one.

Request a refund, in the About card, copies a message to our support address with your licence key in it and opens Gmail's compose window with that message already written. The key is in the link to Gmail from the moment you click, so it reaches Google, in your own mailbox, whether or not you send it; it reaches us only when you do. It only happens when you click it.

The uninstall page. When you remove TidyWL, your browser opens tidywl.com/uninstall/, which asks why. Answering is up to you. Clicking a reason sends us that reason; if you then type something and press Send note, it sends what you typed too, up to 2,000 characters. Both go with a random ID the page draws when it opens, so changing your answer replaces it rather than adding a second. That ID lives only in that tab and is not your install's ID, and nothing else is sent: no install ID, no version, no browser, no account. The server keeps the reason, what you typed and the day, never a time, and deletes them 12 months later. To stop one address flooding the form, the server hands the address an answer arrives from to Cloudflare's rate limiter, and nowhere else: it is not stored or logged. The form cannot reply, so leave out anything that identifies you; if you want an answer, write to support@tidywl.com instead.

Your own count, in that link. From version 2.6.0, the link your browser opens carries this install's own totals after a #: how many videos it removed or unliked, how many it moved to another playlist, and which store it came from, for example tidywl.com/uninstall/#c=1222&m=56&s=chrome. Browsers never send the part after a # to a server, so tidywl.com never receives it. The page reads it only to show you your count if you answer I finished my cleanup, and puts none of it in what it sends. The link does stay in your browser history, like any page you visit.

Permissions, and what each one is for

Visiting this website

Everything above is about the extension. This section is about tidywl.com itself, which is a separate thing you may use without ever installing anything.

This site counts visits with Cloudflare Web Analytics, and nothing else. Since 2026-09-15 each page loads a small script from Cloudflare, static.cloudflareinsights.com/beacon.min.js, which reports back to tidywl.com/cdn-cgi/rum: the page you opened, the site that linked you here, your country, your browser, operating system and device type, and how long the page took to load. Cloudflare says it uses no cookie or local storage to track visitors, does not fingerprint them by IP address or browser, and does not follow them across other sites. We see totals, such as how many visits a page had and which sites sent them, never a person. Cloudflare keeps the full detail for 7 days and a sample of about a tenth after that. There is no Google Analytics, no Plausible, no Fathom, no pixel, no tag manager and no session recorder, and nothing here records what you click. An ad blocker or Brave stops the script, and the site works the same without it.

We set no cookies of our own. The site stores exactly one thing in your browser: whether you chose light or dark mode, kept in local storage under theme, written only when you click the toggle and never sent anywhere. Clear your site data and it is gone.

One page loads Paddle's script. The pricing page loads Paddle.js from Paddle's own servers so the checkout can open over it, and Paddle handles the payment from there. What that script does in your browser is covered by Paddle's privacy policy, not this one. No other page on this site loads anything from Paddle. The page you land on after paying reads the transaction number out of the address, or takes one you paste into it, and asks our server for your key — described under Paddle above.

Our host sets one. The site is served through Cloudflare, which sets a short-lived cookie (__cf_bm) to tell browsers apart from bots. It is a security measure, it expires within half an hour, and it is not used to profile you or to advertise.

The demo video does not load until you press play. The thumbnail on the front page is an image on our own server, not an embed. Only when you click it does a YouTube player load, from youtube-nocookie.com, and only then does YouTube see you. If you never press play, no request reaches Google at all.

Fonts are served from here, not from Google. The typeface is stored on our own server, so loading a page on this site does not tell Google you did.

Web servers necessarily see the IP address of whoever asks for a page; Cloudflare's are kept briefly for security and abuse handling, and we do not build them into logs, profiles or reports of our own.

What is not in this policy, on purpose

No analytics library, no crash reporter, no advertising SDK, no third-party script of any kind runs inside the extension. The extension ships unminified — every file in the package is the source — so anyone who wants to check what it sends can read it rather than take this page's word for it.

Changes to this policy

Material changes will be listed here with a date and announced in the dashboard's What's New. This page is the policy linked from the Chrome Web Store listing, the Microsoft Edge Add-ons listing and the Firefox add-on.

Questions? support@tidywl.com, or the Discord. Back to what TidyWL does.