Crimpd
Crimpd+PricingBlogDocs
LoginBegin Training
Getting Started
Crimpd Home
Crimpd+
Getting Started
Welcome
Workouts

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

FileOne row perRows for a typical account
workouts.csvlogged workouthundreds to thousands
sets.csvlogged set (for climbing, one row per climb)thousands to tens of thousands
observations.csvrecorded change to a profile attributetens

File format

  • UTF-8 text, comma separated, one header row, \n line 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 0 is 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_ID identifies one logged workout. It is the last column of workouts.csv and the first column of sets.csv. Join the two files on it to attach sets to their workout.
  • observations.csv has no key. Each row is dated. The value that was in force on a workout date is the latest observation row with a DATE on or before that workout's DATE. 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

ColumnTypeMeaning
DATEdate-timeWhen the workout was logged (UTC).
WORKOUT_NAMEtextName of the workout as it appeared in the app when you logged it.
TYPEtextThe workout's training type. One of: Strength & Power, Power Endurance, Endurance, Conditioning & Mobility, Technique, Open Climbing, Cross-Training.
TARGETtextThe 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.
WORKLOADintegerCrimpd 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.
INTENSITY0–5Your rating of how hard the workout was, on the app's 1 to 5 scale. 0 means you did not rate it.
COMPLETION0, 0.25, 0.5, 0.75, 1The fraction of the workout you completed.
EST_DURATIONsecondsEstimated total duration of the workout, rest included.
WEIGHT_UNITLBS or KGThe 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_GRADEgradeAverage 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_UNITIN or CMThe length unit you were using when you logged the workout. DISTANCE is in this unit.
LB_CIRCUITSTANDARD or MCCLUREThe Lattice board circuit, for workouts logged on a Lattice board.
LB_ANGLEdegreesThe board angle past vertical for a Lattice board workout.
NOTEStextThe note you wrote on the workout.
LOG_IDidUnique 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.

ColumnTypeMeaning
EST_WORK_DURATIONsecondsTime under tension: the sum of the work time of every set. Legacy fill: the workout-level value.
EST_REST_DURATIONsecondsThe sum of the rest time of every set.
EXERCISESintegerNumber of distinct exercises in the workout.
EXERCISE_NAMEStext, |-joinedThe exercise names, in alphabetical order.
SETSintegerNumber of sets. For climbing, one set is one climb.
SETS_COMPLETEintegerSets you did not mark as incomplete. A set with no completion mark counts as complete.
REPSnumberTotal 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_VOLUMEnumberTonnage 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_LOADnumberFor 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_RESISTANCEnumberThe largest resistance logged on any set, in WEIGHT_UNIT. Legacy fill: the resistance you entered for the workout.
CLIMBSintegerNumber of sets that carry a grade, which is the number of climbs.
SENDSintegerClimbs you marked as sent.
CLIMB_ATTEMPTSnumberTotal tries on the graded climbs. Legacy fill: the tries you entered for the session.
MAX_GRADEgradeThe hardest grade among the climbs, in GRADE_SYSTEM. Empty when nothing graded was logged.
GRADE_SYSTEMtextThe 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.
DISTANCEnumberThe 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.

