OpenPowerlifting Data Distribution README

For a rendered version of this document, view the README on GitLab.

CSV Data Format

The OpenPowerlifting database is distributed as a CSV file for your convenience.

The CSV format used is simple: double-quotes and in-field commas are disallowed.

Name

Mandatory. The name of the lifter in UTF-8 encoding.

Lifters who share the same name are distinguished by use of a # symbol followed by a unique number. For example, two lifters both named John Doe would have Name values John Doe #1 and John Doe #2 respectively.

Sex

Mandatory. The sex category in which the lifter competed, M, F, or Mx.

Mx (pronounced Muks) is a gender-neutral title — like Mr and Ms — originating from the UK. It is a catch-all sex category that is particularly appropriate for non-binary lifters.

The Sex column is defined by modules/opltypes/src/sex.rs.

Event

Mandatory. The type of competition that the lifter entered.

Values are as follows:

  • SBD: Squat-Bench-Deadlift, also commonly called "Full Power".
  • BD: Bench-Deadlift, also commonly called "Ironman" or "Push-Pull".
  • SD: Squat-Deadlift, very uncommon.
  • SB: Squat-Bench, very uncommon.
  • S: Squat-only.
  • B: Bench-only.
  • D: Deadlift-only.

The Event column is defined by modules/opltypes/src/event.rs.

Equipment

Mandatory. The equipment category under which the lifts were performed.

Note that this does not mean that the lifter was actually wearing that equipment! For example, GPC-affiliated federations do not have a category that disallows knee wraps. Therefore, all lifters, even if they only wore knee sleeves, nevertheless competed in the Wraps equipment category, because they were allowed to wear wraps.

Values are as follows:

  • Raw: Bare knees or knee sleeves.
  • Wraps: Knee wraps were allowed.
  • Single-ply: Equipped, single-ply suits.
  • Multi-ply: Equipped, multi-ply suits (includes Double-ply).
  • Unlimited: Equipped, multi-ply suits or rubberized gear (like Bench Daddies).
  • Straps: Allowed straps on the deadlift (used mostly for exhibitions, not real meets).

The Equipment column is defined by modules/opltypes/src/equipment.rs.

Age

Optional. The age of the lifter on the start date of the meet, if known.

Ages can be one of two types: exact or approximate. Exact ages are given as integer numbers, for example 23. Approximate ages are given as an integer plus 0.5, for example 23.5.

Approximate ages mean that the lifter could be either of two possible ages. For an approximate age of n + 0.5, the possible ages are n or n+1. For example, a lifter with the given age 23.5 could be either 23 or 24 -- we don't have enough information to know.

Approximate ages occur because some federations only provide us with birth year information. So another way to think about approximate ages is that 23.5 implies that the lifter turns 24 that year.

The Age column is defined by modules/opltypes/src/age.rs.

AgeClass

Optional. The age class in which the filter falls, for example 40-45. These classes are based on exact age of the lifter on the day of competition.

AgeClass is mostly useful because sometimes a federation will report that a lifter competed in the 50-54 divison without providing any further age information. This way, we can still tag them as 50-54, even if the Age column is empty.

The full range available to AgeClass is defined by modules/opltypes/src/ageclass.rs.

BirthYearClass

Optional. The birth year class in which the filter falls, for example 40-49. The ages in the range are the oldest possible ages for the lifter that year. For example, 40-49 means "the year the lifter turns 40 through the full year in which the lifter turns 49."

BirthYearClass is used primarily by the IPF and by IPF affiliates. Non-IPF federations tend to use AgeClass instead.

The full range available to BirthYearClass is defined by modules/opltypes/src/birthyearclass.rs.

Division

Optional. Free-form UTF-8 text describing the division of competition, like Open or Juniors 20-23 or Professional.

Some federations are configured in our database, which means that we have agreed on a limited set of division options for that federation, and we have rewritten their results to only use that set, and tests enforce that. Even still, divisions are not standardized between configured federations: it really is free-form text, just to provide context.

Information about age should not be extracted from the Division, but from the AgeClass column.

BodyweightKg

Optional. The recorded bodyweight of the lifter at the time of competition, to two decimal places.

WeightClassKg

Optional. The weight class in which the lifter competed, to two decimal places.

Weight classes can be specified as a maximum or as a minimum. Maximums are specified by just the number, for example 90 means "up to (and including) 90kg." minimums are specified by a + to the right of the number, for example 90+ means "above (and excluding) 90kg."

WeightClassKg is defined by modules/opltypes/src/weightclasskg.rs.

Squat1Kg, Bench1Kg, Deadlift1Kg

Optional. First attempts for each of squat, bench, and deadlift, respectively. Maximum of two decimal places.

Negative values indicate failed attempts.

Not all federations report attempt information. Some federations only report Best attempts.

Squat2Kg, Bench2Kg, Deadlift2Kg

