manifest.json
A management file that contains meta information about the export.
It records the app name, version, export date/time, and a list of match IDs included in the export.
| Field | Description |
|---|---|
| app | App name |
| version | Version number |
| exported_at | Export date and time |
| match_ids | List of match IDs included in the export. Match IDs begin with match_. Folders named by match ID are stored in the same directory. |
actions.csv
actions.csv is a CSV file that stores each play recorded during a match as a single row. All play information — including serves, receptions, sets, attacks, and more — is recorded in chronological order, making this the most detailed file in the CSV set.
The match flow can be tracked using Set, Rally Number, and Play Number. Additional data includes the player, skill, result, various play attributes, and ball position coordinates (contact point and landing point). This file can be used for analysis, custom aggregations, and integration with external tools.
Input values: [A | B] indicates that either A or B will be entered.
- Set
-
Input valuesInteger
- Rally Number
-
Input valuesInteger
- Play Number
-
Input valuesInteger (sequential play number within the rally)
- Team
-
Input values[A | B]
For team names, refer to team_name_A and team_name_B in match.json.
- Skill
-
Input values[Serve | Reception | Attack | Block | Direct return | Freeball sent | Receive | Dig | Fault]
- Result
-
Input values[ace | A pass | B pass | C pass | D pass | kill | error | conceded]
Skill and Result Relationship
* If the Result does not match any of the values listed below, it will be left blank.
| Skill | Possible Result values |
|---|---|
| Serve | [ace | error]
For error, Notes will contain either [net] or [out]. For violations such as the 8-second rule or foot faults, Notes will be blank. |
| Reception | [A pass | B pass | C pass | D pass | conceded] For a positional fault, [conceded] will be entered. If the opponent scores a service ace, no Reception record is created. |
| Attack | [kill | error | conceded]
error indicates an attack error. conceded indicates that a point was lost due to an opponent block after the attack. In that case, Notes will contain [Blocked for point]. If the opponent makes a block error immediately after the attack, the result is [kill] and Notes will contain [Opp Block Err]. If the opponent makes a dig error immediately after the attack, the result is [kill] and Notes will contain [Opp Dig Err]. |
| Block | [kill | error] |
| Direct return | [kill | error] |
| Freeball sent | [kill | error] |
| Receive | [error] |
| Dig | [error] |
- Player
-
Input valuesInteger
Jersey number of the player who performed the play.
- Player Rotation Position
-
Input values[1 | 2 | 3 | 4 | 5 | 6]
The rotation position of the player at the time of the play.
- Serve Type
-
Input values[Underhand Serve | Floater Serve | Jump Floater | Jump Serve | Drive Serve | Other]
- Attack Formation
-
Input values[in-system]
Formation at the time of the attack.
- Attack Type
-
Input values[Open Attack | Fast Set | Pipe | Back-row | A Quick | B Quick | C Quick | D Quick | A Medium | B Medium | C Medium | Slide | Setter Dump]
- Attack Strength
-
Input values[Power Hit | Soft Hit | Push | Tip]
Coordinate System
The coordinate system uses normalized values from 0 to 1 across the entire court (both sides combined). The bottom-left is (0,0) and the top-right is (1,1).
For example, if the total court width is 18m, an X coordinate of 0.5 represents the center.
To convert to actual court dimensions, multiply the X coordinate by 18 and the Y coordinate by 9 for a standard 6-player volleyball court (18m × 9m).
For example, coordinates (0.5, 0.5) correspond to approximately (9m, 4.5m) on the actual court.
- Contact X
-
Input valuesDecimal
X coordinate of the ball contact position. Normalized to a range of 0–1. If the actual court sideline length is 18m, multiply the value by 18 to get the real-world measurement.
- Contact Y
-
Input valuesDecimal
Y coordinate of the ball contact position. Normalized to a range of 0–1. If the actual court endline length is 9m, multiply the value by 9 to get the real-world measurement.
- Landing X
-
Input valuesDecimal
X coordinate of the ball landing position. Normalized to a range of 0–1. If the actual court sideline length is 18m, multiply the value by 18 to get the real-world measurement.
- Landing Y
-
Input valuesDecimal
Y coordinate of the ball landing position. Normalized to a range of 0–1. If the actual court endline length is 9m, multiply the value by 9 to get the real-world measurement.
- Seconds
-
Input valuesDecimal
Elapsed time in seconds from the start of the match.
- Notes
-
Input values[no-touch | net | out | Opp Block Err | Opp Dig Err | Blocked for point]
lineups.csv
lineups.csv is a CSV file that stores the starting lineup, rotation information, and substitution data for each set.
It records each player's jersey number and name, along with their starting rotation position, position (or serve order), and substitution details. This file can be used to review lineup composition per set, analyze rotation patterns, and verify player usage.
Input values: [A | B] indicates that either A or B will be entered.
- Set
-
Input valuesInteger
- Team
-
Input values[A | B]
For team names, refer to team_name_A and team_name_B in match.json.
- Jersey Number
-
Input valuesInteger
- Player Name
-
Input valuesString
- Starting Rotation Position
-
Input values[1 | 2 | 3 | 4 | 5 | 6]
- Position
-
Input values[Setter | Libero]
- Substitute Player
-
Input valuesInteger (jersey number of the substituting player)
- Substitute Player Name
-
Input valuesString
match.json
match.json is a JSON file that stores basic information about the match itself.
It includes the match ID, date and time, tournament name, team names, and team IDs. It serves as the reference file when used alongside the CSV files. For example, the team identifiers A and B in actions.csv correspond to team_name_A and team_name_B in this file.
| Field | Description |
|---|---|
| match_id | Match ID |
| match_time | Match date and time as Unix time (milliseconds). Represents the number of milliseconds elapsed since 1970-01-01 00:00:00 UTC. |
| event_name | Tournament / event name |
| team_name_A | Team name (A) |
| team_id_A | Team ID (A) |
| team_name_B | Team name (B) |
| team_id_B | Team ID (B) |
players.csv
players.csv is a CSV file that stores the list of players registered for the match.
For each player, it records the team, player name, jersey number, and player ID. Combined with other CSV files, it can be used for player-level analysis and data linking.
Input values: [A | B] indicates that either A or B will be entered.
- Team
-
Input values[A | B]
For team names, refer to team_name_A and team_name_B in match.json.
- Player Name
-
Input valuesString
- Jersey Number
-
Input valuesInteger
- Player ID
-
Input valuesString
rallies.csv
rallies.csv is a CSV file that stores match status on a per-rally basis.
For each rally, it records the serving team, scoring team, and score, as well as the player lineup on court for each team at that point. For matches with rotation tracking enabled, it also includes rotation numbers for both teams. This file can be used for rally analysis, rotation-based trend analysis, and tracking on-court personnel.
Input values: [A | B] indicates that either A or B will be entered.
- Set
-
Input valuesInteger
- Rally Number
-
Input valuesInteger
- Serving Team
-
Input values[A | B]
- Scoring Team
-
Input values[A | B]
- Score Team A
-
Input valuesInteger
Team A's score at the end of the rally.
- Score Team B
-
Input valuesInteger
Team B's score at the end of the rally.
- [P1 - P6] Team A Player
-
Input valuesInteger
The jersey number of the Team A player whose home rotation position corresponds to each rotation slot at the time of the rally.
For example, "P1 Team A Player" contains the jersey number of the Team A player whose home rotation position was Position 1 (serving position) during that rally.
- [P1 - P6] Team B Player
-
Input valuesInteger
The jersey number of the Team B player whose home rotation position corresponds to each rotation slot at the time of the rally.
For example, "P1 Team B Player" contains the jersey number of the Team B player whose home rotation position was Position 1 (serving position) during that rally.
- Rotation Team A
-
Input values[1 | 2 | 3 | 4 | 5 | 6]
Team A's rotation number.
- Rotation Team B
-
Input values[1 | 2 | 3 | 4 | 5 | 6]
Team B's rotation number.
sets.csv
sets.csv is a CSV file that stores basic information about each set.
It records the set number, the serving team at the start of the set (coin toss result), the final score, and the recording method. For matches recorded using a YouTube video, the YouTube video ID is also included.
Input values: [A | B] indicates that either A or B will be entered.
- Set
-
Input valuesInteger
- Serving Team
-
Input values[A | B]
For team names, refer to team_name_A and team_name_B in match.json.
- Team A Score
-
Input valuesInteger
- Team B Score
-
Input valuesInteger
- Record Type
-
Input values[live | youtube | file]
- YouTube Video ID
-
Input valuesString
