{
  "slug": "tournament-bracket-size",
  "title": "Tournament Bracket & Schedule Calculator",
  "heading": "Tournament Bracket Calculator",
  "category": "math",
  "url": "https://www.revenuelab.fyi/toolbox/tournament-bracket-size",
  "summary": "Rounds, byes, total matches, and event duration for any entrant count.",
  "description": "Plan an event from entrant count and format. Get bracket size, byes needed, total match count, rounds, and the total hours the tournament will run on your station count.",
  "formula": "Rounds = ⌈log₂(entrants)⌉. Single elim matches = entrants − 1; double elim ≈ 2 × entrants − 2.",
  "dateModified": "2026-09-30",
  "run_url": "https://www.revenuelab.fyi/api/public/calc?tool=tournament-bracket-size",
  "inputs": [
    {
      "id": "entrants",
      "label": "Entrants",
      "kind": "number",
      "hint": null,
      "default": 48,
      "unit": null,
      "min": 2,
      "max": null
    },
    {
      "id": "format",
      "label": "Format",
      "kind": "select",
      "hint": null,
      "default": "double",
      "options": [
        {
          "value": "single",
          "label": "Single elimination"
        },
        {
          "value": "double",
          "label": "Double elimination"
        },
        {
          "value": "roundrobin",
          "label": "Round robin"
        }
      ]
    },
    {
      "id": "matchMin",
      "label": "Minutes per match",
      "kind": "number",
      "hint": null,
      "default": 18,
      "unit": null,
      "min": 1,
      "max": null
    },
    {
      "id": "stations",
      "label": "Stations available",
      "kind": "number",
      "hint": null,
      "default": 8,
      "unit": null,
      "min": 1,
      "max": null
    }
  ],
  "outputs": [
    {
      "id": "matches",
      "label": "Total matches",
      "format": "number",
      "hint": null,
      "primary": true
    },
    {
      "id": "hours",
      "label": "Estimated event length (hours)",
      "format": "decimal",
      "hint": null,
      "primary": false
    },
    {
      "id": "rounds",
      "label": "Rounds in the bracket",
      "format": "number",
      "hint": null,
      "primary": false
    },
    {
      "id": "byes",
      "label": "Byes needed",
      "format": "number",
      "hint": null,
      "primary": false
    },
    {
      "id": "minutes",
      "label": "Total minutes",
      "format": "number",
      "hint": null,
      "primary": false
    }
  ],
  "worked_example": {
    "inputs": [
      "Entrants: 48",
      "Format: Double elimination",
      "Minutes per match: 18",
      "Stations available: 8"
    ],
    "outputs": [
      "Total matches: 94",
      "Estimated event length (hours): 3.5",
      "Rounds in the bracket: 6",
      "Byes needed: 16",
      "Total minutes: 212"
    ]
  },
  "how_to": {
    "title": "How to use this",
    "steps": [
      "Enter entrants.",
      "Enter format.",
      "Enter minutes per match.",
      "Enter stations available.",
      "Read your total matches on the right — it updates as you type.",
      "Hit Share to keep the scenario or send it to someone."
    ]
  },
  "scenarios": [
    {
      "name": "Conservative",
      "description": "Lower-end numbers — what if things land soft?",
      "values": {
        "entrants": 29,
        "format": "double",
        "matchMin": 11,
        "stations": 5
      }
    },
    {
      "name": "Typical",
      "description": "Defaults — the most common real-world setup.",
      "values": {
        "entrants": 48,
        "format": "double",
        "matchMin": 18,
        "stations": 8
      }
    },
    {
      "name": "Ambitious",
      "description": "Higher-end numbers — what if things really pop?",
      "values": {
        "entrants": 77,
        "format": "double",
        "matchMin": 29,
        "stations": 13
      }
    }
  ],
  "limitations": [
    "Results are rounded for display; the underlying calculation keeps full precision.",
    "Very large or very small inputs may hit floating-point limits in the browser.",
    "Inputs outside the accepted range are clamped rather than rejected."
  ],
  "faq": [
    {
      "q": "Why does double elimination take so long?",
      "a": "It roughly doubles the match count so every entrant gets a second life. Budget nearly twice the venue time of single elim."
    },
    {
      "q": "When does round robin stop being feasible?",
      "a": "Fast. 16 entrants means 120 matches. Pool play into a bracket is the standard compromise above about 8 players."
    }
  ],
  "related": [],
  "license": "CC-BY-4.0",
  "citation": "RevenueLab — Tournament Bracket & Schedule Calculator (https://www.revenuelab.fyi/toolbox/tournament-bracket-size)"
}