Skip to content

Privacy

What stays on the device, what leaves, and how to erase it.

Version of September 7, 2026.

Summary

  • The Spotify .zip file is opened and totalled inside your browser. It is never uploaded anywhere.
  • The plays it contains are stored on your device, and they go up only if you ask for the copy in the cloud.
  • If you agree, artist and album names go out to three outside services to fetch genre and cover art.
  • Cover images are loaded straight from Spotify's own image server. It sees your device's network address (IP) and which albums are on your screen.
  • If you connect your Last.fm, your username, which is already public, leaves this device and your history comes back.
  • “Erase my data” clears this device and signs you out. The copy in the cloud stays. To delete it, use “Delete my account”.

What is processed on the device

The Spotify file is opened and totalled inside the browser, in a Web Worker. The result — totals per year, per month, per artist — is stored in the device's IndexedDB. The original file is not kept.

Since September 2026, the plays from the export are also kept on the device, one by one: what played, when and for how long, never the network address. That is what makes it possible to join the export and Last.fm into a single library. They do not leave the device on their own, and the erase button takes everything along.

The shelf — the records you pull in the room — is a list of names kept in this browser's localStorage. It does not leave the device either, and the erase button takes it along.

What leaves the device

Only if you accept the genre and cover notice: artist names, album names and the Spotify track identifier. Never a play, never a date. After you accept, the lookup keeps going on later visits until it covers what is missing. To stop it, use “Withdraw consent”, in Settings.

  • MusicBrainz — receives the artist name and returns genre tags.
  • Deezer — receives the artist name and returns the broad genre.
  • Spotify (oEmbed) — receives the track identifier and returns the address of the album cover.

The lookups pass through a route on this site hosted by Vercel, which only relays the question and the answer. The route writes nothing to any database, and the genre and cover answers sit for up to 30 days in the hosting cache so the same question is not asked twice. They are catalogue data, the same for everyone, and they do not say who asked.

The artist names and track identifiers you agreed to enrich go into a shared cache belonging to this site (Supabase, São Paulo), with no link to your account or device. It exists so that the same artist does not have to be looked up again by someone else. The cache does not contain what you played or when, only what the outside services said about that artist or that record, which is the same for everyone. When the cache does not know an artist yet, the server itself queries Deezer and MusicBrainz later, even with the app closed. Those queries leave from this site's server, carry only the artist name, and carry nothing that ties the question to you, to your account or to your device.

After that, the cover images are loaded straight from Spotify's image server by your browser, without this site in the middle. At that moment Spotify receives your device's network address (IP) and knows which covers you are looking at, which is a clue to which albums you have listened to. There is no way to fetch the cover from them without leaving that trace. If you would rather avoid it, do not accept the cover lookup.

Network address and server logs

Every visit to this site hands your network address (IP) to the hosting, as on any site on the internet. Function execution logs are kept for about one day on Vercel, and sign-in logs for a few days on Supabase. The site itself writes a few log lines to know whether something failed: they carry the cause of the failure and counts, and never your email, your Last.fm username, what you played, or any credential. The IP address has one further use, and a short one. The routes that fetch genre, cover art and listening history count how many calls come from each address, in memory only and for a few minutes, so that no one alone can exhaust the quotas that belong to every visitor. That count is stored nowhere, is not tied to your account, and vanishes with the server that made it.

These logs are not deleted by “Delete my account”: they exist for security and diagnostics (legitimate interests, GDPR art. 6(1)(f); LGPD art. 7, IX), not on your consent, so they do not fall away when you withdraw it. They expire on their own within the period above.

Last.fm (optional)

You can connect your Last.fm instead of uploading the export. There is no sign-in, no password and no authorisation: a Last.fm username is public, and it is the only thing that leaves this device.

  • What leaves — your Last.fm username, and the artist and track names whose length is looked up. Nothing else.
  • How it leaves — through a route on this site, which only relays the question and the answer and writes nothing to any database. The Last.fm key stays on the server. The answer carrying YOUR history goes into no shared cache; the length of a track, which is catalogue data, does.
  • What comes back — your scrobble history: what played, when, from which album, with the cover art.
  • Where it sits — totalled on your device, in IndexedDB, just like the export. It only leaves if you ask for the copy in the cloud, in the block below.
  • The hours are estimates — a scrobble does not say how long the track played; the page uses the track length. The export carries the exact time.
  • Updating on its own — with “Update on open” switched on (the default), opening the app asks Last.fm what is new since last time, at most once an hour. The same thing leaves as always: your username. You can switch it off in the Last.fm block, under “Start here”.
  • The history sits on your device — so it can update without fetching everything again, your plays (what played and when) are kept in this device's IndexedDB, and not only the total. They only leave if you ask for the copy in the cloud (block below), and the Last.fm block's “Erase” takes both.
  • How to erase it — the “Erase” button in the Last.fm block removes only that library; “Erase my data” below takes it along with everything else.

