Search across your rides, routes, gear & settings
Dashboard
Overview · Last 30 days
Fresh
0
—
Sync data to get your suggestion
Training Status
Your readiness at a glance
—
—
CTL / wk
—
—
—
CTL
Fitness
—
ATL
Fatigue
—
TSB
Form
Week Progress
Training Load · Mon → Sun
CycleIQ
S

—

Outside Temperature
Recorded by Garmin sensor
Power vs Heart Rate
Rolling NP
Speed vs Gradient
— Act
— Distance
— Time
— Load
— Calories
Mon
Tue
Wed
Thu
Fri
Sat
Sun
Select a day
Activity Timeline
Training Status
Fitness · Fatigue · Form
—
CTL
Fitness
FORM
—
—
ATL
Fatigue
—
Readiness
Behind
On Track
Ahead
Weekly load target
This Week
Training Load
Fitness Fatigue Form
Load Risk Index
Overtraining risk · ramp rate & form
—
LowModerateHigh
Training Calendar
Last 26 weeks · intensity = training load
Less More
Weekly Load
TSS per week · last 16 weeks
What If Simulator
Project your future fitness based on planned training volume
500
TSS
8
wk
Power Curve
Best efforts over selected period
Power Zones
Coggan 6-zone model · based on FTP
Zone Distribution
Time in power zone
Power Trend
Normalized power per ride
Energy Analysis
Best Distance Efforts
Fastest estimated time per distance · all rides
Personal Records
All-time ride superlatives

Workouts

Recommended for You
Indoor Training
Outdoor Rides
Your Workouts

Loading weather…

?
—
Profile, Photo & Account
General
Theme Dark
Dashboard Widgets
Units
Week starts
Default range 30 days
Notifications
Notifications All on
Weather
Locations & Forecast —
Customize
Activity Sections
Tab Bar & FAB
Data
Backup & Restore
Device Sync
Storage —
Garage
My Garage
Developer
Developer Tools
About
Changelog v0.48
Feedback
Open Source Licenses
Share CycleIQ
Support CycleIQ
CycleIQ
Profile Photo
Stored locally in your browser
?
—
Auto-synced from intervals.icu · upload your own to override
Training
FTP change alerts
HR Zones source
Power Zones source
TSS model
Leveling
Leveling
Connections
Services & APIs —
Data Sources
intervals.icu Not Connected
Strava Not Connected
API Keys
Route Builder API
App Theme
Map Style
Accent Color
Accent Color
Shape
Apple Squircle
Smooth continuous-curvature corners instead of circular arcs
Card Style
Card Color
Corner Radius 16px
Font
Display
Physics Scroll
Hide empty cards
3D Card Quality
Charts
Hover Dot Size 4px
Hover Dot Color
Map
Smooth flyover
3D terrain
#
Locations Up to 5 locations
Use Current Location
Forecast Model
Model
Auto-selects the highest resolution model for your region.
Clear All Locations
Connect to intervals.icu
Sync your training data, power curves & fitness metrics
Athlete ID
API Key
Go to intervals.icu → Settings → API to find your Athlete ID (starts with i) and API Key.
Connect to Strava
Import activities, GPS routes, power & heart rate data
Client ID
Client Secret
Create an app at strava.com/settings/api to get your Client ID and Secret. Set the Authorization Callback Domain to localhost.

Drag to reorder. Toggle to show or hide widgets on your dashboard.

Push
Push notifications
Enable browser push notifications for alerts when the app is in the background.
Alert Types
Gear alerts
Training alerts
Streak reminders
Goal reminders
Choose which types of alerts appear in your notification center and badge count.
Backup
Export Backup
Download as JSON file
Restore Backup
Import from JSON file
Includes all gear, components, batteries, services, settings, goals, and cached data.
Quick Share
Copy Setup Link
Credentials + preferences
Copy All Data to Clipboard
For quick device-to-device transfer
Paste Data from Clipboard
Restore data copied from another device
Local Backup
Backup Folder
No folder selected
Routing Engine
OpenRouteService Routing API
Free key from openrouteservice.org — 2,000 requests/day
Mapillary (Street Photos)
Free token from mapillary.com/developer
Quick Actions
Open Route Builder
Not connected
P2P Sync
What Syncs
Gear & Components
Batteries
Services & Shops
Goals & Settings
API Credentials
P2P sync via PeerJS WebRTC — direct device-to-device transfer.
Both devices must be online. No account needed.
Brand Logos
Logo.dev API Key
Free API key from logo.dev — enables brand logos for 80+ cycling brands
Quick Actions
Open My Garage
Export Gear Data
Import Gear Data
Sync
Pull from intervals.icu
Push to intervals.icu
Full Sync (both ways)
Share CycleIQ
Help other cyclists discover the app

Enjoying CycleIQ? Share it with your riding buddies and help the community grow.

