Privacy

What happens to your music

This page describes what the code does today. Where a thing people usually promise is not built, it says that instead of promising it.

Kept for
7 days
Cookies before you agree
0
Analytics
only if you allow it
Reviewed against the source
2026-08-10

The short version

  • We claim no rights to anything you upload. It stays yours, in full, including the master we hand back.
  • Nothing is used to train anything. There is no model in this product to train: the dependency list is numpy, scipy, soundfile, pyloudnorm and ffmpeg, and no machine-learning framework appears in it.
  • This page used to say the site ran no analytics at all. That changed on 10 August 2026, and rewriting the claim rather than leaving it is the point of this page. There is Google Analytics now, and it needs a cookie. Nothing loads and nothing is stored until you press Allow on the bar at the bottom: the tags start in the denied state, so a visitor who ignores the bar or says no is not measured and no request leaves for Google. Your answer is kept in this browser's local storage, not in a cookie.
  • What we get out of it is which pages get read and which of them lead to somebody mastering a track. What we never send is your audio, your file names or anything you typed: the analytics tag sits on the pages, not on your files.
  • Finished jobs are deleted after 7 days by a sweeper that runs every hour. You do not have to wait for it: every master has a delete button on your account page that removes the files and the row the moment you press it.
  • A share link makes audio reachable without signing in. You create it yourself, and until you revoke it, anyone holding the link can play the preview and the comparison — not the wav, and not the platform renders. The link is a separate secret rather than the job id, so a download URL you once pasted somewhere does not become a public link. It carries the same deletion date as the audio behind it, and the revoke button on your account page kills it immediately.
  • Saved profiles are the one thing that outlives the audio. A profile is a few hundred numbers about a recording — its spectral shape, loudness, width, dynamic range — and not the recording. There is nothing to listen to in it and no way to reconstruct audio from it. That is why it can stay: it is not your music. The file it was measured from is deleted the moment the measurement is done, and profiles are yours to delete from your account page whenever you want.

What happens to an uploaded file, step by step

Read out of web/app.py, which is the only code that touches your file before the engine does.

  1. The upload is streamed to disk under runs/<job id>/in/ on the machine running the job. The job id is a random 12-character hex string.
  2. Files over 200 MB are refused mid-write and the partial file is deleted immediately. So are file types outside the allowed audio extensions, and empty files.
  3. The job runs on a background thread. Results are written to runs/<job id>/out/: the master, the platform renders, the report.
  4. You download those files. If you take the zip, it is assembled into the same job folder.
  5. The job record goes into a database file next to the audio: the id, the state, the settings you chose, the paths to the results. It used to live in memory only, which meant a restart lost your downloads while the files sat on disk until the sweeper found them. It survives a restart now, and it is deleted with the rest of the job.
  6. A background sweeper runs on start and then every hour. It removes any job folder whose newest file is more than 7 days old. It only ever touches direct subfolders of the jobs directory, never the directory itself and never anything outside it.

How long your audio stays, and what is still missing

7 days. That is the retention window, it is enforced by code rather than by intention, and the running service reports the number it is actually using on its own health endpoint, so you can check it rather than take our word for it.

What is still missing, and we would rather write it down than let you assume otherwise:

  • The sweeper runs inside the application process. If that process is not running, nothing is being deleted, and the clock effectively pauses until it starts again.
  • Deletion means the files are unlinked from the filesystem of the machine that made them. That machine is a container on Railway in their EU West region, Amsterdam, with a persistent volume attached. It is not a guarantee about backups or snapshots of the underlying disk, because those are made by the hosting provider and not by us.

Deleting one now

Every master you have run is listed on your account page in the tool, with a delete button next to it. Pressing it removes the whole job folder from disk and the row from the database in the same request, and the page then no longer offers a download, because there is nothing left to hand out.

Only the browser that made a job can delete it: the row carries the token from your cookie, and the endpoint compares it. Signing in moves those rows onto your account, so clearing your cookies costs you the list only until you sign in again.

What a profile contains, and why it is not your music

Album mode and the reference-track option build a target profile out of audio. A profile is a measurement, not a recording: 31 third-octave band levels plus roughly twenty scalars such as integrated loudness, loudness range, true peak, stereo width, correlation and where the spectrum stops. Around fifty numbers in total. You cannot reconstruct audio from it, you cannot recognise a song in it, and there is no audio inside it. The profiles that ship with the tool are the same shape as the ones your own material produces.

What personal data exists at all

Four things, and this is the whole list:

  • A cookie with a random token. It is what a paid credit hangs on. It is not linked to a name unless you sign in.
  • Your IP address, to count the free masters. It is stored on the job row and goes when the job goes.
  • Your email address and name, if you sign in with Google. That is the whole profile: enough to give you your masters back on another browser, and nothing more.
  • A Stripe customer id and the email on the receipt, if you pay. The card itself never reaches us; Stripe takes the payment and we only ever see that it happened.

There is no form on this site. It used to carry a waitlist, because while the tool was closed an address was the only thing you could leave. The tool is open, so the button opens the tool.

Who we are

Twilper.com, Merelstraat, The Netherlands. Chamber of Commerce 98440217, VAT NL005332508B94. Questions about your data go to the address on the Chamber of Commerce registration above. This page prints no mailbox until there is one that actually receives, because an address that bounces is worse than none: you would think you had been heard.

Under the GDPR you have the right to access, correct and erase the personal data listed above, and to complain to the Dutch data protection authority. Erasing is mostly self-service and immediate: the delete button on a master, the revoke button on a share link, and the delete button on a saved profile. Signing out and clearing the cookie leaves nothing tied to you at all, with one exception worth naming — a payment stays on record at Stripe, because a receipt is not ours to erase.

How to check this page. Every claim about processing comes from web/app.py in the repository that builds aimastersongs.com, the 7-day window from web/housekeeping.py, and the claim about training from requirements.txt. If those files and this page ever disagree, the files are right and this page is out of date. Last reconciled against them on 2026-08-08, when the sweeper had just been written and this page still said deletion did not exist.