Source-available · free for athletes · runs on Cloudflare

Strava analytics. TrainingPeaks PMC. Free.

Connect Garmin or Strava, import your whole history, and pacelore computes the metrics that matter: TSS, NP, IF, peak power curves, GAP, decoupling, and CTL/ATL/TSB. Your data, your archive. Free forever — no caps, no paywall, no upsell.

Connect Strava in under a minute · No credit card · Self-host on Cloudflare in under 10 minutes

Performance management — last 90 days live edge data

Side by side

Premium tiers compared as of May 2026. Pricing taken from each platform's public site.

Feature Strava Premium TrainingPeaks Premium pacelore
Annual price ~$80 / yr $240 / yr $0
TSS · NP · IF partial yes yes
Peak power curve (mean-max) premium-gated yes yes
PMC · CTL / ATL / TSB yes (Banister model) yes (Banister model)
Time in zone premium-gated yes yes
GAP · grade-adjusted pace premium-gated yes yes (Minetti model)
Segments + leaderboards yes yes
Social feed · kudos · comments yes yes
Free FIT / TCX / GPX export per-activity only yes yes (raw + parsed)
Open public API throttled, app-keyed partial REST + MCP, free
Source available yes
Self-hosting 10-minute Cloudflare deploy

"Strava", "TrainingPeaks", "Garmin Connect" are trademarks of their respective owners. pacelore is not affiliated with any of them.

Migration

Bring your whole Strava history in 90 seconds

Click Connect Strava, authorize, hit Backfill all. pacelore walks the whole archive back to your account creation, throttled inside Strava's rate limits, deduped against itself. Long histories continue overnight via cron — no tab to keep open.

  • ✓ TCX synthesized from /activities + /streams — full HR / power / pace / cadence
  • ✓ Re-import safe — (strava, activity_id) dedup
  • ✓ Pulls Zwift rides synced to Strava automatically
  • ✓ Activities populate PMC + zone analysis as they land

What you get

Unpaywalled analytics

TSS · NP · IF · VI · kJ · peak power curves · HR zones · GAP · decoupling · TRIMP · rTSS. Coggan and Banister models, implemented honestly.

PMC dashboard

42-day CTL · 7-day ATL · daily TSB. The same model TrainingPeaks invented, with a calendar heatmap and zone ramp legend.

Data sovereignty

Free FIT / TCX / GPX export. Optional Arweave permanence backup. Optional ATProto export to your own PDS. Your activities, your archive, no lock-in.

Workout library

60 calibrated sessions across cycling, running, swimming. Filter by sport, duration, and intensity zone. Export to FIT for Garmin or .zwo for Zwift.

Social, but quiet

Follow graph, kudos, threaded comments, segments with leaderboards, clubs, events. Public / followers / private — your call, per activity.

Source-available

PolyForm Noncommercial 1.0.0. Self-host on your own Cloudflare account in under 10 minutes. Nothing important behind a paywall.

free tier $0 all core analytics, forever
export FIT · TCX · GPX your data, anytime
infra edge · cloudflare global, autoscaling
license PolyForm noncommercial 1.0.0

Questions

Is pacelore really free for athletes?
Yes. Every analytics feature on this page — TSS, NP, IF, peak power curves, GAP, decoupling, CTL/ATL/TSB, calendar, segments — is available on the free tier with no caps. No paywall on metrics, ever. Source-available under PolyForm Noncommercial 1.0.0.
How does this compare to Strava Premium?
Strava Premium charges roughly $80/year and still gates time-in-zone, segment effort history, and the matched runs comparison. pacelore gives you the same numbers — plus power-based TSS, NP, IF, peak power curves, and a real PMC dashboard — at zero cost.
How does this compare to TrainingPeaks Premium?
TrainingPeaks Premium is $240/year and is the canonical home of the PMC chart. pacelore implements the same Banister CTL/ATL/TSB model with daily TSS rollup, plus zone analysis and peak power curves. The model is the same; the price is not.
Can I import my whole Strava history?
Yes. Connect Strava in /upload and click "Backfill all". pacelore walks the Strava activity list back to your account creation, respects the 100 req / 15 min and 1000 / day limits, and dedups against itself so you can re-run it safely. Long histories continue overnight via cron.
What about Garmin?
OAuth1.0a connect + push webhooks for activities, plus daily summaries, sleep, body composition, and user metrics (VO2max, RHR, HRV) — wired and waiting on Garmin Health/Activity API partner approval, which is a per-company application.
Is my data really portable?
Yes. Every activity is stored as the original FIT/TCX/GPX in R2 and re-exportable from the dashboard. Optional Arweave permanence backup. Optional ATProto export to your own PDS. No lock-in.
What happens if you stop maintaining pacelore?
The full source is on GitHub under PolyForm Noncommercial 1.0.0. The whole stack runs on Cloudflare. Anyone can fork the repo, deploy to their own Cloudflare account in under ten minutes, and keep their data flowing. The license blocks commercial reuse but explicitly permits self-hosting.
Where's the mobile app?
Web is the primary surface today and works on phones. Native iOS app with HealthKit integration is on the roadmap; Garmin Connect / Strava push webhooks already cover most of what a "record an activity" app would do. Calendar + dashboard are read-only on mobile.
Why "noncommercial"?
PolyForm Noncommercial 1.0.0 keeps the source readable, runnable, and self-hostable by anyone — but blocks resale and commercial wrappers. The point is to keep pacelore from being acquired and turned into the next thing it's replacing. Personal, hobby, research, and nonprofit use are explicitly allowed.
How is this so cheap to run?
The whole stack — Workers, D1, R2, KV, Queues, Email — sits on Cloudflare's edge. Autoscales to zero. Per-athlete infra cost is around $0.012/month at 10k active users. Detailed cost breakdown lives in ARCHITECTURE.md.

Stop renting your training data.

One account. Free forever. Connect Garmin or Strava and get every metric on this page in the next two minutes.