Legal basis: consent (GDPR art. 6(1)(a); LGPD art. 7, I). Connecting is a choice, and erasing undoes it.

The library in the cloud (optional)

You can sign in with Google and ask for a copy of your library to be kept. Since 5 September 2026 two things go up: the totals the page shows and your plays, one by one, with track, artist, album, the moment it played and for how long. That is how your library comes back on a new phone from where you left off. The Spotify file is still not uploaded, and without signing in the button does not even appear.

  • What goes up — the totalled library (totals per year, month, artist and genre), your plays one by one (track, artist, album, moment and length), and the name and email on your Google account.
  • What does not — the Spotify file and the full lists of artists, tracks and albums.
  • Where it sits — on Supabase, on servers in São Paulo, Brazil. The totals sit in a database row that is yours alone; the plays sit in a compressed file in a folder that is yours alone, in a private bucket.
  • For how long — until you delete it. Keeping it again replaces the previous copy.
  • Who can read it — only you. The rule is enforced by the database and by the file store: your row and your folder are readable only by your session. The person responsible for the site has technical access, as any administrator does.
  • How to erase it — the “Delete my account” button, under “Your library” and under Settings. It removes the plays, the totals and the account at once.
  • “Erase my data” does not delete this copy. It clears the device and signs you out, so the copy does not come back down on its own. It stays kept until you use “Delete my account”.

Legal basis: consent (GDPR art. 6(1)(a); LGPD art. 7, I). Signing in is one choice and keeping a copy is another, and you can undo both.

Daily update on the server (optional)

If “Update every day, even with the app closed” is on, once a day this site's server asks Last.fm, on your behalf, what you have played since last time. Then it updates the copy in your account. It is the only thing on this site that happens without the app open. It comes turned on by default for people who sign in with Google, and only on one screen: the walkthrough screen about Last.fm. The box appears ticked there, with this explanation next to it, once that screen is in front of you, never before it and never if you skip the walkthrough. One tap turns it off. For anyone who does not sign in, it does not exist: without an account there is no cloud copy for the server to update. Without a saved Last.fm username the box cannot be turned on at all, because there would be nobody for the server to ask. Turning it off is the same checkbox, under Settings → Keeping it alive.

  • What leaves here — your Last.fm username, which is already public, in a query to their API. Nothing else leaves: not your email, not your library, not what you played.
  • What the server reads — the records you already saved to your account (the compressed file in your folder) and your library row. It does not read anyone else's: the query is limited to whoever turned the switch on.
  • What it writes — the same place as always: your row and your folder. It adds the new plays, redoes the totals, and stores the date of the last attempt and the cause of the last failure, so the screen can tell you.
  • When — once a day, overnight. If it fails, it does not retry the same day.
  • Turning it on saves your copy — if you do not have a cloud copy yet, ticking the box saves your library and your plays to your account, because that copy is where the server starts from. It is the same thing the “Keep in the cloud” button does.
  • How to turn it off — the same checkbox, in the walkthrough or under Settings → Keeping it alive. Once off, your row stops being included in the next day's query.
  • Turning it off does NOT delete your Last.fm username — it stays in your row, because it is what lets the switch be turned back on. What deletes it is “Delete my account”, or a request through the contact address.

Legal basis: consent (GDPR art. 6(1)(a); LGPD art. 7, I). It is still consent even when it comes ticked: the box sits on the screen where it is ticked, with this explanation beside it, and unticking it is one tap in the same place — and it is asked separately from saving to the cloud, because it is a different processing: here the server acts on its own.

Emails (optional)

