no account · no cookies

A small cache,
a small footprint.

The service needs to know enough to stop abuse and to count what it has cached. It does not need to know who you are.

What is stored

  • The video ID, title, channel, duration, thumbnail URL and caption tracks you ask for.
  • The caption payload (raw, in object storage) and the normalised lines and words (in the database).
  • An ingest audit row with a hashed IP address, the URL, the outcome and the time. It is used for rate limits and debugging.
  • Rate-limit windows, keyed by the same hash.

What is not stored

  • No account, name, email or password.
  • No cookies, localStorage identity or advertising identifier.
  • No raw IP address in the application tables.
  • No search query history. Search reads the cache; it does not write a profile.
  • No analytics or third-party trackers.

Enchor

Searching Enchor sends the words you type to api.enchor.us from this server, not from your browser. The API has its own terms and rate limits. We cache search answers briefly to stay inside them. Opening a chart’s .sng goes through this site’s CORS proxy to files.enchor.us; the package is streamed, not stored.

YouTube

A song page does not load YouTube until you press Play with synced lyrics. That player is the official YouTube IFrame player, served fromyoutube-nocookie.com; once it starts, Google’s own privacy terms apply. Reading the transcript, exporting it or searching the cache never loads the player.

Retention

Cached captions stay until they are refreshed, evicted or removed after a takedown request. Audit rows and rate-limit windows are short-lived operational data. A takedown removes the video, its transcript and its raw payload, and adds it to a blocklist so it is not fetched again.

Contact

Questions or a removal request: hello@happypaul55.com. The code is open source under AGPL-3.0; see the repository.