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 (1-15)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.

FieldTypeDescription
squatLiftScoresScores for squat
benchLiftScoresScores for bench press
deadliftLiftScoresScores for deadlift
totalLiftScoresScores for powerlifting total

LiftScores

FieldTypeDescription
wilksnumberClassic powerlifting coefficient
dotsnumberModern replacement for Wilks
ipfGlnumberIPF Goodlift points
glossbrennernumberAlternative 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.