Privacy Policy
Ride and Grind doesn't use traditional accounts — no email, no password. Built for privacy: here's everything that happens with your data if you connect Intervals.icu to build a personalized dynamic plan.
You connect through Intervals.icu — no password, no account here. That gives us a key to your account, encrypted and limited to what's below.
We read your last 42 days
Each time you open the page, we fetch your rides, TSS, TSB and HRV from Intervals.icu. We use them to pick your session, then let them go. Nothing lands in our database.
We keep your plan, and nothing else
Your goal, your goal date, your training days, and which sessions are scheduled. That's enough to show you the same plan tomorrow. It's stored against a random ID, never your name, and deletes itself after 90 days of inactivity. Delete it yourself and it's gone the same second.
We run on fixed rules, not AI
Sessions come from published training research: zone targets, interval lengths, recovery ratios. The same inputs always give the same plan. Nothing is sent to an AI model, an analytics tool, or another company.
Below is exactly what that means in detail: what's stored, where, and for how long.
Stored only in your browser
The following are saved only in your own browser (using localStorage) — never sent to or stored on any server we control:
- Your FTP value, so wattages can be shown throughout the site
- Your favorited workouts
- Your theme choice (light or dark)
- If you paste in a manual Intervals.icu API key (instead of using "Connect"), that key — it's only ever sent, per request, straight through to Intervals.icu, never stored or logged on our side
Clearing your browser data removes all of it. We have no way to see or recover it.
If you connect Intervals.icu: what we store on our server
Connecting starts a pseudonymous session, identified only by a random ID in an httpOnly cookie — never your name or email. Everything below is encrypted at rest in Cloudflare KV, tied to that random session ID, and automatically expires 90 days after your last activity (refreshed each time you use the plan). We never show your Intervals.icu access token itself back to your browser — only a "connected" status and your athlete name.
- Your Intervals.icu OAuth connection (access token, athlete ID and name) and your timezone (used only to time the automatic evening/morning sync below to your local clock)
- Your goal, goal date, training days, long-ride day, and weekly hours
- A derived training profile (experience level, aerobic base, longest recent ride) — calculated from your Intervals.icu ride history, recalculated every 30 days
- Internal bookkeeping for whether your schedule has had to shift back due to consistently low weekly hours
- A weekly adherence log (sessions completed vs. planned, fitness trend) used for your weekly summary
- Your estimated FTP trend over the last 90 days, refreshed every 24 hours
- A log of which workout was pushed to your calendar each day and whether it was later adjusted — kept for 42 days, used for the week-by-week recap view
If you've connected from another device or browser before, reconnecting the same Intervals.icu account automatically finds and restores that existing plan instead of starting a new, empty one — via a lookup keyed to your Intervals.icu athlete ID (which itself stores nothing beyond a pointer to your session, and expires on the same 90-day schedule).
Automatic calendar sync
Once connected, Ride and Grind pushes your planned workout to your Intervals.icu calendar automatically, without you needing to visit the site each day: in your local evening, tomorrow's session is pushed; in your local morning, if that didn't happen it's pushed as a fallback, and otherwise your readiness (using your Intervals.icu training load and HRV) is re-checked and the pushed session may be swapped for an easier one if you're showing signs of fatigue. This runs on an hourly schedule for every connected account.
Sending a workout to Intervals.icu manually
Using "Send to Intervals.icu" on a workout page (or the automatic sync above) sends a request through a small relay we run (a Cloudflare Worker) straight to Intervals.icu's API. We don't log or separately retain the workout file itself — only the plan bookkeeping described above.
Disconnecting vs. deleting your plan
"Disconnect" removes only the Intervals.icu connection — your goal and weekly settings stay saved, so reconnecting picks up where you left off. "Delete my plan" removes everything listed above entirely and ends the session. Neither action touches or deletes anything on your actual Intervals.icu account.
Download counter
We keep an anonymous, aggregate count of how often each workout is downloaded or sent to Intervals.icu, to show popularity. It's keyed only to the workout itself — no session, account, or IP address is stored alongside it.
Hosting
This site is hosted on Cloudflare, which may process standard web server logs (such as IP address and request metadata) as part of delivering the site, under Cloudflare's own privacy policy.
Fonts
All fonts are self-hosted — your browser loads them directly from this site, not from Google Fonts or any other third party, so no font request ever leaves a trace with anyone else. We don't use any analytics, ads, or tracking scripts.
Third-party links
Links to Buy Me a Coffee, Intervals.icu, our feedback form, and any other external site are governed by that site's own privacy policy, not this one.
Contact
Questions about this policy can be sent via the contact details on our Ko-fi page.
Last updated: August 2026.