ColumnTypeMeaning
LOG_IDidThe workout this set belongs to. Join key to workouts.csv.
DATEdate-timeThe workout's date (UTC). Same value on every set of a workout.
EXERCISEtextThe exercise name as it appeared when you logged it.
ACTIVITY_ORDERintegerPosition of the exercise in the workout. 1 is the first exercise.
ACTIVITY_NOTEStextThe note you wrote on that exercise. Repeated on every set of the exercise.
SET_ORDERintegerPosition of the set within the exercise. 1 is the first set.
NAMEtextThe name of the climb, if you entered one.
GRADEgradeThe grade you logged for the climb, exactly as entered.
GRADE_SYSTEMtextThe grade system GRADE belongs to, detected from the grade. Empty when the grade is not in a known system.
REPSnumberReps in the set. For a climb, the number of tries.
ASCENTtrue / falseWhether you sent the climb. Empty when not recorded (non-climbing sets).
COMPLETEtrue / falseWhether you completed the set. false means you bailed. Empty when not recorded; treat it as complete.
EST_WORK_DURATIONsecondsWork time of the set. From the timer where you used one, otherwise reps × the exercise's rep duration.
EST_REST_DURATIONsecondsRest time after the set, on the same basis.
INTENSITY0–5Your rating of the set, where the exercise asks for one.
RESISTANCEnumberThe 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_UNITLBS or KGThe unit of RESISTANCE.
ANGLEdegreesBoard or wall angle past vertical, where logged.
LB_CIRCUITSTANDARD or MCCLURELattice board circuit, where logged.
DISTANCEnumberDistance logged on the set, in LENGTH_UNIT, for exercises that record one.
LENGTH_UNITIN or CMThe unit of DISTANCE.
LOCATIONtagWhere you climbed. Indoor bouldering: gym, board, spray_wall. Indoor routes: auto_belay, top_rope, lead, circuit_board. Outdoors: outdoor.
BOARDtagThe training board, when LOCATION is board: kilter_board, tension_board, moonboard, grasshopper, decoy, so_ill, quantum.
BOARD_LAYOUTtagThe board layout: Kilter original, full_ride; Tension tb1, tb2_mirror, tb2_spray; Moonboard 2016, 2017, 2019, 2024.
WALL_ANGLEtags, |-joinedslab, vert, overhang, steep, roof. Several may apply.
CLIMB_STYLEtags, |-joinedtechnical, power, tension, compression, coordination. Several may apply.
LENGTHtagboulder_short, boulder_medium, boulder_long, route_short, route_medium, route_long.
HOLD_TYPEtags, |-joinedjugs, edges, small_crimps, slopers, pockets, pinches. Several may apply.
LOCATION_NAMEtextReserved 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_TAGStags, |-joinedAny tag in a category not listed above, written as category:value. New categories added to the app appear here until this page is updated.
NOTEStextThe 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.

ColumnTypeMeaning
DATEdate-timeWhen the value was recorded (UTC).
ATTRIBUTEtextWhich attribute. See the list below.
VALUEnumber or gradeThe value. A number for bodyweight and height, a grade for the grade attributes.
UNITtextLBS or KG for bodyweight, IN or CM for height, the grade system for a grade.

Attributes:

ATTRIBUTEApp settingMeaning
bodyweightBody WeightYour bodyweight.
heightHeightYour height.
max_boulder_gradeMax Boulder GradeThe hardest boulder grade you have ever sent.
max_sport_gradeMax Route GradeThe hardest route grade you have ever sent.
session_boulder_gradeSession Boulder GradeThe boulder grade you have at least a 50% chance of completing within a single climbing session.
session_sport_gradeSession Route GradeThe route grade you have at least a 50% chance of completing within a single climbing session.
flash_boulder_gradeFlash Boulder GradeThe boulder grade you have at least a 50% chance of completing on the first try.
flash_sport_gradeFlash Route GradeThe 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_SYSTEMDisciplineExamples
HUECOboulderV0 … V18
FONTboulder5, 5+, 6A, 6A+ … 9A+ (upper case)
YDSroute5.6 … 5.15b
FRENCHroute4, 4+, 5a … 9c (lower case)
UIAArouteV, V+, VI- … XI+
EWBANKroute14 … 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, SENDS and EXERCISES are counts. They are 0 when 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_DURATION and EST_REST_DURATION are sums or maxima over logged values. They are empty when no set carries the value, and 0 only when a 0 was logged.

Known limits

  • A workout whose workout definition has since been deleted is not exported.
  • LOAD_VOLUME and ADDED_LOAD classify a set by its exercise's current definition. A set whose exercise has since been removed from the Crimpd catalogue still counts in SETS, REPS and MAX_RESISTANCE but not in the two load columns.
  • Times are UTC. The time zone you were in is not part of the export.

Version history

API versionChange
2.23.0ZIP export introduced: sessions.csv + sets.csv, with per-climb tags spread into columns.
2.23.1sessions.csv replaced by workouts.csv with roll-ups; observations.csv added; the per-set count column in sets.csv renamed from ATTEMPTS to REPS.

On this page