Genre LensYou are handing unreleased music to a website, so you deserve a straight account of where it goes. This page describes exactly what the code does — no more, no less.
Last updated 30 September 2026
Genre Lens is designed to protect your unreleased music. When you select a track for analysis, the following process happens entirely within your device’s browser:
.wav file (roughly 2 MB).The windows are chosen by loudness: silence at either end is set aside first, your browser measures the level of every second of what remains, and it picks the loudest 18-second stretch, then the loudest ones at least 30 seconds clear of those already chosen (closer together on a short track), and plays them in their original order; a track of 54 seconds or less is taken as one continuous excerpt instead. 16 kHz mono is deliberately low fidelity — enough to recognise a style and not much use as a copy of your master. Only the excerpt is transmitted: the original file is never uploaded, never stored, and never sent anywhere. If you close the tab before the analysis finishes, nothing about the track has left your machine.
To identify the category and genre of your music, the compressed 54-second excerpt is securely transmitted via our API gateway to our artificial intelligence provider (Google Gemini).
The gateway in question is the Netlify AI Gateway, and the excerpt travels through it alongside the written instructions describing the genre taxonomy. Google processes it under Google’s own terms. On our side the excerpt is never stored: it exists in memory for the length of one request and is not written to the database or to file storage.
Genre Lens requires no user accounts, no email sign-ups, and no tracking cookies.
X-Client-Id) specific to your current browser.If an analysis succeeds, one row is written to a Postgres database hosted by Netlify, so your log survives a page refresh. That row holds:
Two things you might expect to be saved are not. Your free-text notes are sent to the model as a hint but are never stored — though the model’s written explanation is stored, and it may quote or refer to what you wrote. If you paste your own dropdown options, the list itself is not kept, but the single option matched to your track forms part of the saved verdict.
Rows are kept until you delete them. There is no automatic expiry, and no backup copy is made beyond whatever Netlify keeps to operate the database.
So that your log shows your tracks and nobody else’s, your browser generates a random identifier the first time you use the tool and stores it in localStorage under genre-lens.client-id. It is attached to the rows you create and is the key that lets you read and delete them.
It is sent to the server in a request header rather than in the web address. That is a small thing with a real effect: addresses are written to server and proxy logs, kept in your browser history, and survive being pasted into a message to somebody else, and the key to your log has no business travelling that way.
It is not an account and not a tracking cookie. It is generated on your device, contains no information about you, is never combined with anything else, is never shared, and is not used to build a profile or to advertise. If you clear your browser’s site data it is forgotten, and any log entries you had not deleted become permanently unreachable.
Each analysis sends audio to a paid model, so the tool allows thirty tracks per person per day. It is free to use and has no adverts and no subscription, which means there has to be a ceiling somewhere or a single script could exhaust the budget for everybody. Thirty resets at midnight UTC. The genre reference does not count against it and stays open either way.
Counting that limit is the one place the tool touches your connection. When a track is submitted, your IP address — or, on an IPv6 connection, only its network half, which is what identifies one household or phone — is combined with a fixed secret and run through a one-way hash; the first half of the result is used as the name of a counter holding a single number, for one day only. The address itself is never written down, and the counter records only how many analyses that name has run — not which tracks, not when, not what came back. Counters for previous days are deleted. This is still information derived from your connection, which is why it is described here rather than left out.
The address is used rather than the browser id above because clearing browser storage takes one click, and a limit that can be reset that easily is not a limit. It is a blunt instrument: mobile networks and offices put many people behind one address, so a count is shared by everyone on it, which is part of why the allowance is set well above what one person is likely to need. If no address is available, the browser id is used for counting instead. The number of tracks left, shown on the scanner, is read from that same counter each time the page loads and after every attempt; it is never estimated in your browser.
You keep every right in the audio you analyse. The tool processes only what is technically required to produce your result: your browser trims the file, a short excerpt is analysed, and the excerpt is not retained. Using this tool grants no licence or ownership of any kind to us or to any third party.
Your intellectual property is not stored, shared, sold, or used for any purpose beyond generating your result. The small mono excerpt sent to the model is analysed in-memory, never persisted, and is not kept anywhere.
There is nobody else. No third party receives your audio or your log.
Every entry in the log has an ✕ that removes it from the database immediately and permanently. To erase the lot and start over, use this:
This deletes every row belonging to this browser and then discards the id. It cannot be undone.
If what the tool does with your data changes, this page changes with it and the date at the top moves.
There is no contact form and no mailing list, because there is no mailbox collecting your details in the first place. Everything you might otherwise have to ask permission for — reading your log, deleting a single entry, deleting the lot — you can do yourself, here or in the log itself.