If you tick “email me”, this site sends one thing and nothing beyond it: a reminder three days after you ask Spotify for the file, and only if the file has not arrived yet. One message, once, and nothing after it. The box is unticked everywhere it appears, and nothing is sent unless you tick it. There is no newsletter, promotion or product email.

  • Where your address comes from — from your Google account, the same one you signed in with. There is no field to type an email, and no separate sign-up.
  • Where it is NOT kept — in no table of this site. It stays where the sign-in put it, and the server looks it up at the moment of sending and discards it. No mailing list is built here.
  • What goes inside — the day you asked for the file and, if you have Last.fm connected, how many plays the last daily update brought in. Nothing else: not what you listened to, not your history.
  • Who sends it — Resend (United States), the delivery processor. It receives your address and the content of the message in order to deliver it, and nothing else.
  • No tracking — the only image is the logo, served by this site itself, identical for everyone and with no parameters; there is no pixel and no redirected link. Gmail and other clients fetch images through their own proxy, and our server log lasts one day. This site does not know whether you opened the message or clicked anything.
  • How to turn it off — the “unsubscribe” link in every email (it works without signing in), or the same box under Settings → Account. Turning it off applies from the next send onwards.
  • If you have no account — the box cannot even be ticked: without signing in with Google there is no address to send to.

Legal basis: consent (GDPR art. 6(1)(a); LGPD art. 7, I), asked separately from keeping the copy in the cloud and from the daily update, because it is a different processing — here the site acts outside itself, in a channel that is yours. The box starts unticked, and the unsubscribe link is as easy to find as the box was to tick.

What your history can reveal

Listening history is not a “special category” of data under GDPR art. 9, nor “sensitive data” under LGPD art. 5, II. But it does allow inferences: a library full of worship music suggests belief, and the timestamp of every play sketches your sleep and work routine. So, with no legal obligation to do so: this site does not use your history for advertising, does not build profiles for third parties, does not sell or share data with anyone and does not create labels naming belief, political opinion or health. The only classification it makes is by musical genre.

The cards you share

The card image is drawn inside your browser and handed to whichever app you pick in the system sheet. It goes through no server, is not stored here and leaves no copy on the site.

Legal basis

Two bases, and each processing runs on one of them. On CONSENT (GDPR art. 6(1)(a); LGPD art. 7, I), asked separately and withdrawable at any time: reading your file, fetching genre and cover art, connecting Last.fm, keeping the copy in the cloud, turning on the daily update and receiving the emails. On LEGITIMATE INTERESTS (GDPR art. 6(1)(f); LGPD art. 7, IX): keeping the site up, logging access and defending it from abuse. You can object to the latter by writing to the contact address.

For how long

On the DEVICE: as long as you want — it goes when you press the button, clear the site data in your browser, or uninstall the app. In the CLOUD: until you delete the account, with no automatic expiry and no version history (keeping it again replaces the previous copy). In the SERVER LOGS: about one day for function execution, a few days for sign-in. In the HOSTING CACHE: nothing from anyone's history, and up to 30 days for catalogue data, which identifies no one. For the EMAILS: your address is not stored here, and the delivery record stays with Resend for their own period.

Your rights

The GDPR (arts. 15 to 22) and the LGPD (art. 18) give you access, rectification, portability and erasure. Here you exercise them yourself, because the data is with you:

  • Access (GDPR art. 15) — the whole page shows your own data.
  • Portability (GDPR art. 20) — “Download my data”, under Settings → My data, builds a JSON file with everything this device has stored: the totals, the plays one by one, the coverage and your preferences. The original Spotify file is yours, and stays with you.
  • Rectification (GDPR art. 16) — process a new export, or reconnect Last.fm: the result is replaced.
  • Erasure (GDPR art. 17) — “Erase my data” clears this device and signs you out; “Delete my account” also removes the copy in the cloud and the account.
  • Withdrawal of consent (GDPR art. 7(3)) — at any time: “Withdraw consent” for the genre and cover lookup, the daily switch under Settings → Keeping it alive, the email box under Settings → Account (or the unsubscribe link in any email), “Delete my account” for the cloud.
  • Objection (GDPR art. 21) and restriction (art. 18) — to the processing that runs on legitimate interests (hosting and logs), through the contact address below.
  • Information about sharing — it is in the “Who else is involved” list, further down.
  • Complaint (GDPR art. 77) — you can lodge a complaint with your local supervisory authority in the European Union, or with the ANPD in Brazil.

For anything the page cannot settle on its own, write to fonotechapp@gmail.com.

Cookies

