1) Create a New Workout File
- Open any text editor (Notepad, VSCode, Notepad++, etc.).
- Save the file with the extension .c4w.
Example: my_first_workout.c4w
2) Basic Structure of a .c4w File
Every workout contains these fields:
{
"workoutName": "My Custom Workout",
"description": "What this workout is about.",
"author": "Your Name",
"duration": 1800,
"steps": [ ... ],
"notices": [ ... ],
"metadata": { ... }
}
| Field | Meaning |
|---|---|
workoutName | Title shown inside CR4NKUP. |
description | Longer explanation (supports rich text tags). |
author | Your name or nickname. |
duration | Total workout length in seconds. |
steps | The workout blocks (warmup, intervals, ramps, freeride…). |
notices | Pop-up messages shown during the workout (optional). |
metadata | Difficulty, tags, last updated timestamp. |
3) Workout Steps
Each step has a type, a duration (seconds), and an intensity target relative to your FTP.
{
"stepType": "Interval",
"duration": 300,
"startIntensity": 0.85,
"targetIntensity": 0.85,
"targetCadence": 90
}
- Intensities are relative to FTP. Example:
0.85= 85% FTP,1.05= 105% FTP. targetCadenceis optional and should mainly be used for cadence-specific training (spinups, cadence drills, etc.).
4) Freeride Segments (No ERG Mode)
If you want a section where you ride freely without target power (ERG off), set both intensities to 0:
{
"stepType": "Freeride",
"duration": 600,
"startIntensity": 0.0,
"targetIntensity": 0.0
}
CR4NKUP recognizes startIntensity = 0 and targetIntensity = 0 as a freeride segment.
5) Creating Ramps (Progressive Power Changes)
A Ramp step smoothly changes the target power from startIntensity to targetIntensity over the step duration.
Example: ramp from 60% FTP to 85% FTP over 3 minutes:
{
"stepType": "Ramp",
"duration": 180,
"startIntensity": 0.60,
"targetIntensity": 0.85
}
Ramps are great for warmups, cooldowns, progressive intervals, and smooth transitions between efforts.
6) Notices (On-Screen Messages)
Notices show messages at specific times during the workout.
{
"time": 900,
"message": "Get ready for Interval 2!"
}
Rich Text Support
You can use Unity rich text tags in description and message, for example:
<b>bold</b><color=#FFD966>colors</color><br>for line breaks<size=120%>bigger text</size>
Use formatting sparingly so important cues stand out.
7) Metadata (Recommended)
{
"difficulty": "intermediate",
"tags": ["ftp", "sweetspot", "30min"],
"lastUpdated": "2025-01-10T12:00:00+01:00"
}
Tags help CR4NKUP filter and search workouts. Keep tags simple, consistent, and lowercase.
8) Where to Save Your Workout Files
As a user, place custom workout files in your CR4NKUP workouts folder:
Windows
C:\Users\YOURUSERNAME\AppData\LocalLow\Crankup GmbH\Cr4nkup\Workouts\
CR4NKUP loads every
.c4w file found in the user workouts folder when the game starts. Next time you open the Workouts menu in the game a thumbnail for the new Workout will be created automatically.
9) Full Example You Can Copy
{
"workoutName": "Custom Example",
"description": "A simple example workout to help you get started.<br><br><b>Tip:</b> You can use rich text to highlight sections.",
"author": "Your Name",
"duration": 1800,
"steps": [
{ "stepType": "Warmup", "duration": 300, "startIntensity": 0.60, "targetIntensity": 0.75 },
{ "stepType": "Ramp", "duration": 180, "startIntensity": 0.75, "targetIntensity": 0.90 },
{ "stepType": "Interval","duration": 480, "startIntensity": 0.90, "targetIntensity": 0.90 },
{ "stepType": "Recovery","duration": 180, "startIntensity": 0.50, "targetIntensity": 0.50 },
{ "stepType": "Interval","duration": 480, "startIntensity": 0.95, "targetIntensity": 0.95 },
{ "stepType": "Cooldown","duration": 180, "startIntensity": 0.50, "targetIntensity": 0.50 }
],
"notices": [
{ "time": 0, "message": "Warm up and prepare for the ramp." },
{ "time": 300, "message": "Ramping up — increase power smoothly." },
{ "time": 600, "message": "<b>First interval!</b> Hold steady." }
],
"metadata": {
"difficulty": "intermediate",
"tags": ["example", "ftp", "30min"],
"lastUpdated": "2025-01-10T12:00:00+01:00"
}
}