Open Coaching Format

An open standard for representing sports coaching diagrams, drill animations, and playbooks as structured data.

No open standard for this exists today — coaching tools like the FIBA Europe Coaching App, FastDraw, and Sportplan.net all use proprietary, image-only formats. OCF is a JSON-based alternative any tool can read, write, and render.

Quick example

A pass followed by a cut to the basket, in half-court FIBA coordinates:

{
  "court": { "ruleset": "fiba", "type": "half_court" },
  "entities": [
    { "type": "offense", "nr": 1, "x": -3.0, "y": 6.0 },
    { "type": "offense", "nr": 2, "x": 3.0, "y": 6.0 }
  ],
  "balls": [ { "id": "ball_1", "carried_by": "offense_1" } ],
  "frames": [
    {
      "id": "frame_1",
      "actions": [
        { "player": "offense_1", "type": "pass", "to_player": "offense_2" },
        { "player": "offense_1", "type": "cut", "moves": [ { "to": { "named": "basket" } } ] }
      ],
      "end_state": {
        "offense_1": { "named": "basket" },
        "balls": { "ball_1": { "carried_by": "offense_2" } }
      }
    }
  ]
}

Explore

Using the Validator

Try the reference validator instantly in the browser playground — nothing is uploaded, validation runs client-side. Itserror codes are documented separately.

ocf-validatoris not yet published to npm or PyPI. Run it from source instead:

git clone https://github.com/opencoachingformat/ocf-validator
cd ocf-validator/packages/ts
npm install && npm run build
node dist/cli.js path/to/your-file.ocf.json

A Python implementation with matching validation behavior is available under packages/py in the same repository.