The previous articles in this series set the boundary conditions: About 77.5% of combat casualties in Ukraine are caused by fragments and blast, roughly 15% by mines, and only around 2-3% by small arms. Evacuation to surgery is often measured in hours rather than minutes, if not days rather than hours.
This has caused the development and deployment of body armor to shift. Whereas the GWOT paradigm emphasized protection against old Soviet rifle threats — something absolutely exemplified in the ECH and IHPS helmets — soldiers in Ukraine, on both sides, are pursuing advances in soft armor surface area and ergonomics, with rifle-threat ratings practically an afterthought.
The threat, in practical terms
The above is perfectly rational in light of the characteristics of the fragment threat. Today’s 155mm-and-equivalent HE artillery shells have a lethal blast radius of roughly 10-20 yards. (For e.g., the old M107 shell, ~7kg TNT equivalent.) What this means is that if you’re standing within 20 yards of an exploding 155mm shell, you’ll be killed or thoroughly incapacitated on account of blast overpressure effects, e.g. lung injury. So unless you’re wearing a sealed bomb suit, you don’t need to worry too much about fragment velocities from 0-20 yards; it’s not the fragments that are going to turn you into a casualty.
And though fragments travel very quickly at the point of detonation — around 4200 feet per second on average — supersonic fragments decelerate rapidly in air. Most are low-density, irregularly shaped, and subject to severe turbulence-induced drag. By twenty yards, they’ve shed roughly half their velocity. By forty yards, they’re usually moving at around or under 1600 feet per second.
Once you get a little bit past those forty yards, fragments are generally more likely to injure than to kill because they’ve already shed the majority of their energy. By the time fragments reach people in the danger zone between 50 and 100 yards, they’re arriving at shallow, almost horizontal angles and are typically moving in the subsonic to low‑supersonic band, not at the extreme velocities you see in spec sheets. The standard “safety distance” for this kind of event — the range where you’d expect no more than one truly hazardous fragment over a squad-sized patch of ground — works out to roughly 100 yards.

In everyday terms: The average fragment that actually hits someone is small and already slowed down — and it’s as likely to strike a limb or forehead as it is to strike center mass — which is why wide‑area, fragment‑soaking protection matters more to most soldiers than chasing ultra‑high V50 numbers.
In fact, the statistically average steel fragment weighs 10-20 grains and strikes at about 1000 feet per second. Tungsten fragments tend to do a better job of retaining velocity, but the average strike still happens at a relatively low sub-2000 fps velocity. And I’d add that data from Cunniff et al. suggests that, at an equal grain weight and velocity, tungsten fragments are not harder for soft armor to catch.
What troops actually wear and use
Thus the paradigm in Ukraine, on both sides, is one of increased coverage: Soft armor collars and yokes, deltoids and upper arms, lower abdomen and groin, and, in high‑risk tasks, thighs. This responds directly to the pre-war problem that most penetrations landed outside plate footprints, with on‑plate defeats a minority of cases. Increased coverage is a better match for a battlefield where fragments and blast dominate and where junctional hemorrhage is dangerous because evacuation is slow.

