Export Your Logbook Data
How to download your logged workouts, sets, and profile history as CSV files, and what every column means
Crimpd lets you download everything you have logged as a ZIP archive of CSV files. This page describes the archive, every file in it, and the meaning of every column. It reflects the export as of September 2026.
Getting your export
There are two places in the Crimpd app to request the export:
- Open the Analytics page, find the Export Log Data section, and tap Download.
- Open the Profile page, tap the gear icon to open Settings, and tap Download Logbook. The button is near the bottom, above Delete Account.
The app saves the archive as crimpd-logs-<timestamp>.zip, for example crimpd-logs-2026-09-11T143000.000Z.zip. On a phone the OS share sheet opens so you can save it or send it somewhere; in a browser it downloads.
What is in the archive
| File | One row per | Rows for a typical account |
|---|---|---|
workouts.csv | logged workout | hundreds to thousands |
sets.csv | logged set (for climbing, one row per climb) | thousands to tens of thousands |
observations.csv | recorded change to a profile attribute | tens |
File format
- UTF-8 text, comma separated, one header row,
\nline endings. - Fields are quoted only when needed (RFC 4180). A field that contains a comma, a quote or a line break is wrapped in double quotes, and a quote inside it is doubled.
- Dates and times are ISO 8601 in UTC, for example
2026-09-04T17:15:25.421Z. - An empty cell means the value was not recorded for that row. A
0is a recorded zero. Several roll-up columns distinguish the two; the column descriptions say when. - Booleans print as
true/false. - A column that can hold several values joins them with
|.
Tip: Dates and times are in UTC. Convert to your local time zone before you group by day.
How the files relate
LOG_IDidentifies one logged workout. It is the last column ofworkouts.csvand the first column ofsets.csv. Join the two files on it to attach sets to their workout.observations.csvhas no key. Each row is dated. The value that was in force on a workout date is the latest observation row with aDATEon or before that workout'sDATE. Use it to bring your bodyweight or your maximum grade at the time onto a workout row.
workouts.csv
One row per logged workout, oldest first. The first group of columns are values recorded on the workout itself. The second group are roll-ups computed from that workout's rows in sets.csv.
Workout columns
| Column | Type | Meaning |
|---|---|---|
DATE | date-time | When the workout was logged (UTC). |
WORKOUT_NAME | text | Name of the workout as it appeared in the app when you logged it. |
TYPE | text | The workout's training type. One of: Strength & Power, Power Endurance, Endurance, Conditioning & Mobility, Technique, Open Climbing, Cross-Training. |
TARGET | text | The workout's training target. One of: Aerobic Capacity, Aerobic Conditioning, Aerobic Power, Anaerobic Capacity, Antagonist Muscles, Bouldering, Compound, Core, Finger Strength, Flexibility, Footwork, Indoor, Lower Body, Movement, Outdoor, Physical Therapy, Power, Regeneration, Strength Training, Upper Body. |
WORKLOAD | integer | Crimpd workload score. One number for the training stimulus of the workout, built from time under tension, the difficulty level of each exercise or grade, and completion. Higher is more work. Empty on very old logs recorded before the score existed. |
INTENSITY | 0–5 | Your rating of how hard the workout was, on the app's 1 to 5 scale. 0 means you did not rate it. |
COMPLETION | 0, 0.25, 0.5, 0.75, 1 | The fraction of the workout you completed. |
EST_DURATION | seconds | Estimated total duration of the workout, rest included. |
WEIGHT_UNIT | LBS or KG | The weight unit you were using when you logged the workout. All resistance and load columns in this row, and in this workout's rows in sets.csv, are in this unit. |
AVG_GRADE | grade | Average grade of the climbs in the workout, weighted by number of tries, on a scale where a harder grade counts exponentially more than an easier one, rounded to the nearest grade. In GRADE_SYSTEM. Empty when nothing graded was logged. |
LENGTH_UNIT | IN or CM | The length unit you were using when you logged the workout. DISTANCE is in this unit. |
LB_CIRCUIT | STANDARD or MCCLURE | The Lattice board circuit, for workouts logged on a Lattice board. |
LB_ANGLE | degrees | The board angle past vertical for a Lattice board workout. |
NOTES | text | The note you wrote on the workout. |
LOG_ID | id | Unique identifier of the logged workout. Join key to sets.csv. |
Roll-up columns
These are computed from the workout's set rows. A workout logged before per-set logging existed has no set rows; for such a workout the columns marked legacy fill show the workout-level value that was recorded at the time, and the other roll-ups are empty.
| Column | Type | Meaning |
|---|---|---|
EST_WORK_DURATION | seconds | Time under tension: the sum of the work time of every set. Legacy fill: the workout-level value. |
EST_REST_DURATION | seconds | The sum of the rest time of every set. |
EXERCISES | integer | Number of distinct exercises in the workout. |
EXERCISE_NAMES | text, |-joined | The exercise names, in alphabetical order. |
SETS | integer | Number of sets. For climbing, one set is one climb. |
SETS_COMPLETE | integer | Sets you did not mark as incomplete. A set with no completion mark counts as complete. |
REPS | number | Total reps across all sets. For a climb, one rep is one try, so for a bouldering session this is your total number of tries. Legacy fill: the tries you entered for the session, where the workout asked for them. |
LOAD_VOLUME | number | Tonnage for exercises logged with an external weight (a bench press, a deadlift): the sum of reps × weight over those sets, in WEIGHT_UNIT. Empty when the workout has no such set. |
ADDED_LOAD | number | For bodyweight exercises with added or removed weight (weighted hangs, weighted pull-ups): the sum of reps × added weight over those sets, in WEIGHT_UNIT. Negative when you used assistance. Your bodyweight is not included; take it from observations.csv. Empty when the workout has no such set. |
MAX_RESISTANCE | number | The largest resistance logged on any set, in WEIGHT_UNIT. Legacy fill: the resistance you entered for the workout. |
CLIMBS | integer | Number of sets that carry a grade, which is the number of climbs. |
SENDS | integer | Climbs you marked as sent. |
CLIMB_ATTEMPTS | number | Total tries on the graded climbs. Legacy fill: the tries you entered for the session. |
MAX_GRADE | grade | The hardest grade among the climbs, in GRADE_SYSTEM. Empty when nothing graded was logged. |
GRADE_SYSTEM | text | The grade system MAX_GRADE and AVG_GRADE are written in. See Grade systems. It is the system of the first graded climb in the workout. |
DISTANCE | number | The sum of the distance logged on the sets, in LENGTH_UNIT, for exercises that record one. Empty when none. |
sets.csv
One row per logged set, ordered by workout date, then workout, then position in the workout. For climbing workouts one set is one climb, so each row is one boulder problem or route with its tries and result. Each row repeats its parent workout's LOG_ID and DATE and its exercise's name and note, so the file can be read on its own.
| Column | Type | Meaning |
|---|---|---|
LOG_ID | id | The workout this set belongs to. Join key to workouts.csv. |
DATE | date-time | The workout's date (UTC). Same value on every set of a workout. |
EXERCISE | text | The exercise name as it appeared when you logged it. |
ACTIVITY_ORDER | integer | Position of the exercise in the workout. 1 is the first exercise. |
ACTIVITY_NOTES | text | The note you wrote on that exercise. Repeated on every set of the exercise. |
SET_ORDER | integer | Position of the set within the exercise. 1 is the first set. |
NAME | text | The name of the climb, if you entered one. |
GRADE | grade | The grade you logged for the climb, exactly as entered. |
GRADE_SYSTEM | text | The grade system GRADE belongs to, detected from the grade. Empty when the grade is not in a known system. |
REPS | number | Reps in the set. For a climb, the number of tries. |
ASCENT | true / false | Whether you sent the climb. Empty when not recorded (non-climbing sets). |
COMPLETE | true / false | Whether you completed the set. false means you bailed. Empty when not recorded; treat it as complete. |
EST_WORK_DURATION | seconds | Work time of the set. From the timer where you used one, otherwise reps × the exercise's rep duration. |
EST_REST_DURATION | seconds | Rest time after the set, on the same basis. |
INTENSITY | 0–5 | Your rating of the set, where the exercise asks for one. |
RESISTANCE | number | The weight logged on the set, in WEIGHT_UNIT. For a free-weight exercise it is the weight lifted. For a bodyweight exercise it is the weight added, negative for assistance. |
WEIGHT_UNIT | LBS or KG | The unit of RESISTANCE. |
ANGLE | degrees | Board or wall angle past vertical, where logged. |
LB_CIRCUIT | STANDARD or MCCLURE | Lattice board circuit, where logged. |
DISTANCE | number | Distance logged on the set, in LENGTH_UNIT, for exercises that record one. |
LENGTH_UNIT | IN or CM | The unit of DISTANCE. |
LOCATION | tag | Where you climbed. Indoor bouldering: gym, board, spray_wall. Indoor routes: auto_belay, top_rope, lead, circuit_board. Outdoors: outdoor. |
BOARD | tag | The training board, when LOCATION is board: kilter_board, tension_board, moonboard, grasshopper, decoy, so_ill, quantum. |
BOARD_LAYOUT | tag | The board layout: Kilter original, full_ride; Tension tb1, tb2_mirror, tb2_spray; Moonboard 2016, 2017, 2019, 2024. |
WALL_ANGLE | tags, |-joined | slab, vert, overhang, steep, roof. Several may apply. |
CLIMB_STYLE | tags, |-joined | technical, power, tension, compression, coordination. Several may apply. |
LENGTH | tag | boulder_short, boulder_medium, boulder_long, route_short, route_medium, route_long. |
HOLD_TYPE | tags, |-joined | jugs, edges, small_crimps, slopers, pockets, pinches. Several may apply. |
LOCATION_NAME | text | Reserved for an outdoor area or crag name. The app does not record it yet, so it is empty on every row. An outdoor climb has LOCATION = outdoor. |
OTHER_TAGS | tags, |-joined | Any tag in a category not listed above, written as category:value. New categories added to the app appear here until this page is updated. |
NOTES | text | The note you wrote on the set. |
Note: The tag columns and NAME are recorded since app version 8.3.3 (August 2026). Rows logged before that are empty there. The list of tag values is owned by the app and can grow; this page records the list as of September 2026.
observations.csv
Your profile attribute history, oldest first. Crimpd records a row each time one of these attributes was first recorded or changed. Between rows the value stays the same.
| Column | Type | Meaning |
|---|---|---|
DATE | date-time | When the value was recorded (UTC). |
ATTRIBUTE | text | Which attribute. See the list below. |
VALUE | number or grade | The value. A number for bodyweight and height, a grade for the grade attributes. |
UNIT | text | LBS or KG for bodyweight, IN or CM for height, the grade system for a grade. |
Attributes:
ATTRIBUTE | App setting | Meaning |
|---|---|---|
bodyweight | Body Weight | Your bodyweight. |
height | Height | Your height. |
max_boulder_grade | Max Boulder Grade | The hardest boulder grade you have ever sent. |
max_sport_grade | Max Route Grade | The hardest route grade you have ever sent. |
session_boulder_grade | Session Boulder Grade | The boulder grade you have at least a 50% chance of completing within a single climbing session. |
session_sport_grade | Session Route Grade | The route grade you have at least a 50% chance of completing within a single climbing session. |
flash_boulder_grade | Flash Boulder Grade | The boulder grade you have at least a 50% chance of completing on the first try. |
flash_sport_grade | Flash Route Grade | The route grade you have at least a 50% chance of completing on the first try. |
Body Weight and Height live under Climber Profile in the app's Settings screen; the grade settings under Route Settings and Bouldering Settings. The two max grades always have a value; the session and flash grades are optional and appear only once you set them.
To put your bodyweight on a workout row, take the latest bodyweight row dated on or before the workout's DATE. To get the total load moved on a weighted hang, add that bodyweight to ADDED_LOAD per rep, in matching units.
Reference
Grade systems
Grades are exported exactly as you entered them, and never converted. GRADE_SYSTEM names the system:
GRADE_SYSTEM | Discipline | Examples |
|---|---|---|
HUECO | boulder | V0 … V18 |
FONT | boulder | 5, 5+, 6A, 6A+ … 9A+ (upper case) |
YDS | route | 5.6 … 5.15b |
FRENCH | route | 4, 4+, 5a … 9c (lower case) |
UIAA | route | V, V+, VI- … XI+ |
EWBANK | route | 14 … 36 |
Font and French grades are told apart by case: 6A is Font, 6a is French. A grade outside these lists is exported with an empty GRADE_SYSTEM and does not take part in MAX_GRADE or AVG_GRADE.
Units
Weights are in the unit you had selected when you logged the workout (WEIGHT_UNIT), lengths likewise (LENGTH_UNIT). If you changed your unit setting over time, rows carry different units. Convert before you sum across rows.
Empty versus zero in the roll-ups
SETS,SETS_COMPLETE,CLIMBS,SENDSandEXERCISESare counts. They are0when the workout has sets but none match, and empty when the workout has no set rows at all.LOAD_VOLUME,ADDED_LOAD,MAX_RESISTANCE,DISTANCE,REPS,CLIMB_ATTEMPTS,EST_WORK_DURATIONandEST_REST_DURATIONare sums or maxima over logged values. They are empty when no set carries the value, and0only when a0was logged.
Known limits
- A workout whose workout definition has since been deleted is not exported.
LOAD_VOLUMEandADDED_LOADclassify a set by its exercise's current definition. A set whose exercise has since been removed from the Crimpd catalogue still counts inSETS,REPSandMAX_RESISTANCEbut not in the two load columns.- Times are UTC. The time zone you were in is not part of the export.
Version history
| API version | Change |
|---|---|
| 2.23.0 | ZIP export introduced: sessions.csv + sets.csv, with per-climb tags spread into columns. |
| 2.23.1 | sessions.csv replaced by workouts.csv with roll-ups; observations.csv added; the per-set count column in sets.csv renamed from ATTEMPTS to REPS. |