Skip to content

LifterProfile Schema ​

LifterProfile represents a lifter's profile including physical attributes, bodyweight history, and personal records (PRs). It's the go-to schema for athlete data that isn't tied to a specific workout.

Interactive Explorer ​

Loading schema...

Use Cases ​

  • Migrate between apps: Export your profile and PRs from one app, import to another
  • Track body composition: Store height, bodyweight history over time
  • Backup personal bests: Archive PRs separately from full workout history
  • Share achievements: Export PRs to share with coach or community
  • Strength standards comparison: Use bodyweight to calculate percentile rankings
  • Program prescription: Apps can use current 1RMs to calculate training percentages

Top-Level Properties ​

FieldTypeRequiredDescription
exportedAtstring (date-time)YesWhen this profile was exported
namestringNoDisplay name or nickname
sex"male" | "female"NoFor coefficient calculations (Wilks, DOTS, etc.)
birthDatestring (date)NoFor age-based categories (masters, juniors)
heightHeightNoHeight measurement
bodyweightBodyweightNoCurrent bodyweight
bodyweightHistoryBodyweightEntry[]NoHistorical bodyweight entries
recordsExerciseRecord[]NoPersonal records by exercise
normalizedScoresNormalizedScoresNoPre-calculated Wilks/DOTS for powerlifts

Height ​

Height measurement with unit.

FieldTypeRequiredDescription
valuenumberYesHeight value
unit"cm" | "in"YesHeight unit

Bodyweight ​

Current or reference bodyweight.

FieldTypeRequiredDescription
valuenumberYesBodyweight value
unit"kg" | "lb"YesWeight unit
datestring (date)NoWhen measured

BodyweightEntry ​

A historical bodyweight measurement.

FieldTypeRequiredDescription
valuenumberYesBodyweight value
unit"kg" | "lb"YesWeight unit
datestring (date)YesWhen measured
notesstringNoContext (morning weigh-in, competition, etc.)

ExerciseRecord ​

Personal records for a single exercise.

FieldTypeRequiredDescription
exerciseExerciseYesWhich exercise (name, equipment, category)
repMaxesRepMax[]NoRep max records (1RM, 3RM, 5RM, etc.)
estimated1RMEstimated1RMNoCalculated e1RM with formula metadata
volumePRVolumePRNoBest session volume for this exercise
durationPRDurationPRNoBest time for timed exercises

RepMax ​

A rep max record (e.g., heaviest weight for 1 rep, 3 reps, 5 reps).

FieldTypeRequiredDescription
repsinteger (min 1)YesRep count
weightnumberYesWeight lifted
unit"kg" | "lb"YesWeight unit
datestring (date)YesWhen PR was achieved
type"actual" | "estimated"NoWhether tested or calculated
bodyweightKgnumberNoBodyweight at time of PR
workoutIdstringNoReference to source workout
rpenumber (0-10)NoRPE if recorded
notesstringNoContext (competition, gym PR, etc.)

Estimated1RM ​

A calculated one-rep max estimate based on submaximal performance.

FieldTypeRequiredDescription
valuenumberYesEstimated 1RM value
unit"kg" | "lb"YesWeight unit
formulastringYesFormula used (see below)
basedOnRepsintegerYesRep count used for calculation
basedOnWeightnumberYesWeight used for calculation
datestring (date)NoWhen the source set was performed

Supported Formulas ​

FormulaCalculation
brzyckiweight / (1.0278 - 0.0278 x reps)
epleyweight x (1 + 0.0333 x reps)
lombardiweight x reps^0.10
mayhew100 x weight / (52.2 + 41.9 x e^(-0.055 x reps))
oconnerweight x (1 + 0.025 x reps)
wathan100 x weight / (48.8 + 53.8 x e^(-0.075 x reps))

VolumePR ​

Best total volume achieved for an exercise in a single session.

FieldTypeRequiredDescription
valuenumberYesTotal volume (sets x reps x weight)
unit"kg" | "lb"YesWeight unit
datestring (date)YesWhen achieved
notesstringNoContext (e.g., "10x5 at 170kg")

DurationPR ​

Best time for timed exercises (planks, carries, etc.).

FieldTypeRequiredDescription
secondsintegerYesDuration in seconds
datestring (date)YesWhen achieved
weightnumberNoWeight used (for weighted exercises)
unit"kg" | "lb"ConditionalRequired if weight is present
notesstringNoAdditional context

NormalizedScores ​

Pre-calculated bodyweight-normalized scores for powerlifts.

FieldTypeRequiredDescription
squatLiftScoresNoScores for squat
benchLiftScoresNoScores for bench press
deadliftLiftScoresNoScores for deadlift
totalLiftScoresNoScores for powerlifting total

LiftScores ​

FieldTypeRequiredDescription
wilksnumberNoClassic powerlifting coefficient
dotsnumberNoModern replacement for Wilks
ipfGlnumberNoIPF Goodlift points
glossbrennernumberNoAlternative coefficient

Example ​

json
{
  "exportedAt": "2024-01-15T10:00:00Z",
  "name": "John",
  "sex": "male",
  "birthDate": "1990-05-15",
  "height": { "value": 180, "unit": "cm" },
  "bodyweight": { "value": 82.5, "unit": "kg", "date": "2024-01-15" },
  "bodyweightHistory": [
    { "value": 82.5, "unit": "kg", "date": "2024-01-15", "notes": "Morning weigh-in" },
    { "value": 83.0, "unit": "kg", "date": "2024-01-08" },
    { "value": 81.5, "unit": "kg", "date": "2024-01-01" }
  ],
  "records": [
    {
      "exercise": {
        "name": "Barbell Back Squat",
        "equipment": "barbell"
      },
      "repMaxes": [
        {
          "reps": 1,
          "weight": 180,
          "unit": "kg",
          "date": "2024-01-10",
          "type": "actual",
          "notes": "Competition PR"
        },
        {
          "reps": 5,
          "weight": 155,
          "unit": "kg",
          "date": "2023-12-20",
          "type": "actual"
        }
      ],
      "estimated1RM": {
        "value": 185,
        "unit": "kg",
        "formula": "brzycki",
        "basedOnReps": 5,
        "basedOnWeight": 155
      }
    },
    {
      "exercise": {
        "name": "Plank",
        "equipment": "bodyweight"
      },
      "durationPR": {
        "seconds": 180,
        "date": "2024-01-08"
      }
    }
  ],
  "normalizedScores": {
    "squat": { "wilks": 145.2, "dots": 148.5 },
    "total": { "wilks": 406.2, "dots": 414.6 }
  }
}

Full Schema ​

Click to expand full JSON Schema
json
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "$id": "https://openweight.org/schemas/lifter-profile.schema.json",
  "title": "LifterProfile",
  "description": "A lifter's profile including physical attributes, bodyweight history, and personal records",
  "type": "object",
  "required": ["exportedAt"],
  "additionalProperties": true
}

See the full schema on GitHub.

Released under the Apache 2.0 License.