Broadly speaking, both sides anticipated this — to an extent. Ratnik‑era vests already supported collars, groin flaps, and assault add‑ons. Now wartime kits push further into deltoids and thighs, with pelvic protection normalized for assault roles. Engineers field heavier anti‑mine footwear where scatterable munitions and FPV‑delivered charges are common. Line units run wide soft‑armor envelopes with mid‑rating plates; assault detachments accept heavier lower‑body and face or neck modules for short, violent tasks in trenches, basements, and stairwells. That split by role mirrors the wound distribution reported in Russian clinical summaries and the long, hazardous evacuation chain that Part II described.
A parallel move is in squad-portable ballistic blankets. Troops use them to thicken overheads in trenches, to cover apertures during shelling, to make improvised “armored vehicles,” to block drone vision, and to protect equipment or litter teams when they cannot wear yet more armor for every movement. They are not rifle stoppers, and in most cases aren’t even NIJ IIIA/HG2, but they can soak up the fragments that cause most wounds. They’re adaptable, versatile “mobile cover” that travel with the unit rather than the individual. Given the nature of the war’s threat environment, a few blankets per squad are evidently worth much more than their weight.
Helmets: Coverage and realism over bragging rights
There’s also a rising challenge to the status quo on helmets. For quite a while now, Ukrainian combatants have been saying that the right daily‑wear helmet for this war is a lightweight, ACH‑style shell with generous coverage and ACH-grade ballistic performance. As with soft body armor, what’s needed is a combination of coverage and practicality. Extremely high 17‑grain FSP V50s and “stops 7.62x39mm mild steel core” claims do not buy survivability for the average soldier – and, if they make the helmet just a pound heavier, that’s a trade-off that’s difficult or impossible to justify. As we’ve reviewed above, there’s practically no such thing as a fragment that’s moving at 3,000 to 4,000 ft/s when it meets the head — unless you’re right on top of the blast, in which case the blast itself is what’s most dangerous. What’s more, rifle threats in the field (and indeed in all conceivable peer or near-peer conflicts) are commonly steel-cored bullets that defeat all composite helmet shells at all practical distances, whether they’re “rifle rated” or not!
Lessons for command and procurement
If artillery, FPVs, mortars, and glide bombs keep defining contact, body armor procurement and utilization should lock-in three choices. First, pay for area. Put soft armor on the surfaces that are most vulnerable and on the angles fragments actually arrive from, and issue ballistic blankets at the squad level by default.
Second, right‑size the helmet. Choose a large, light shell with realistic fragment performance and add rifle appliqués only where the geometry and role pay back their weight.
Third, test what the battlefield actually produces. Calibrate armor tests to the two dominant arrival patterns. For trench and overhead burst, include a downward obliquity limb (30–60 degrees from horizontal), which pushes value into yokes, deltoids, and upper laterals. For mortars, grenades, drone-drops, and FPV attacks that detonate at or near ground level — or impact the ground before detonation — add a rising obliquity limb (about 10–45 degrees upward from horizontal), which drives protection into pelvis, groin, thighs, and shins. Populate bins that reflect the 20-100 yard regime where most hits occur: For example, 4, 16, and 64 grain fragments at transonic to low-supersonic speeds with the angle mix above.

