{
  "meta": {
    "gameVersion": "1.2.3.1",
    "source": "satisfactory-calculator.com en-Stable.json (SCIM, from game Docs.json); generator/miner constants verified from 1.0 export (unchanged in 1.2)",
    "generated": "2026-06-25",
    "hash": "f098612a92be",
    "counts": {
      "items": 178,
      "recipes": 298,
      "craftable": 140,
      "alternates": 110,
      "buildings": 18
    },
    "computed": "2026-10-29",
    "sourceSha256": "490327f32555384b355214283a686e85eb145e008f70724ba5e7a9137057de6a",
    "caption": "Game data v1.2.3.1 (exported 2026-06-25) · computed 2026-10-29"
  },
  "method": {
    "stages": "All 2-way stages before all 3-way stages; each incoming line gets one splitter.",
    "loopback": "Use the smallest 2^a × 3^b leaf count at least N. Merge surplus leaves and fresh supply back into the tree input.",
    "mergers": "At most three inputs per merger; ceil(surplus leaves / 2) mergers including the fresh supply connection.",
    "rates": "Steady-state target rates with all outputs accepting items. Loopback common-segment throughput is fresh input × leaves / N."
  },
  "belts": [
    {
      "mk": 1,
      "speed": 60
    },
    {
      "mk": 2,
      "speed": 120
    },
    {
      "mk": 3,
      "speed": 270
    },
    {
      "mk": 4,
      "speed": 480
    },
    {
      "mk": 5,
      "speed": 780
    },
    {
      "mk": 6,
      "speed": 1200
    }
  ],
  "rows": [
    {
      "outputs": 2,
      "leaves": 2,
      "method": "tree 2",
      "factors": [
        2
      ],
      "stageSplitters": [
        1
      ],
      "splitters": 1,
      "mergers": 0,
      "extraOutputs": 0,
      "rates": [
        {
          "mk": 5,
          "input": 780,
          "perOutput": 390,
          "mergedInputRate": 780,
          "returnRate": 0,
          "exceedsBelt": false,
          "maxFreshInput": 780,
          "requiredBeltMk": 5
        },
        {
          "mk": 6,
          "input": 1200,
          "perOutput": 600,
          "mergedInputRate": 1200,
          "returnRate": 0,
          "exceedsBelt": false,
          "maxFreshInput": 1200,
          "requiredBeltMk": 6
        }
      ]
    },
    {
      "outputs": 3,
      "leaves": 3,
      "method": "tree 3",
      "factors": [
        3
      ],
      "stageSplitters": [
        1
      ],
      "splitters": 1,
      "mergers": 0,
      "extraOutputs": 0,
      "rates": [
        {
          "mk": 5,
          "input": 780,
          "perOutput": 260,
          "mergedInputRate": 780,
          "returnRate": 0,
          "exceedsBelt": false,
          "maxFreshInput": 780,
          "requiredBeltMk": 5
        },
        {
          "mk": 6,
          "input": 1200,
          "perOutput": 400,
          "mergedInputRate": 1200,
          "returnRate": 0,
          "exceedsBelt": false,
          "maxFreshInput": 1200,
          "requiredBeltMk": 6
        }
      ]
    },
    {
      "outputs": 4,
      "leaves": 4,
      "method": "tree 2×2",
      "factors": [
        2,
        2
      ],
      "stageSplitters": [
        1,
        2
      ],
      "splitters": 3,
      "mergers": 0,
      "extraOutputs": 0,
      "rates": [
        {
          "mk": 5,
          "input": 780,
          "perOutput": 195,
          "mergedInputRate": 780,
          "returnRate": 0,
          "exceedsBelt": false,
          "maxFreshInput": 780,
          "requiredBeltMk": 5
        },
        {
          "mk": 6,
          "input": 1200,
          "perOutput": 300,
          "mergedInputRate": 1200,
          "returnRate": 0,
          "exceedsBelt": false,
          "maxFreshInput": 1200,
          "requiredBeltMk": 6
        }
      ]
    },
    {
      "outputs": 5,
      "leaves": 6,
      "method": "loopback 6→5",
      "factors": [
        2,
        3
      ],
      "stageSplitters": [
        1,
        2
      ],
      "splitters": 3,
      "mergers": 1,
      "extraOutputs": 1,
      "rates": [
        {
          "mk": 5,
          "input": 780,
          "perOutput": 156,
          "mergedInputRate": 936,
          "returnRate": 156,
          "exceedsBelt": true,
          "maxFreshInput": 650,
          "requiredBeltMk": 6
        },
        {
          "mk": 6,
          "input": 1200,
          "perOutput": 240,
          "mergedInputRate": 1440,
          "returnRate": 240,
          "exceedsBelt": true,
          "maxFreshInput": 1000,
          "requiredBeltMk": null
        }
      ]
    },
    {
      "outputs": 6,
      "leaves": 6,
      "method": "tree 2×3",
      "factors": [
        2,
        3
      ],
      "stageSplitters": [
        1,
        2
      ],
      "splitters": 3,
      "mergers": 0,
      "extraOutputs": 0,
      "rates": [
        {
          "mk": 5,
          "input": 780,
          "perOutput": 130,
          "mergedInputRate": 780,
          "returnRate": 0,
          "exceedsBelt": false,
          "maxFreshInput": 780,
          "requiredBeltMk": 5
        },
        {
          "mk": 6,
          "input": 1200,
          "perOutput": 200,
          "mergedInputRate": 1200,
          "returnRate": 0,
          "exceedsBelt": false,
          "maxFreshInput": 1200,
          "requiredBeltMk": 6
        }
      ]
    },
    {
      "outputs": 7,
      "leaves": 8,
      "method": "loopback 8→7",
      "factors": [
        2,
        2,
        2
      ],
      "stageSplitters": [
        1,
        2,
        4
      ],
      "splitters": 7,
      "mergers": 1,
      "extraOutputs": 1,
      "rates": [
        {
          "mk": 5,
          "input": 780,
          "perOutput": 111.42857142857143,
          "mergedInputRate": 891.4285714285713,
          "returnRate": 111.42857142857143,
          "exceedsBelt": true,
          "maxFreshInput": 682.5,
          "requiredBeltMk": 6
        },
        {
          "mk": 6,
          "input": 1200,
          "perOutput": 171.42857142857142,
          "mergedInputRate": 1371.4285714285713,
          "returnRate": 171.42857142857142,
          "exceedsBelt": true,
          "maxFreshInput": 1050,
          "requiredBeltMk": null
        }
      ]
    },
    {
      "outputs": 8,
      "leaves": 8,
      "method": "tree 2×2×2",
      "factors": [
        2,
        2,
        2
      ],
      "stageSplitters": [
        1,
        2,
        4
      ],
      "splitters": 7,
      "mergers": 0,
      "extraOutputs": 0,
      "rates": [
        {
          "mk": 5,
          "input": 780,
          "perOutput": 97.5,
          "mergedInputRate": 780,
          "returnRate": 0,
          "exceedsBelt": false,
          "maxFreshInput": 780,
          "requiredBeltMk": 5
        },
        {
          "mk": 6,
          "input": 1200,
          "perOutput": 150,
          "mergedInputRate": 1200,
          "returnRate": 0,
          "exceedsBelt": false,
          "maxFreshInput": 1200,
          "requiredBeltMk": 6
        }
      ]
    },
    {
      "outputs": 9,
      "leaves": 9,
      "method": "tree 3×3",
      "factors": [
        3,
        3
      ],
      "stageSplitters": [
        1,
        3
      ],
      "splitters": 4,
      "mergers": 0,
      "extraOutputs": 0,
      "rates": [
        {
          "mk": 5,
          "input": 780,
          "perOutput": 86.66666666666667,
          "mergedInputRate": 780,
          "returnRate": 0,
          "exceedsBelt": false,
          "maxFreshInput": 780,
          "requiredBeltMk": 5
        },
        {
          "mk": 6,
          "input": 1200,
          "perOutput": 133.33333333333334,
          "mergedInputRate": 1200,
          "returnRate": 0,
          "exceedsBelt": false,
          "maxFreshInput": 1200,
          "requiredBeltMk": 6
        }
      ]
    },
    {
      "outputs": 10,
      "leaves": 12,
      "method": "loopback 12→10",
      "factors": [
        2,
        2,
        3
      ],
      "stageSplitters": [
        1,
        2,
        4
      ],
      "splitters": 7,
      "mergers": 1,
      "extraOutputs": 2,
      "rates": [
        {
          "mk": 5,
          "input": 780,
          "perOutput": 78,
          "mergedInputRate": 936,
          "returnRate": 156,
          "exceedsBelt": true,
          "maxFreshInput": 650,
          "requiredBeltMk": 6
        },
        {
          "mk": 6,
          "input": 1200,
          "perOutput": 120,
          "mergedInputRate": 1440,
          "returnRate": 240,
          "exceedsBelt": true,
          "maxFreshInput": 1000,
          "requiredBeltMk": null
        }
      ]
    },
    {
      "outputs": 11,
      "leaves": 12,
      "method": "loopback 12→11",
      "factors": [
        2,
        2,
        3
      ],
      "stageSplitters": [
        1,
        2,
        4
      ],
      "splitters": 7,
      "mergers": 1,
      "extraOutputs": 1,
      "rates": [
        {
          "mk": 5,
          "input": 780,
          "perOutput": 70.9090909090909,
          "mergedInputRate": 850.9090909090909,
          "returnRate": 70.9090909090909,
          "exceedsBelt": true,
          "maxFreshInput": 715,
          "requiredBeltMk": 6
        },
        {
          "mk": 6,
          "input": 1200,
          "perOutput": 109.0909090909091,
          "mergedInputRate": 1309.090909090909,
          "returnRate": 109.0909090909091,
          "exceedsBelt": true,
          "maxFreshInput": 1100,
          "requiredBeltMk": null
        }
      ]
    },
    {
      "outputs": 12,
      "leaves": 12,
      "method": "tree 2×2×3",
      "factors": [
        2,
        2,
        3
      ],
      "stageSplitters": [
        1,
        2,
        4
      ],
      "splitters": 7,
      "mergers": 0,
      "extraOutputs": 0,
      "rates": [
        {
          "mk": 5,
          "input": 780,
          "perOutput": 65,
          "mergedInputRate": 780,
          "returnRate": 0,
          "exceedsBelt": false,
          "maxFreshInput": 780,
          "requiredBeltMk": 5
        },
        {
          "mk": 6,
          "input": 1200,
          "perOutput": 100,
          "mergedInputRate": 1200,
          "returnRate": 0,
          "exceedsBelt": false,
          "maxFreshInput": 1200,
          "requiredBeltMk": 6
        }
      ]
    },
    {
      "outputs": 16,
      "leaves": 16,
      "method": "tree 2×2×2×2",
      "factors": [
        2,
        2,
        2,
        2
      ],
      "stageSplitters": [
        1,
        2,
        4,
        8
      ],
      "splitters": 15,
      "mergers": 0,
      "extraOutputs": 0,
      "rates": [
        {
          "mk": 5,
          "input": 780,
          "perOutput": 48.75,
          "mergedInputRate": 780,
          "returnRate": 0,
          "exceedsBelt": false,
          "maxFreshInput": 780,
          "requiredBeltMk": 5
        },
        {
          "mk": 6,
          "input": 1200,
          "perOutput": 75,
          "mergedInputRate": 1200,
          "returnRate": 0,
          "exceedsBelt": false,
          "maxFreshInput": 1200,
          "requiredBeltMk": 6
        }
      ]
    }
  ],
  "ratios": [
    {
      "inputRates": [
        270,
        270
      ],
      "input": 540,
      "outputs": 3,
      "leaves": 3,
      "factors": [
        3
      ],
      "stages": [
        {
          "ways": 3,
          "splitters": 1,
          "inputPerSplitter": 540,
          "outputPerLine": 180
        }
      ],
      "extraOutputs": 0,
      "splitters": 1,
      "mergers": 0,
      "method": "tree 3",
      "perOutput": 180,
      "returnRate": 0,
      "mergedInputRate": 540,
      "beltCapacity": 780,
      "exceedsBelt": false,
      "maxFreshInput": 780,
      "inputs": 2,
      "inputMergers": 1,
      "totalMergers": 1
    },
    {
      "inputRates": [
        240,
        240,
        240
      ],
      "input": 720,
      "outputs": 4,
      "leaves": 4,
      "factors": [
        2,
        2
      ],
      "stages": [
        {
          "ways": 2,
          "splitters": 1,
          "inputPerSplitter": 720,
          "outputPerLine": 360
        },
        {
          "ways": 2,
          "splitters": 2,
          "inputPerSplitter": 360,
          "outputPerLine": 180
        }
      ],
      "extraOutputs": 0,
      "splitters": 3,
      "mergers": 0,
      "method": "tree 2×2",
      "perOutput": 180,
      "returnRate": 0,
      "mergedInputRate": 720,
      "beltCapacity": 780,
      "exceedsBelt": false,
      "maxFreshInput": 780,
      "inputs": 3,
      "inputMergers": 1,
      "totalMergers": 1
    }
  ]
}
