Privacy

Grain has no accounts, analytics, ads, or tracking cookies. The player does not send what you listen to, which theme you pick, or how long you stay.

What stays on this device

Settings and your unlock live only in this browser's local storage. That includes the theme, appearance, tone, volume, noise level, timer, Background mode, and, if you activate one, the license key and the activation id Polar returns. Nothing there is sent while audio is playing.

Payment

When you buy Grain Unlock ($19 once, plus tax where applicable), Polar is the seller of record. Polar takes payment, collects any sales tax, and gives you a license key. Polar shares the buyer's email with the seller, and that email is used only for support. Grain never sees your card.

The license key

Activating a key sends the key, the public organization id, and a short label such as "Grain web, Safari" to Polar's customer-portal license API. The request does not include a precise device id, an IP address in the metadata, or anything about the session you played. There is no API secret in the page.

Release this browser sends the key, the organization id, and the activation id to Polar's deactivate route, then deletes the unlock stored in this browser. If Polar cannot be reached, the unlock stays so you can try again.

Each time this page opens with a network connection, a stored key is checked with Polar again. If Polar cannot be reached, the unlock stays. If Polar says the key is no longer valid, the unlock turns off.

Free play

Without a license, Grain allows 30 minutes of play per local calendar day. While audio is actually playing, the player adds that time to a local storage entry named for the date, such as grain.free.2026-10-26. Reloads and other tabs in this browser share that total. The count is not sent anywhere. When the 30 minutes are used, playback fades out and the unlock card appears. Play does not start again until the next local day.

Offline

After Grain Unlock, a service worker can cache the player so it opens without a network. The cache holds the app shell. It does not phone home.

About Grain · Listen