A computable way to steer money toward effective coverage would be to employ a new formula for Area-Weighted Risk Coverage (AWRC). In plain terms, AWRC averages the probability that each armor surface prevents perforation across a realistic fragment distribution, and weights that by the surface area it actually covers for the role. You can compute it transparently in a spreadsheet from test data:
AWRC = ( sum_i A_i * sum_k w_k * S_i(m_k, v_k, theta_k) ) / ( sum_i A_i )
Where: regions i have areas A_i; fragment bins k (e.g., 4, 16, 64 grains at role-appropriate speeds and angles) have probabilities w_k; and S_i is the non-perforation probability for region i under bin k. To reflect real-world wear, include a utilization factor u_i for hours actually worn:
AWRC_use = ( sum_i (u_i * A_i) * sum_k w_k * S_i(m_k, v_k, theta_k) ) / ( sum_i A_i )
If S_i must be derived from V50 tables with dispersion sigma_i, use:
P_perforation = Ncdf( (v_k – V50_i(m_k, theta_k)) / sigma_i )
S_i = 1 – P_perforation
This method allows planners to estimate the most efficient deployment of armor based on realistic testing, present circumstances in the field, and recent military medical analysis.
Ultimately, these three recommendations encompass the numbers‑first read of the past three years, and align with both the casualty tables and the physics of fragment flight.
Appendix, AWRC Calculation Examples:
WORKED EXAMPLE 1 — LINE UNIT, TYPICAL 20–100 m FRAGMENT REGIME
Configs:
Config A present: front_plate, back_plate, sides_soft
Config B present: all listed regions
Areas (cm^2):
front_plate=750
back_plate=750
sides_soft=800
front_offplate=1000
back_offplate=1000
yoke=400
deltoids=800
pelvis=600
thighs=1000
Total area=7100
Fragment bins and weights:
k1: m=4 gr, v=450 m/s, w1=0.45
k2: m=16 gr, v=350 m/s, w2=0.35
k3: m=64 gr, v=250 m/s, w3=0.20
Dispersion:
sigma=30 m/s
Region V50 tables (m/s):
front_plate: k1=800, k2=650, k3=400
back_plate: k1=800, k2=650, k3=400
sides_soft: k1=500, k2=380, k3=240
front_offplate k1=500, k2=380, k3=240
back_offplate k1=500, k2=380, k3=240
yoke: k1=520, k2=400, k3=260
deltoids: k1=460, k2=350, k3=220
pelvis: k1=480, k2=360, k3=230
thighs: k1=440, k2=330, k3=210
Utilization u_i for AWRC_use:
Config A: front_plate=0.95, back_plate=0.95, sides_soft=0.90, others=0.00
Config B: front_plate=0.95, back_plate=0.95, sides_soft=0.90,
front_offplate=0.80, back_offplate=0.80, yoke=0.50,
deltoids=0.70, pelvis=0.40, thighs=0.20
Added mass and cost in B vs A:
torso_soft (front_offplate + back_offplate): mass=1.8 kg, cost=$600
yoke: mass=0.6 kg, cost=$150
deltoids: mass=0.8 kg, cost=$250
pelvis: mass=0.7 kg, cost=$200
thighs: mass=1.2 kg, cost=$300
Total added: mass=5.1 kg, cost=$1500
Step 1. Spot checks for S_i(k) from V50 and sigma
Example 1 (yoke, k1):
z=(450 – 520)/30 = -2.333333
P_perforation = Ncdf(-2.333333) = 0.009800
S_yoke(k1) = 1 – 0.009800 = 0.990200
Example 2 (deltoids, k2):
z=(350 – 350)/30 = 0.000000
P_perforation = 0.500000
S_delts(k2) = 0.500000
Example 3 (thighs, k3):
z=(250 – 210)/30 = 1.333333
P_perforation = 0.908789
S_thighs(k3) = 0.091211
Step 2. Region-level expected stopping E[S_i] (weighted by w1, w2, w3)
front_plate E[S]=1.000000
back_plate E[S]=1.000000
sides_soft E[S]=0.796853
front_offplate E[S]=0.796853
back_offplate E[S]=0.796853
yoke E[S]=0.904968
deltoids E[S]=0.490482
pelvis E[S]=0.649799
thighs E[S]=0.272863
Step 3. AWRC for Config A and B
AWRC = ( sum_i A_i * E[S_i] ) / 7100
Config A numerator:
front_plate 750*1.000000 = 750.000000
back_plate 750*1.000000 = 750.000000
sides_soft 800*0.796853 = 637.482616
Others 0
Numerator_A = 2137.482531
AWRC_A = 2137.482531 / 7100 = 0.301054
Config B numerator:
front_plate 750*1.000000 = 750.000000
back_plate 750*1.000000 = 750.000000
sides_soft 800*0.796853 = 637.482616
front_offplate 1000*0.796853 = 796.853271
back_offplate 1000*0.796853 = 796.853271
yoke 400*0.904968 = 361.987284
deltoids 800*0.490482 = 392.385958
pelvis 600*0.649799 = 389.879504
thighs 1000*0.272863 = 272.863235
Numerator_B = 5148.305054
AWRC_B = 5148.305054 / 7100 = 0.725113
Delta_AWRC = 0.725113 – 0.301054 = 0.424060
Delta_AWRC_per_kg = 0.424060 / 5.1 = 0.083149
Delta_AWRC_per_$K = 0.424060 / 1.5 = 0.282706
Step 4. AWRC_use with utilization penalties
AWRC_use = ( sum_i (u_i * A_i) * E[S_i] ) / 7100
Config A numerator_use:
front_plate 0.95*750*1.000000 = 712.500000
back_plate 0.95*750*1.000000 = 712.500000
sides_soft 0.90*800*0.796853 = 573.734355
Numerator_use_A = 1998.734273
AWRC_use_A = 1998.734273 / 7100 = 0.281512
Config B numerator_use:
front_plate 0.95*750*1.000000 = 712.500000
back_plate 0.95*750*1.000000 = 712.500000
sides_soft 0.90*800*0.796853 = 573.734355
front_offplate 0.80*1000*0.796853 = 637.482616
back_offplate 0.80*1000*0.796853 = 637.482616
yoke 0.50*400*0.904968 = 181.0 (361.987284/2) = 180.993642
deltoids 0.70*800*0.490482 = 274.391768
pelvis 0.40*600*0.649799 = 155.951802
thighs 0.20*1000*0.272863 = 54.572647
Numerator_use_B = 3939.887768
AWRC_use_B = 3939.887768 / 7100 = 0.554914
Delta_AWRC_use = 0.554914 – 0.281512 = 0.273402
Step 5. Marginal returns by module (each added to Config A alone)
Overall package (B minus A):
Delta_AWRC=0.424060, per kg=0.083149, per $K=0.282706
Module results (AWRC_with_module, Delta_AWRC, per_kg, per_$K):
torso_soft: (0.525520, 0.224466, 0.124703, 0.374110)
yoke: (0.352038, 0.050984, 0.084974, 0.339894)
pelvis: (0.355966, 0.054913, 0.078447, 0.274563)
deltoids: (0.356320, 0.055266, 0.069082, 0.221063)
thighs: (0.339485, 0.038431, 0.032026, 0.128105)