Ratings and results
Which items count as obtainable, how they are split into lists and weight thirds, how each item is scored and ranked, and what the rankings show, at full precision for game v1.4.8. For a plain-language version, see the equipment guide. The game formulas the scores are built on (damage after armor, body-part armor sums, encumbrance, stealth, loot) are on Armor and damage.
Content scopes: base (SandBoxCore, SandBox, StoryMode) and naval (base + NavalDLC). Slots: head, body, hands, legs, cape, shield, harness. The numbers in the tables and charts are computed by the Python model in src/bannerlord/equipment/.
At a glance
| Step | Rule |
|---|---|
| Obtainable | sold in shops (shop) or in a battle equipment set of a character of the scope (loot) |
| Lists | per mode (battle, civilian, stealth), culture and slot |
| Weight thirds | each list split at weight percentiles 33 / 67 into light, medium, heavy |
| Scores | stat sum per weight, slot-relative, damage saved, damage saved per kg, stealth total |
| Ranking | per (mode, culture, slot, third, score), score then stat sum descending, top N tie-inclusive |
Obtainable items
| Rule | Value |
|---|---|
shop |
is_merchandise absent or true |
loot |
not merchandise, in a battle equipment set of an NPCCharacter of the scope (troops and heroes): inline EquipmentRoster without civilian="true", or a referenced EquipmentRoster id whose reference and set are not equipmentType="Civilian"/"Stealth" |
| Dropped | multiplayer_item="true", tournament items, items only in civilian / stealth sets, in rosters no character references, or in mpcharacters.xml |
| Naval | NavalDLC items and rosters added; the 8 redefined base ids are Type-less patches (name, culture, weight) applied over the base item, armor stats kept; XSLT patches not applied |
How the game picks a looted item from a casualty is on What drops as loot.
Lists
| Dimension | Rule |
|---|---|
Mode civilian |
Civilian flag (ItemObject.IsCivilian, 0x400000) |
Mode stealth |
Stealth flag (ItemObject.IsStealthItem, 0x4000000) |
Mode battle |
all obtainable items |
| Culture | all plus one list per culture; neutral_culture is its own list |
No culture attribute |
in all and in the no_culture list |
| Thirds | weight percentiles 33 / 67 (inclusive quantiles); ties at a cut go to the lower third; lists with < 3 items are not split (third = all) |
Scores
Stat sum per slot (stealth mode adds stealth_factor):
| Slot | Stats |
|---|---|
| head, body, hands, legs, cape | head + body + arm + leg armor |
| shield | hit_points + shield_reach (XML weapon_length) |
| harness | body_armor |
| Score | Definition |
|---|---|
sum_per_weight |
stat sum / weight |
slot_relative |
Σ (stat / median of stat) / (weight / median weight); medians over the whole slot list (before thirds); stats with median 0 skipped; shields add shield_armor as a stat |
damage_saved |
armor slots: E(reference) - E(reference + item); harness: 1 - mean_fraction(body_armor) |
damage_saved_per_kg |
damage_saved / weight |
stealth_total |
stealth_factor; stealth mode only |
Weight 0: per-weight scores are blank; the item stays in absolute scores.
E(reference): expected damage fraction with the reference loadout of the item's slot and third.E(reference + item): the same with the item's head, body, arm and leg armor added to the reference.mean_fraction,E: defined in Expected damage.
Expected damage
mean_fraction(a) = mean over {cut, pierce, blunt} of raw(type, magnitude, a) / magnitude
E(armor) = Σ share[part] * mean_fraction(armor[part]) parts: head, torso, arms, legs
Defaults: magnitude 80; shares head 0.15, torso 0.55, arms 0.15, legs 0.15; damage types weighted equally.
raw(type, magnitude, a): damage after armorafor a hit oftypeandmagnitude, from Damage after armor.share[part]: the share of hits that land onpart.armor[part]: the armor sum of the loadout forpart: head armor for head, body armor for torso, arm armor for arms, leg armor for legs (see Body parts and armor sums).
The kit example ends with E for a naked character and the light, medium and heavy kits, times the magnitude.
Reference loadout
Per armor slot S (head, body, hands, legs, cape) in a given (mode, culture), third T:
reference(S, T) = Σ over other armor slots O: per-column median (head, body, arm, leg) of O's items
| Case | O's items used |
|---|---|
| O is split and has third T | O's third T |
| O is split and lacks third T | O's whole list |
O is unsplit (third = all) |
O's whole list |
| O has no items | zero contribution |
Shields and harness have no reference loadout.
Ranking
- Per (mode, culture, slot, third, score): key (score, stat sum) descending, then weight ascending, then id.
- Items with a blank score are dropped.
- Top N (default 5) is tie-inclusive: items with the same (score, stat sum) as the N-th are kept.
rankis a competition rank (1, 1, 3, ...).
Results
The tables below use the naval scope and culture all. Battle and civilian picks are ranked by damage_saved, shown as a percent; stealth picks by stealth_total. Every list, culture and score is browsable in the Armory.
Distributions
Five histograms of item counts per armor sum (head + body + arm + leg armor) in bins of 5, base game with the NavalDLC additions stacked on top. Head: 249 items in the base game, 274 with NavalDLC, armor sums 0 to 59, tallest bin 45 to 49 (43 base, 45 naval). Body: 242 and 268, armor sums 0 to 99, tallest bin 5 to 9 (43 base, 45 naval). Hands: 35 and 44, armor sums 0 to 29, tallest bin 20 to 24 (11 base, 13 naval). Legs: 39 and 46, armor sums 0 to 29, tallest bin 5 to 9 (20 base, 22 naval). Cape: 91 and 107, armor sums 0 to 29, tallest bin 10 to 14 (25 base, 29 naval).
Scatter chart of the 268 body armors in the naval scope, battle mode: weight from 0.2 to 28.6 against body armor from 0 to 57. Dashed lines at weight 1.2 and 8.3 split the light third (92 items), medium third (89) and heavy third (87). Ringed dots are the top 3 per third by damage saved: light Woodland Garments (weight 1.2, body armor 14), Old Fur Armor (0.9, 12), Layered Leather Tunic (1.2, 11); medium Heavy Lamellar Vest (8.3, 35), Leather Strips over Padded Robe (5.5, 36), Thick Brigandine Vest (4.5, 34); heavy Heavy Scale Armor over Mail Hauberk (21.4, 57), Heavy Mastercrafted Northern Armor (26, 55), Lamellar with Scale Skirt (24.1, 52).
The light-medium cut sits at 1.2 and Woodland Garments weighs 1.2: ties at a cut go to the lower third, so it is a light item.
Slot impact
Bar chart of damage saved by the best item in each armor slot per weight third (naval scope, battle mode), light, medium and heavy: head 8.89%, 9.68%, 10.53%; body 15.97%, 29.21%, 38.52%; hands 4.46%, 4.57%, 4.50%; legs 2.57%, 4.61%, 4.65%; cape 16.26%, 15.06%, 10.35%.
Each bar is measured against the reference loadout of its own third, so bars of different thirds use different references.
Best picks
Best item per mode, slot and weight third (naval items, all cultures). Damage saved: percent of an average hit of 80 the item removes, worn with median items of its third in the other slots. Stealth: the item's stealth factor.
| Mode | Slot | Third | Item | Weight | Score |
|---|---|---|---|---|---|
| Battle | Head | Light | Berserker Helmet | 2 | 8.89 |
| Battle | Head | Medium | Heavy Nasalhelm over Padding | 3 | 9.68 |
| Battle | Head | Heavy | Closed Huscarl Helmet | 4.4 | 10.53 |
| Battle | Body | Light | Woodland Garments | 1.2 | 15.97 |
| Battle | Body | Medium | Heavy Lamellar Vest | 8.3 | 29.21 |
| Battle | Body | Heavy | Heavy Scale Armor over Mail Hauberk | 21.4 | 38.52 |
| Battle | Hands | Light | Fian Bracers | 0.6 | 4.46 |
| Battle | Hands | Medium | Bronze Bracers | 1.3 | 4.57 |
| Battle | Hands | Heavy | Reinforced Northern Mail Mittens | 1.7 | 4.50 |
| Battle | Legs | Light | Folded Leather Boots | 0.9 | 2.57 |
| Battle | Legs | Medium | Reinforced Suede Boots | 1 | 4.61 |
| Battle | Legs | Heavy | Scaled Boots | 2.6 | 4.65 |
| Battle | Cape | Light | Scale Shoulderguards | 1.7 | 16.26 |
| Battle | Cape | Medium | Northmen Raider Heavy Fur Cape | 2.3 | 15.06 |
| Battle | Cape | Heavy | Berserker Cloak | 3.8 | 10.35 |
| Civilian | Head | Light | Padded Cap | 0.2 | 3.24 |
| Civilian | Head | Medium | Lightweight Padded Coif | 0.5 | 3.96 |
| Civilian | Head | Heavy | Luxury Turban Over Helmet | 2.8 | 8.89 |
| Civilian | Body | Light | Sleeveless Studded Fur Armor | 0.4 | 12.61 |
| Civilian | Body | Medium | Light Long Padded Armor | 1.3 | 17.95 |
| Civilian | Body | Heavy | Norse Chainmail | 16 | 30.70 |
| Civilian | Hands | Light | Leather Vambraces | 0.5 | 3.38 |
| Civilian | Hands | Medium | Fian Bracers | 0.6 | 4.35 |
| Civilian | Hands | Heavy | Northmen Raider Wrist Guards | 1.2 | 3.47 |
| Civilian | Legs | Light | Northern Raider Boots | 0.4 | 2.05 |
| Civilian | Legs | Medium | Reinforced Suede Boots | 1 | 4.85 |
| Civilian | Legs | Heavy | Majestic Iron Boots | 2 | 4.85 |
| Civilian | Cape | Light | Woven Shoulder Pad | 0.3 | 3.51 |
| Civilian | Cape | Medium | Northern Majestic Shoulder | 1 | 10.17 |
| Civilian | Cape | Heavy | Northmen Raider Heavy Fur Cape | 2.3 | 15.34 |
| Stealth | Head | Light | Blackened Hood | 0.4 | 25 |
| Stealth | Head | Medium | Thick Fur Hood | 0.6 | 10 |
| Stealth | Head | Heavy | Raider Fur Helmet | 0.8 | 15 |
| Stealth | Body | Light | Leather Armor over Heavy Cloth | 1.8 | 20 |
| Stealth | Body | Medium | Sloven Leather | 2.9 | 20 |
| Stealth | Body | Heavy | Blackened Armor | 5 | 30 |
| Stealth | Hands | Light | Padded Vambraces | 0.1 | 10 |
| Stealth | Hands | Medium | Guarded Armwraps | 0.4 | 5 |
| Stealth | Hands | Heavy | Plated Leather Vambraces | 1.7 | 10 |
| Stealth | Legs | Light | Wrapped Shoes | 0.8 | 15 |
| Stealth | Legs | Medium | Blackened Boots | 1 | 20 |
| Stealth | Legs | Heavy | Tied Leather Boots | 1.8 | 15 |
| Stealth | Cape | Light | Fringed Cape | 0.25 | 10 |
| Stealth | Cape | Medium | Leather Shoulder Guard | 0.6 | 10 |
| Stealth | Cape | Heavy | Blackened Cape | 0.85 | 15 |
DLC changes
Best picks that change with the naval DLC (all cultures). Damage saved: percent of an average hit of 80 the item removes, worn with median items of its third in the other slots. Stealth: the item's stealth factor.
| Mode | Slot | Third | Base pick | Base score | Naval pick | Naval score |
|---|---|---|---|---|---|---|
| Battle | Head | Light | Brass Turbaned Helmet with Leather Flaps | 8.18 | Berserker Helmet | 8.89 |
| Battle | Body | Light | Old Fur Armor | 13.35 | Woodland Garments | 15.97 |
| Battle | Body | Medium | Leather Strips over Padded Robe | 28.56 | Heavy Lamellar Vest | 29.21 |
| Battle | Hands | Heavy | Mail Mittens with Plate Guard | 4.50 | Reinforced Northern Mail Mittens | 4.50 |
| Battle | Cape | Medium | Mail Shoulder Guards | 7.91 | Northmen Raider Heavy Fur Cape | 15.06 |
| Battle | Cape | Heavy | Reinforced Ornate Pauldrons over Scale | 9.36 | Berserker Cloak | 10.35 |
| Civilian | Head | Medium | Leather Coif | 2.73 | Lightweight Padded Coif | 3.96 |
| Civilian | Body | Medium | Old Fur Armor | 13.30 | Light Long Padded Armor | 17.95 |
| Civilian | Body | Heavy | Bronze Breastplate | 33.69 | Norse Chainmail | 30.70 |
| Civilian | Hands | Light | Guarded Armwraps | 2.12 | Leather Vambraces | 3.38 |
| Civilian | Hands | Medium | Leather Vambraces | 3.29 | Fian Bracers | 4.35 |
| Civilian | Hands | Heavy | Fian Bracers | 4.24 | Northmen Raider Wrist Guards | 3.47 |
| Civilian | Legs | Light | Strapped Shoes | 1.51 | Northern Raider Boots | 2.05 |
| Civilian | Legs | Heavy | Leather Riding Boots | 1.59 | Majestic Iron Boots | 4.85 |
| Civilian | Cape | Light | Cotton Hood | 2.48 | Woven Shoulder Pad | 3.51 |
| Civilian | Cape | Medium | Woven Shoulder Pad | 3.35 | Northern Majestic Shoulder | 10.17 |
| Civilian | Cape | Heavy | Leopard Pelt | 4.48 | Northmen Raider Heavy Fur Cape | 15.34 |
| Stealth | Head | Medium | Thinhide Coif | 5 | Thick Fur Hood | 10 |
| Stealth | Head | Heavy | Tight Head Scarf | 15 | Raider Fur Helmet | 15 |
A row where both scores are equal is a tie broken by the ranking key (stat sum, weight, id), not an upgrade. Scores are not comparable across scopes: the naval items change the weight cuts and the medians of the reference loadout, so a naval score can be lower than the base one.
Old picks
Earlier compendium picks re-ranked (naval items, all cultures, the pick's own weight third). Position 1 is the best; tied scores share a position. Damage saved: percent of an average hit of 80 the item removes, worn with median items of its third in the other slots. Stealth: the item's stealth factor.
| Mode | Slot | Item | Third | Position | Items in third | Score | Best in third | Best score |
|---|---|---|---|---|---|---|---|---|
| Battle | Cape | Long Sleeved Bronze Scale Shoulder Guards | Light | 1 | 39 | 16.26 | Scale Shoulderguards | 16.26 |
| Civilian | Cape | Leopard Pelt | Heavy | 7 | 7 | 4.47 | Northmen Raider Heavy Fur Cape | 15.34 |
| Stealth | Head | Tight Head Scarf | Heavy | 1 | 5 | 15 | Raider Fur Helmet | 15 |
| Stealth | Legs | Wrapped Shoes | Light | 1 | 6 | 15 | Wrapped Shoes | 15 |
| Battle | Body | Bronze Breastplate | Heavy | 34 | 87 | 28.93 | Heavy Scale Armor over Mail Hauberk | 38.52 |
| Civilian | Hands | Fian Bracers | Medium | 1 | 5 | 4.35 | Fian Bracers | 4.35 |
| Battle | Head | Warlord Helmet | Heavy | 4 | 80 | 10.29 | Closed Huscarl Helmet | 10.53 |
| Battle | Body | Thick Brigandine Vest | Medium | 3 | 89 | 26.58 | Heavy Lamellar Vest | 29.21 |
| Battle | Body | Heavy Scale Armor over Mail Hauberk | Heavy | 1 | 87 | 38.52 | Heavy Scale Armor over Mail Hauberk | 38.52 |
| Stealth | Hands | Plated Leather Vambraces | Heavy | 1 | 3 | 10 | Plated Leather Vambraces | 10 |
| Battle | Legs | Reinforced Suede Boots | Medium | 1 | 11 | 4.61 | Reinforced Suede Boots | 4.61 |
| Stealth | Cape | Leather Shoulder Guard | Medium | 1 | 5 | 10 | Leather Shoulder Guard | 10 |
| Stealth | Hands | Padded Vambraces | Light | 1 | 3 | 10 | Padded Vambraces | 10 |
| Stealth | Body | Leather Armor over Heavy Cloth | Light | 1 | 6 | 20 | Leather Armor over Heavy Cloth | 20 |
| Stealth | Body | Sloven Leather | Medium | 1 | 5 | 20 | Sloven Leather | 20 |
| Stealth | Legs | Tied Leather Boots | Heavy | 1 | 2 | 15 | Tied Leather Boots | 15 |
| Stealth | Legs | Tied Boots | Heavy | 1 | 2 | 15 | Tied Leather Boots | 15 |
| Battle | Body | Heavy Mail Hauberk | Heavy | 43 | 87 | 27.93 | Heavy Scale Armor over Mail Hauberk | 38.52 |
| Battle | Cape | Scale Shoulderguards | Light | 1 | 39 | 16.26 | Scale Shoulderguards | 16.26 |
| Battle | Hands | Splint Vambraces | Medium | 3 | 14 | 4.24 | Bronze Bracers | 4.57 |
| Battle | Head | Closed Knight Helmet | Medium | 9 | 97 | 9.29 | Heavy Nasalhelm over Padding | 9.68 |
| Battle | Head | Knight Helmet with Bronze Faceguard | Medium | 12 | 97 | 9.16 | Heavy Nasalhelm over Padding | 9.68 |
| Civilian | Head | Open Padded Coif | Heavy | 3 | 11 | 3.96 | Luxury Turban Over Helmet | 8.89 |
Position counts only items with a higher score, so a pick at position 1 can share its score with a different "best in third" item, which won the ranking tie-break.
Caveats
- Scores assume a hit of magnitude 80 with hit shares head 0.15, torso 0.55, arms 0.15, legs 0.15 and the three damage types weighted equally;
exporttakes other values via--magnitudeand--hit-shares. - NavalDLC's Mariner perk penetration (
CalculateAdjustedArmorForBlow) is not modelled. - XSLT patches are not applied.
- Weight thirds are per list: the same item weight can fall in different thirds in different lists.
Game code
IL for the item flags on this page, decoded from game v1.4.8 with the steps in How the findings were reversed:
- ItemObject.il:
IsCivilian,IsStealthItem. - SandboxStrikeMagnitudeModel.il:
ComputeRawDamage, therawin Expected damage.
IL for loot, body-part armor, encumbrance and stealth: Armor and damage, Game code.
Reproducing
uv run python -m scripts.equipment.sync_xml # copies ModuleData XML into xml/v<version>/; no-op if present (--force recopies)
uv run python -m scripts.equipment.export # -> data/equipment/v1.4.8/{items,best}_{base,naval}.csv
export options: --version, --xml-root, --out-dir, --top-n (5), --magnitude (80), --hit-shares (0.15,0.55,0.15,0.15 = head, torso, arms, legs). It reads only xml/v<version>/. Code: src/bannerlord/equipment/. CSVs are gitignored.
| File | Content |
|---|---|
items_<scope>.csv |
every obtainable item, all fields, source, third, scores; battle mode, culture all, the item's own third |
best_<scope>.csv |
top N per mode, culture, slot, third, ranked_by; columns rank, item fields, all scores |
xml/v<ver>/<module>/ModuleData --ItemLoader--> [Item]
--AvailabilityResolver(scope)--> obtainable [Item] + source
x mode filter x culture filter x slot --> list
list --weight thirds--> light | medium | heavy
third x Scorer --> score columns --> rank per scorer --> top N
The tables and charts on this page and on Armor and damage are built from a committed snapshot of the obtainable items:
uv run python -m scripts.equipment.export --docs-json src/bannerlord/equipment/data/v1.4.8/obtainable.json # obtainable-items snapshot (both scopes)
uv run python -m scripts.docs.examples.equipment # regenerate web/src/data and docs/snippetsChangelog
- v1.4.8 (2026-11-11): Moved from equipment ratings page; facts unchanged.