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
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$0all core analytics, forever
exportFIT · TCX · GPXyour data, anytime
infraedge · cloudflareglobal, autoscaling
licensePolyFormnoncommercial 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.