Optional. Second attempts for each of squat, bench, and deadlift, respectively. Maximum of two decimal places.

Negative values indicate failed attempts.

Not all federations report attempt information. Some federations only report Best attempts.

Squat3Kg, Bench3Kg, Deadlift3Kg

Optional. Third attempts for each of squat, bench, and deadlift, respectively. Maximum of two decimal places.

Negative values indicate failed attempts.

Not all federations report attempt information. Some federations only report Best attempts.

Squat4Kg, Bench4Kg, Deadlift4Kg

Optional. Fourth attempts for each of squat, bench, and deadlift, respectively. Maximum of two decimal places.

Negative values indicate failed attempts.

Fourth attempts are special, in that they do not count toward the TotalKg. They are used for recording single-lift records.

Best3SquatKg, Best3BenchKg, Best3DeadliftKg

Optional. Maximum of the first three successful attempts for the lift.

Rarely may be negative: that is used by some federations to report the lowest weight the lifter attempted and failed.

TotalKg

Optional. Sum of Best3SquatKg, Best3BenchKg, and Best3DeadliftKg, if all three lifts were a success. If one of the lifts was failed, or the lifter was disqualified for some other reason, the TotalKg is empty.

Rarely, mostly for older meets, a federation will report the total but not any lift information.

Place

Mandatory. The recorded place of the lifter in the given division at the end of the meet.

Values are as follows:

  • Positive number: the place the lifter came in.
  • G: Guest lifter. The lifter succeeded, but wasn't eligible for awards.
  • DQ: Disqualified. Note that DQ could be for procedural reasons, not just failed attempts.
  • DD: Doping Disqualification. The lifter failed a drug test.
  • NS: No-Show. The lifter did not show up on the meet day.

The Place column is defined by modules/opltypes/src/place.rs.

Dots

Optional. A positive number if Dots points could be calculated, empty if the lifter was disqualified.

Dots is very similar to (and drop-in compatible with) the original Wilks formula. It uses an updated, simpler polynomial and is built against data from drug-tested Raw lifters, as opposed to against data from drug-tested Single-ply lifters. The Dots formula was created by Tim Konertz of the BVDK in 2019.

The calculation of Dots points is defined by modules/coefficients/src/dots.rs.

Wilks

Optional. A positive number if Wilks points could be calculated, empty if the lifter was disqualified.

Wilks is the most common formula used for determining Best Lifter in a powerlifting meet.

The calculation of Wilks points is defined by modules/coefficients/src/wilks.rs.

Glossbrenner

Optional. A positive number if Glossbrenner points could be calculated, empty if the lifter was disqualified.

Glossbrenner was created by Herb Glossbrenner as an update of the Wilks formula. It is most commonly used by GPC-affiliated federations.

The calculation of Glossbrenner points is defined by modules/coefficients/src/glossbrenner.rs.

Goodlift

IPF GL Points. The successor to IPF Points (2019-01-01 through 2020-04-30).

Optional. A positive number if IPF GL Points could be calculated, empty if the lifter was disqualified or IPF GL Points were undefined for the Event type.

IPF GL Points roughly express relative performance to the expected performance of that weight class at an IPF World Championship event, as a percentage.

The calculation of IPF GL points is defined by modules/coefficients/src/goodlift.rs.

Tested

Optional. Yes if the lifter entered a drug-tested category, empty otherwise.

Note that this records whether the results count as drug-tested, which does not imply that the lifter actually took a drug test. Federations do not report which lifters, if any, were subject to drug testing.

Country

Optional. The home country of the lifter, if known.

The full list of valid Country values is defined by modules/opltypes/src/country.rs.

State

Optional. The home state/province/oblast/division/etc of the lifter, if known.

The full list of valid State values is defined by modules/opltypes/src/states.rs. Expanded names are given there in comments.

Federation

Mandatory. The federation that hosted the meet.

Note that this may be different than the international federation that provided sanction to the meet. For example, USPA meets are sanctioned by the IPL, but we record USPA meets as USPA.

The full list of valid Federation values is defined by modules/opltypes/src/federation.rs. Comments in that file help explain what each federation value means.

ParentFederation

Optional. The topmost federation that sanctioned the meet, usually the international body.

For example, the ParentFederation for the USAPL and EPA is IPF.

Date

Mandatory. The start date of the meet in ISO 8601 format. ISO 8601 looks like YYYY-MM-DD: as an example, 1996-12-04 would be December 4th, 1996.

Meets that last more than one day only have the start date recorded.

MeetCountry

Mandatory. The country in which the meet was held.

The full list of valid Country values is defined by modules/opltypes/src/country.rs.

MeetState

Optional. The state, province, or region in which the meet was held.

The full list of valid State values is defined by modules/opltypes/src/state.rs.

MeetName

Mandatory. The name of the meet.

The name is defined to never include the year or the federation. For example, the meet officially called 2019 USAPL Raw National Championships would have the MeetName Raw National Championshps.