Without signing in with Google there are no cookies at all — no analytics, no tracking, and so no consent banner is required. The site uses browser storage (IndexedDB and localStorage) only to keep your library, what you have already set up here, and your theme and language preferences. After you sign in with Google, a single session cookie keeps you signed in; it is strictly necessary for that (and therefore exempt from consent under the ePrivacy Directive), does not track you, and goes away when you tap “Sign out”, “Erase my data” or “Delete my account”. For technical reasons of the sign-in service, that cookie is readable by the page's JavaScript (it is not “httpOnly”). Your name, your email and the address of your profile picture are kept in that same browser storage, so the site can show whose session it is without asking anyone. They go away with everything else.

Who else is involved

  • Vercel (processor, United States) — hosts the site and the routes. It receives the network address of every visit and keeps access logs under its own policy.
  • Supabase (processor, São Paulo, Brazil) — only if you keep a copy in the cloud. It is where that copy and your account live.
  • Google — only if you sign in with Google. It confirms who you are and passes on your name, your email and your profile picture. When that picture is drawn, its image server receives your device's network address. If you use the reminder in the guide, Google Calendar receives the text of the event you ask it to create.
  • MusicBrainz — open music metadata database; receives the artist name.
  • Deezer — public catalogue API; receives the artist name.
  • Spotify — public oEmbed (the track identifier) and, when a cover is drawn, its image server receives your device's network address.
  • Last.fm — only if you connect your Last.fm. It receives your username and returns your scrobble history.
  • Resend (processor, United States) — only if you ask for the emails. It receives your address and the content of the message, in order to deliver it.

None of them receives your data for advertising, and nothing is sold.

International transfers

The copy in the cloud does not leave Brazil: this site's Supabase project is in São Paulo. What does leave is the rest. The site's functions run on Vercel, whose default region is in the United States, and its delivery network is worldwide. MusicBrainz, Deezer, Spotify, Last.fm and Google answer from outside Brazil and outside the European Economic Area.

The bases are two, and separate (GDPR arts. 44 to 49; LGPD art. 33). What is optional (Last.fm, the genre and cover lookup, the daily update, the emails delivered through Resend, in the United States) rests on your explicit consent, which is the derogation of GDPR art. 49(1)(a) and LGPD art. 33, VIII. Derogations are meant to be exceptional, and not a standing transfer mechanism: they cover transfers you choose, one recipient at a time, and you can withdraw that choice. What is unavoidable for the site to exist (hosting, page delivery and access logs) rests on legitimate interests and on the contractual safeguards of the processors.

If there is a breach

If there is unauthorised access or a leak likely to pose a real risk to you, we notify the supervisory authority — within 72 hours of becoming aware of it, as GDPR art. 33 requires, and the ANPD in Brazil — and we tell you, by the email on your Google account when there is one, and on this page, saying what happened, which data was affected and what to do (GDPR art. 34; LGPD art. 48).

Who is responsible

The data controller is the person responsible for this site, a natural person, and fonotechapp@gmail.com is the channel for data protection matters. No data protection officer has been appointed: under the GDPR (art. 37) one is required only for public authorities, large-scale regular monitoring or large-scale special-category data, none of which this site does; Brazil's ANPD Resolution 2/2022 likewise waives the appointment for small processing agents. The contact channel applies either way (LGPD art. 41).

Vercel (hosting), Supabase (database and files) and Resend (email delivery) are PROCESSORS under GDPR art. 4(8): they handle data on this site's behalf and on its instructions. Google, Last.fm, Deezer, MusicBrainz and Spotify are independent CONTROLLERS of what they receive — when you choose to use them, what they do with it follows their own policies, and this page cannot promise anything on their behalf.

Minors

This site asks for a name and an email when you choose to sign in with Google. Without that, it asks for no account at all and works in full. The GDPR (art. 8) sets 16 as the age for consenting on your own, and each EU country may lower it to 13. Brazil's LGPD (art. 14) gives data on children and teenagers special protection. Below the age that applies where you live, use it with whoever is responsible for you, and sign in with Google only with their permission.

Changes

Changes take effect from the date of this version. When a change widens what is processed, as happened when the plays started going up to the cloud, consent is asked again, rather than the text simply being replaced.

Erase my data

Erases everything on this device and signs you out: the library, the plays, the shelf, the genre and cover caches and your preferences. The copy in the cloud stays kept. To delete it, use “Delete my account”.

How to request your historyUpload mine