Privacy
Last updated 28 July 2026
The short version. Your chords, sheets and settings are saved in your own browser and are never sent anywhere. Keyriff has no server holding your work and no account system. Anonymous usage statistics are collected so it’s possible to see which features actually get used.
What stays on your device
Everything you create lives in your browser’s local storage, under these names:
- piano-practice-sheet: your practice sheets, their sections, chords, tempos and repeats
- piano-saved-chords: your saved chord library, including any nicknames you gave them
- piano-theme, piano-show-octaves, piano-show-chord-diagrams, piano-scoped-diagrams, piano-show-suggestions, piano-show-bindings, piano-tray-open. Interface preferences: the theme, which keyboard diagrams and labels are shown, whether the suggestions panel is on, and whether the chord library is open
- piano-hint-dismissed, piano-privacy-notice-dismissed, piano-help-seen, piano-demo-note-dismissed: whether you have already seen the first-visit hint, the analytics notice, the welcome dialog and the note on the example sheet
None of it is uploaded and none of it is readable by us. It also isn’t backed up. Clearing your browsing data deletes it permanently. Export anything you want to keep, either as a backup file holding all of it or as a single sheet.
Files you export and import
There are three kinds, and all three are produced by your browser and written straight to your device. Nothing is uploaded, and no copy passes through us on the way.
- A sheet file,
.keyriff.json, holding one sheet, its sections and the library chords it uses, nicknames included - A backup file, the same extension, holding every sheet you have and your whole chord library, including chords no sheet currently uses
- A PDF, for printing rather than for opening again
Both file kinds are plain text you can read. Opening one reads it in your browser and nowhere else. Restoring a backup replaces what is already here, so the app asks before it does. Where a file came from and who you send one to is entirely your decision, and a file you share carries whatever you named things.
What is collected
Product analytics, from PostHog
Anonymous usage events are sent to PostHog, hosted in the European Union at eu.i.posthog.com. They record what kind of thing happened, such as a chord being saved, a sheet played, a tempo changed or a section renamed, usually with a count beside it, like how many chords the sheet held or how long playback ran.
Anything you type is never sent. The names you give sheets and sections, and the nicknames you give chords, stay on your device. Where an event has to record that you renamed something, it records only that you did, never the words you chose.
One thing is sent deliberately: the chord itself. When a chord is detected or saved, its musical name travels with the event along with the notes that produced it: “Cmaj7”, and C, E, G, B. That pair is kept for one reason: it is the only way to catch the app naming a chord wrongly, which is a real bug with real consequences for someone learning from it, and it cannot be reconstructed after the fact. It is worked out by the app from the keys you pressed rather than typed by you, and it says nothing about who you are. Detected chords are recorded once each per visit, up to a limit, rather than every time a key goes down.
There is no name, no email address, no login, and no attempt to work out who you are. PostHog assigns a random identifier so that repeat visits from the same browser can be counted once, stored in local storage and a cookie beginning ph_. Automatic capture of clicks, session replay, surveys and heatmaps are all switched off in the configuration; nothing is collected except the app’s own named events, described above. If your browser sends a Do Not Track signal, analytics do not load at all.
This website
This website counts page views, and records which “Open the app” button was clicked, meaning its position on the page, such as “footer” or “hero”, and nothing else. They go to the same PostHog project as the app’s events.
Analytics here store nothing on your device: no cookie, no local storage, nothing. The trade-off is deliberate and worth knowing: because nothing is stored, every page you open is counted as a fresh, unconnected visit, and there is no way to tell that two of them were you. Page views can be counted; visitors cannot, and are not.
Page views, from Vercel Analytics
The app additionally uses Vercel Analytics for page views, which does not use cookies and does not build a profile across sites.
Third parties that see your IP address
Any file your browser downloads from another company reveals your IP address to them, simply because that is how the internet delivers it. For Keyriff that list is short and deliberate:
- Vercel hosts this website and the app, so it handles every request.
- PostHog (EU) receives the anonymous events described above, from both this website and the app.
- tonejs.github.io hosts the recorded piano samples the app plays. It is contacted only when you open the app, and only for audio files.
Fonts are served from this site itself rather than from Google Fonts, specifically so that loading a page does not hand your IP address to a third party. There are no advertising networks, no tracking pixels, no embedded videos and no social widgets anywhere on this site or in the app.
Cookies
The website you are reading sets no cookies at all. The app sets one, from PostHog, holding the random identifier described above. There is nothing else: no advertising cookies and no third-party cookies.
How to remove everything
Clearing site data for Keyriff in your browser settings removes all of it in one step: your sheets, your saved chords, your preferences and the analytics identifier. Nothing survives on our side. Turning on Do Not Track, or using any content blocker, stops analytics from loading, and the app carries on working normally.
Children
Keyriff is not directed at children and collects no personal data from anyone, of any age.
Your rights over your data
Data protection law gives you rights to see, correct, export and delete personal data held about you. In this case they are unusually simple to exercise: the data is already on your device, under your control, and there is no personal data on our side to request. If you would like the anonymous analytics identifier from your browser excluded, clearing site data achieves it immediately.
Changes
If what the app collects changes, this page changes with it and the date at the top moves. It is written from the code rather than from a template, so it stays accurate.
Contact
Questions about any of this: hello@keyriff.com.
See also the terms of use.