How well does VOLO actually sort?
The measurements behind the tool, including the ideas that made it worse.
The test
Take a load order somebody played on and enjoyed. Rebuild the masterlist from scratch with that order left out, so the tool has never seen it. Sort the mods and count how many pairs come out in the same relative order as the one the player actually used. Shuffle the same list at random for comparison.
Leaving the order out matters. Scored against orders it learned from, VOLO looks about four points better than it is, because it is being asked to recall an answer it has already read.
The result
Across 106 working orders, VOLO agrees with the player 67.7 percent of the time, against 50.8 percent for a random shuffle. So it is doing real work, and it is nowhere near a solved problem.
The corpus holds 153 working orders and 106 are scored here. 45 of them VOLO sorted itself, and marking its own homework measures nothing except that the sort is deterministic, and two more are byte-identical copies of other files.
The average treats every order equally, so a 22-mod list counts as much as a 1,647-mod one. Weighted by the number of mods, which is closer to what someone with a real load order experiences, it comes out at 68.0 percent.
Where it helped most
The five orders VOLO reconstructed best, by how far it beat a random shuffle of the same list. This is the good end of the range and nothing more: the average above also carries two orders where the sort did no better than chance at all.
| Order | Mods | VOLO | Random | Gain |
|---|---|---|---|---|
| issue-225_2026-09-22 | 527 | 98.5 | 50.3 | 48.2 |
| issue-229_2026-09-26 | 103 | 97.4 | 52.8 | 44.6 |
| issue-181_2026-09-12.lsx | 87 | 96.2 | 52.5 | 43.7 |
| issue-150_2026-09-01 | 160 | 91.0 | 50.3 | 40.7 |
| issue-184_2026-09-13 | 32 | 99.4 | 58.7 | 40.7 |
The ten most recent
Newest submissions first, which is the part of the corpus that has had the least chance to influence the rules it is being scored against.
| Order | Mods | VOLO | Random | Gain |
|---|---|---|---|---|
| issue-232_2026-09-29 | 270 | 59.2 | 52.6 | 6.6 |
| issue-229_2026-09-26 | 103 | 97.4 | 52.8 | 44.6 |
| issue-227_2026-09-23 | 98 | 68.7 | 51.2 | 17.5 |
| issue-225_2026-09-22 | 527 | 98.5 | 50.3 | 48.2 |
| issue-222_2026-09-21.lsx | 101 | 69.3 | 54.2 | 15.1 |
| issue-218_2026-09-20 | 225 | 80.1 | 50.9 | 29.2 |
| issue-211_2026-09-16.lsx | 60 | 58.7 | 52.4 | 6.3 |
| issue-206_2026-09-15 | 31 | 55.1 | 55.3 | -0.2 |
| issue-204_2026-09-14.lsx | 397 | 62.0 | 49.9 | 12.1 |
| issue-183_2026-09-13 | 170 | 60.0 | 52.2 | 7.8 |
All 106 scored orders
| Order | Mods | VOLO | Random | Gain |
|---|---|---|---|---|
| issue-122_2026-08-21.lsx | 1647 | 72.3 | 48.0 | 24.3 |
| issue-39_2026-08-09 | 1616 | 76.5 | 49.3 | 27.2 |
| issue-92_2026-08-14 | 1463 | 50.6 | 49.8 | 0.8 |
| issue-34_2026-08-09 | 1191 | 73.1 | 49.2 | 23.9 |
| issue-128_2026-08-22 | 1068 | 77.5 | 50.3 | 27.2 |
| 07062025 | 999 | 68.1 | 49.5 | 18.6 |
| issue-33_2026-08-09 | 945 | 68.8 | 49.8 | 19.0 |
| issue-79_2026-08-12 | 872 | 69.8 | 49.7 | 20.1 |
| issue-70_2026-08-11 | 870 | 69.8 | 48.3 | 21.5 |
| issue-68_2026-08-11 | 866 | 69.7 | 49.7 | 20.0 |
| issue-26_2026-08-09 | 845 | 69.5 | 49.0 | 20.5 |
| issue-31_2026-08-09 | 839 | 71.1 | 50.2 | 20.9 |
| issue-82_2026-08-12 | 803 | 67.0 | 50.3 | 16.7 |
| issue-114_2026-08-18 | 760 | 66.0 | 51.6 | 14.4 |
| issue-74_2026-08-12 | 747 | 64.5 | 51.8 | 12.7 |
| issue-16_2026-08-09 | 736 | 64.4 | 50.1 | 14.3 |
| issue-42_2026-08-10 | 726 | 77.7 | 49.8 | 27.9 |
| Current_13.09.2025_19-06-00 | 704 | 56.9 | 50.3 | 6.6 |
| issue-124_2026-08-21 | 675 | 69.9 | 49.9 | 20.0 |
| issue-178_2026-09-11 | 659 | 75.3 | 49.6 | 25.7 |
| issue-131_2026-08-25 | 618 | 67.6 | 48.6 | 19.0 |
| issue-102_2026-08-16 | 596 | 74.3 | 51.0 | 23.3 |
| issue-51_2026-08-10 | 574 | 65.3 | 50.9 | 14.4 |
| issue-144_2026-08-31 | 566 | 72.2 | 49.6 | 22.6 |
| issue-35_2026-08-09.lsx | 564 | 57.4 | 50.3 | 7.1 |
| issue-78_2026-08-12 | 539 | 76.2 | 49.0 | 27.2 |
| issue-225_2026-09-22 | 527 | 98.5 | 50.3 | 48.2 |
| issue-69_2026-08-11 | 519 | 76.1 | 51.0 | 25.1 |
| issue-38_2026-08-09 | 489 | 69.8 | 49.2 | 20.6 |
| issue-91_2026-08-13 | 468 | 64.7 | 51.5 | 13.2 |
| issue-25_2026-08-09 | 464 | 55.3 | 50.8 | 4.5 |
| issue-17_2026-08-09 | 462 | 77.2 | 50.1 | 27.1 |
| issue-12_2026-08-09 | 441 | 53.9 | 49.8 | 4.1 |
| Current_Working_Order | 434 | 55.5 | 50.4 | 5.1 |
| issue-24_2026-08-09 | 434 | 79.0 | 50.4 | 28.6 |
| issue-21_2026-08-09 | 432 | 72.7 | 51.4 | 21.3 |
| Patch 8 - Origin Custom (Lvl 20) | 422 | 53.4 | 52.0 | 1.4 |
| issue-37_2026-08-09 | 422 | 64.8 | 52.0 | 12.8 |
| Patch 8 - Origin Custom | 419 | 53.0 | 50.4 | 2.6 |
| issue-204_2026-09-14.lsx | 397 | 62.0 | 49.9 | 12.1 |
| issue-165_2026-09-08 | 395 | 60.1 | 48.8 | 11.3 |
| issue-15_2026-08-09 | 394 | 55.8 | 50.2 | 5.6 |
| issue-123_2026-08-20 | 393 | 57.4 | 49.2 | 8.2 |
| Patch 8 - Vanilla+ | 379 | 52.9 | 49.1 | 3.8 |
| issue-43_2026-08-10 | 362 | 63.3 | 51.8 | 11.5 |
| issue-52_2026-08-10 | 361 | 63.0 | 50.4 | 12.6 |
| issue-132_2026-08-25 | 345 | 60.2 | 48.9 | 11.3 |
| issue-50_2026-08-10 | 344 | 69.6 | 49.8 | 19.8 |
| issue-13_2026-08-09 | 329 | 52.6 | 50.6 | 2.0 |
| issue-48_2026-08-10 | 329 | 57.4 | 50.6 | 6.8 |
| issue-72_2026-08-12 | 326 | 68.4 | 53.2 | 15.2 |
| issue-73_2026-08-12 | 319 | 67.8 | 52.3 | 15.5 |
| issue-118_2026-08-19 | 306 | 73.7 | 50.6 | 23.1 |
| issue-180_2026-09-12 | 305 | 64.6 | 49.8 | 14.8 |
| New8 | 297 | 83.1 | 51.9 | 31.2 |
| issue-22_2026-08-14 | 294 | 69.6 | 50.5 | 19.1 |
| issue-11_2026-08-08 | 286 | 58.3 | 53.6 | 4.7 |
| issue-125_2026-08-21 | 270 | 79.5 | 52.6 | 26.9 |
| issue-232_2026-09-29 | 270 | 59.2 | 52.6 | 6.6 |
| issue-133_2026-08-25 | 269 | 65.9 | 51.9 | 14.0 |
| issue-89_2026-08-13 | 244 | 84.6 | 46.5 | 38.1 |
| issue-96_2026-08-14 | 231 | 53.1 | 50.1 | 3.0 |
| issue-218_2026-09-20 | 225 | 80.1 | 50.9 | 29.2 |
| Gamer Time | 203 | 56.1 | 46.3 | 9.8 |
| issue-154_2026-09-03 | 202 | 83.2 | 49.0 | 34.2 |
| issue-106_2026-08-17 | 197 | 59.0 | 50.9 | 8.1 |
| issue-147_2026-09-01 | 186 | 81.1 | 52.4 | 28.7 |
| issue-183_2026-09-13 | 170 | 60.0 | 52.2 | 7.8 |
| issue-41_2026-08-09 | 168 | 53.6 | 52.5 | 1.1 |
| issue-126_2026-08-22 | 161 | 63.9 | 49.2 | 14.7 |
| issue-150_2026-09-01 | 160 | 91.0 | 50.3 | 40.7 |
| issue-103_2026-08-16.lsx | 153 | 87.3 | 51.2 | 36.1 |
| issue-18_2026-08-09 | 146 | 65.3 | 53.0 | 12.3 |
| issue-71_2026-08-11.lsx | 146 | 84.7 | 53.0 | 31.7 |
| issue-163_2026-09-08 | 143 | 86.1 | 50.7 | 35.4 |
| issue-84_2026-08-12 | 134 | 79.8 | 49.9 | 29.9 |
| issue-10_2026-08-08 | 126 | 58.1 | 49.0 | 9.1 |
| issue-111_2026-08-17 | 120 | 57.7 | 48.8 | 8.9 |
| issue-88_2026-08-13 | 116 | 83.4 | 49.7 | 33.7 |
| issue-117_2026-08-19 | 103 | 79.2 | 52.8 | 26.4 |
| issue-229_2026-09-26 | 103 | 97.4 | 52.8 | 44.6 |
| issue-222_2026-09-21.lsx | 101 | 69.3 | 54.2 | 15.1 |
| issue-227_2026-09-23 | 98 | 68.7 | 51.2 | 17.5 |
| issue-194_2026-09-13 | 96 | 86.8 | 49.9 | 36.9 |
| issue-201_2026-09-13 | 90 | 58.6 | 48.7 | 9.9 |
| issue-107_2026-08-17.lsx | 89 | 58.4 | 48.7 | 9.7 |
| issue-112_2026-08-17 | 89 | 55.4 | 48.7 | 6.7 |
| issue-181_2026-09-12.lsx | 87 | 96.2 | 52.5 | 43.7 |
| issue-30_2026-08-09.lsx | 87 | 56.9 | 52.5 | 4.4 |
| issue-29_2026-08-09 | 83 | 67.4 | 51.0 | 16.4 |
| issue-40_2026-08-09 | 83 | 55.7 | 51.0 | 4.7 |
| issue-116_2026-08-18 | 80 | 68.3 | 52.5 | 15.8 |
| issue-151_2026-09-01 | 77 | 62.4 | 53.0 | 9.4 |
| issue-14_2026-08-09.lsx | 68 | 65.8 | 54.3 | 11.5 |
| issue-53_2026-08-10 | 66 | 59.3 | 52.8 | 6.5 |
| issue-177_2026-09-11.lsx | 61 | 56.9 | 50.4 | 6.5 |
| issue-211_2026-09-16.lsx | 60 | 58.7 | 52.4 | 6.3 |
| issue-1_2026-08-04 | 59 | 53.4 | 55.5 | -2.1 |
| issue-127_2026-08-22 | 51 | 55.8 | 52.5 | 3.3 |
| issue-146_2026-08-31 | 49 | 69.3 | 49.3 | 20.0 |
| Current_22.11.2025_10-32-17(1) | 41 | 64.5 | 51.2 | 13.3 |
| issue-184_2026-09-13 | 32 | 99.4 | 58.7 | 40.7 |
| issue-206_2026-09-15 | 31 | 55.1 | 55.3 | -0.2 |
| issue-67_2026-08-13 | 31 | 58.3 | 55.3 | 3.0 |
| issue-90_2026-08-13 | 27 | 63.5 | 50.7 | 12.8 |
| issue-66_2026-08-11 | 22 | 53.7 | 52.8 | 0.9 |
Things that sounded sensible and were not
Most of what was tried made the sort worse. Recording the failures is the only way to stop them being tried again. Each figure below is against the baseline of its own run, from an older scoring pass, so the pairs compare with each other and not with the headline above; where only a cost in points is given, that cost is against the same run it was measured in.
- Filing unknown mods near their neighbours
- Instead of sending an unplaced mod to the end, give it the position of the last known mod above it. Scored 61.8 against 63.6. Mods nobody has categorised really do pile up at the end of real load orders, so the tool leaves them there.
- Adopting the divider order wholesale
- Throwing out the learned sequence and using the community divider numbering for everything scored 60.4 against 63.6.
- Reading categories out of divider names
- The divider set names a hundred things the categories do not, so using those labels to place otherwise unreachable mods looked free. It placed 67 mods and cost 0.7 points.
- Trusting the mod's own listing
- Using the Nexus or mod.io category for mods the community has never placed cost 0.6 points, and it was rejected on that basis. Then it was adopted anyway. The measurement was answering the wrong question, which is the next section.
Why the score is not the goal
The test scores VOLO against orders that already work. That quietly rewards doing nothing: leave every mod exactly where the player put it and you score perfectly, while sorting nothing at all. Any real change costs points before it earns them back.
It also flatters ignorance. A mod dumped at the end because the tool knows nothing about it scores well, precisely because unplaced mods cluster at the end anyway. That says something about the corpus, not about whether the sort is useful to you.
So when the community divider structure was adopted, the score fell from 60.3 to 57.5 and it was adopted regardless. Mods on a known position went from 967 of 3,008 to 2,662, and mods with no category at all fell from 650 to 338. The exported order gained headings a player can read. That was judged worth more than three points on a metric fitted to nine files.
The limits
106 scored orders is a small corpus, and it is the thing holding the tool back rather than the sorting itself. The headline carries about 1.1 points of uncertainty on that sample, and it would take something like 510 scored orders to bring that under half a point.
Orders also arrive anonymously, which is deliberate but costs something here: there is no way to know how many different people are behind them, so what reads as 106 independent opinions may be fewer. Every measurement on this page should be read with that in mind.
The automated tests parse VOLO's own output with VOLO's own parser, which proves the tool is consistent with itself and nothing more. Exported orders have been loaded in Baldur's Gate 3 by hand and worked, but that is a manual check, not something the test suite can promise you.
If you have played on an order, submitting it moves these numbers more than any change to the code would.