Earn XP. Level Up.
Every ride earns XP from 8 scoring categories. Ride longer, climb harder, push your heart rate — every effort counts.
How XP Works
Each ride scores XP across 8 categories. Hit 4+ categories well and earn a combo multiplier (up to 1.35×). Streaks and consistency earn bonus XP on top.
Ride Scoring
Distance3–10 XP/km
Climbing1 XP per 4–15m
Duration0.5–1.5 XP/min
Training Load0.4–1.0 XP/TSS
Heart RateEffort × duration
Bonus XP
Speed Bonus+5 to +60 XP
Power Bonus+3 to +40 XP
Calorie Burn+5 to +30 XP
Ride Completed+10 XP always
Combo Multiplier
Well-rounded rides that score across multiple categories earn a multiplier bonus:
4 categories = 1.15× 5 categories = 1.25× 6 categories = 1.35×
Streaks & Consistency
Week Streak+5 XP/week + milestones
ConsistencyUp to +200 XP/year
VolumeUp to +500 XP/year
Example Rides
Easy 20 km flat~85 XP
60 km / 500 m / 2h~350 XP
100 km / 1500 m / 4h~750 XP
200 km / 3000 m / 8h~2,200 XP
Leveling Curve
Level 141 XP (1 easy ride)
Level 10460 XP (~5 rides)
Level 251,375 XP (~15 rides)
Level 503,500 XP (~40 rides)
Level 10010,040 XP (~100 rides)
Level 20032,040 XP (~300 rides)
Level 500170,040 XP (max level)
Rank Titles
LVL 0Newbie
LVL 2Pedal Pusher
LVL 5Road Rookie
LVL 8Chain Breaker
LVL 12Hill Hunter
LVL 16Saddle Veteran
LVL 20Peloton Force
LVL 25Breakaway Artist
LVL 30Summit Chaser
LVL 40Iron Legs
LVL 50Domestique Elite
LVL 65Grand Tour Rider
LVL 80Mountain King
LVL 100Yellow Jersey
LVL 125Living Legend
LVL 150Cycling God
LVL 175Maglia Rosa
LVL 200Tour Champion
LVL 230Monument Master
LVL 260Palmares Elite
LVL 300Ventoux Conqueror
LVL 340Galibier Ghost
LVL 380Hour Record Holder
LVL 420GOAT Candidate
LVL 460Eternal Champion
LVL 500Merckx Reborn
Settings
Count rides from
Tab Bar
Quick Action Button (+)
Support CycleIQ
Open source & free forever

CycleIQ is open source and completely free. If you find it useful, consider buying us a coffee to support development.

Buy me a coffee Star on GitHub
7 days
14 days
30 days
60 days
90 days
Recent Updates
v0.62 March 2026
  • My Garage: full rebuild with bike fleet showcase, photo upload, component tracking
  • Per-bike detail subpage with components, batteries, service
  • Component detail sheet with wear gauge, stat cards
  • Brand logos via logo.dev API
  • Bottom sheet picker for gear modal dropdowns
  • Custom date picker with month view calendar
  • Default component image system (img/components/)
  • Notification system: bell icon, grouped alerts, push notifications
  • Suggested workouts based on fitness/fatigue/wellness
  • Suggestion detail subpage with reasoning
  • Library page (renamed from My Routes) with saved workouts
  • Workout Builder redesign: SwiftUI style, sticky chart, iOS stepper
  • Save workouts to IndexedDB + load from Library
  • Gear & Settings export/import (lightweight JSON)
  • Independent per-card range pills on dashboard
  • Training Guide merged into Fitness page
  • Power Profile + Avg Power moved to Power page
  • Settings subpage heroes with icons + descriptions
  • Backup & Restore, Route Builder, intervals.icu settings redesigned
  • Auto version display from SW cache
  • Page restore on refresh (gear, library, routes)
v0.51 March 2026
  • My Routes page with route library & ride diary
  • MapLibre maps on route cards
  • Favourites system for routes and rides
  • Route Builder: saved routes, map controls
  • Settings: new sections, subpages, navigation
v0.48 March 2026
  • Tour de France theme + theme picker
  • Color tokenization — all colors dynamic
  • Uniform glass effect across all buttons
  • iOS sticky title on settings page
  • Settings subpage navigation stack
  • Power Profile radar chart fix
  • Zone colors now per-theme
v0.44 March 2026
  • iOS Calendar-style event modal redesign
  • Apple HIG spacing & touch targets
  • Liquid glass header buttons
  • iOS keyboard avoidance for modals
v0.40 February 2026
  • iOS/SwiftUI design system overhaul
  • Dark mode with pure black base
  • Heatmap page with animated playback
  • Route Builder with BRouter/OSRM/ORS
  • Weather page — Apple Weather style
Get in touch
Report a Bug GitHub Issues
Feature Request Discussions
Email xpayne@proton.me
Open Source Libraries
Chart.js MIT License · chartjs.org
MapLibre GL JS BSD 3-Clause · maplibre.org
esbuild MIT License · esbuild.github.io
Inter Font SIL Open Font License · rsms.me/inter
Open-Meteo CC BY 4.0 · open-meteo.com
OpenFreeMap ODbL · openfreemap.org
BRouter MIT License · brouter.de

Library

All Time
—
Week Streak
consecutive weeks active
—
Day Streak
consecutive days active
—
Month Streak
consecutive months active
—
Best Week Streak
—
Best Day Streak
—
Best Month Streak
—
Active Weeks
Achievements
Lifetime Stats

Click "Add Metric" to start comparing your training data

Select 2 or more activities to compare head to head

Drop .FIT files here
or click to browse — supports multi-file upload
GarminWahooPolarSuuntoZwift
Import Options
Customize how activities are processed
Import History
No imports yet

Imported activities will appear here

Syncing data…

Install CycleIQ: tap then Add to Home Screen