Point-blank, direct-angle hits
Hover a “Dmg/shot” cell for the damage maths, or a “Kill” cell for TTK, magazines and throughput detail. Shot counts assume every shot hits the same part.
Fewest shots aimed at one part that kill the enemy (fatal-part destruction or main-health depletion). Parts no selected weapon can kill through are omitted.
Every enemy in the current faction filter against the selected weapons, using each enemy's best part, the one that kills in the fewest shots. Click a column head to sort. With two or more weapons, the leader in each column is highlighted like this, scored per column, so the weapon that needs the fewest shots is often not the one that kills fastest.
Every section below, collapsed by default: click a section's own title to expand it in place, or jump straight to it here.
The one-paragraph version of everything below: read this if you read nothing else.
These numbers are a ceiling: a stationary enemy, every shot on the same part, every pellet landing, direct angles, no misses and no incoming fire. Use them to compare weapons against each other, not to predict how long something will take in a real fight.
×2Upper Arms (2) is two arms, and the simulation moves to the next as each is destroyed. No repositioning time is charged.1,500+2,0006 +0.7s burn+Xs later. Fewer rounds, more seconds. Blank where stopping early never kills.What this calculator works out exactly, what it approximates, and what it cannot see at all. Every number elsewhere in the page is produced by the rules below; if one of them doesn't hold in your game, the number won't either.
Enemy and weapon stats scraped from helldivers.wiki.gg on - · - · ignite thresholds, exploded-target flags, stagger tiers, magazine variants and multi-mode fire rates are parsed from the game's own data files (refreshable per patch); Explosion and Fire/Gas damage entries scraped from the wiki's own attack tables and refresh with the roster. Reload duration has no published source at all and is dropped; see the How shots-to-kill and TTK are found card for what that means for a multi-magazine kill.
An explosion entry hits the main pool always, and the aimed part too where the wiki marks that part explosive-targetable, each scaled by its explosive resistance. Explosive damage is treated as fully durable, and armor still applies at the blast's own penetration.
The blast is a different pool from the part, and the table keeps them apart. A part's ExDR is how much explosion damage it shrugs off, and at 100% (every Devastator part, - of the - parts in the roster) it takes none: the wiki's rule is that the blast then targets main health instead. So “Dmg/shot” is what the part takes, because that is the number “Part” (shots to destroy) divides, and the blast is shown next to it as +N → main. This is why a weapon can read 0 damage against every part of an enemy and still carry a Kill number: the SG-8P Punisher Plasma's projectile does literally nothing (0 / 0 on the wiki) and its 225 blast kills a 750 HP Devastator in 4 shots, from any part you aim at.
Some weapons carry a third damage entry beyond the bullet and the blast: fragments thrown out of the impact point, or bomblets scattered by an airburst. None of it is counted. - in the roster carry some: -.
The reason is that the count is a ceiling, not an amount. Where 30 fragments go depends on the geometry of the impact and the target, and nothing in the data says how many of them land on the part you aimed at. Crediting all 30 of the Eruptor's would add 3,300 damage to a shot and one-shot most of the roster; crediting one is as arbitrary as crediting none, without being any more honest. So the shot counts for these weapons are a floor: the real weapon is better, most of all at close range where more of the spray connects. The full figures are listed on the weapon tile, marked not modelled, and named in the caveats panel whenever one of these weapons is selected, so the shortfall is visible rather than silent.
Stun entries are here for a different reason: they carry no damage at all, no enemy has a stun susceptibility in the data, and nothing in the simulation reacts to being stunned.
Every shot adds status strength × pellets to a buildup meter. At the enemy's guaranteed threshold the effect ignites and ticks against main health (scaled by that enemy's fire multiplier) for as long as the meter stays above zero; further hits top it up, so keeping something burning costs shots, and the simulation counts those shots. Three things in that sentence are assumptions:
threshold ÷ duration, the one rate that makes a bare ignition burn for exactly the effect's listed duration. That duration is per-weapon, not a constant, typically ~3 s for fire and ~6-10 s for gas (the TX-41 Sterilizer's Gas runs 10 s).min ≠ max (the Status Thresholds panel already shows this as 4 (from 3)), so for most enemies the simulated ignite point is a worst case, not the earliest it could plausibly happen.The thresholds themselves are parsed directly from the game's own StatusEffectSusceptibility data (not the wiki, which doesn't publish them) and are refreshed by rerunning the datamine after a patch. 10 enemies, mostly vehicles and structures (Annihilator Tank, Barrager Tank, Dropship, Gunship, Shredder Tank, Vox Engine, Illuminate Overship, Stingray, Warp Ship, Hive Lord), have no ignite data at all; there is no fallback for them, fire/gas simply never ignites. The gas cloud isn't modelled at all: no lingering area, no second enemy walking into it, no enemy walking out. Electricity and stun are display-only: the data carries no DoT numbers for electricity, and nothing in the model consumes a stun or a stagger.
A DoT damages main health only, and against main's armor. Not the armor of the part you aimed at: the wiki is explicit about this, and it has a large consequence: a burn kills straight through a part that every round bounces off. A Breaker Incendiary's AP2 pellets all ricochet off a Charger's AV4 head for nothing, but the fire tick is AP4 against an AV4 main, so it does 100 × 1.5 × 0.65 = 97.5 dps and the Charger dies in 13 trigger pulls. The tick is scaled by the enemy's own fire multiplier and by the same equal-armor 65% reduction as any other damage.
Fire and gas always count towards Kill and TTK. Until 2026-07-26 a three-way “DoT in kill” option defaulted to counting a burn only for weapons whose damage was the effect, a structural guess at a flag the data doesn't carry. It went for two reasons. First, excluding a lit burn produces shot counts that are simply wrong: if ballistics alone need 14 rounds but the fire already burning would finish the job after 13, you never need the 14th, and 178 rows shifted like that. Second, the case that justified the exclusion, the ricocheting Charger above, turned out to be correct game mechanics rather than a modelling artefact, so the option was hiding a real answer. One Fire/gas DoT setting remains, for stripping the burn out to check raw ballistics; the DoT is simulated and reported in the Ignite and DoT DPS columns either way, the latter marked not in TTK when excluded.
Kill is the fastest answer, not the cheapest; the Min ammo column is the other one. The sim fires as fast as the weapon allows, so a burn only ever gets the gap between two shots to work in, and one more round nearly always beats waiting for it. Where Min ammo shows a number you can stop shooting there and the burn already lit finishes the job: an R-4 Hyena kills an Agitator's pelvis in 4 rounds in 0.95 s, or 3 rounds in 2.12 s if you let the fire do the last 74 HP. It is bounded by construction: the buildup meter caps at the ignite threshold, so the tail after your last shot can never exceed the effect's own duration, which is what stops this degenerating into “fire, wait, top up, wait again”. It is blank where ceasing fire never kills: with no direct damage at all the burn needs topping up, so the Kill figure is the only answer there.
- weapons, the ARC-3 Arc Thrower, ARC-12 Blitzer, and the G-31 Arc throwable, fire an arc rather than a projectile: no mass, velocity or drag exists for them, so damage fall-off isn't modelled at all, only a hard range cut-off. The two guns publish no Fire Rate or Capacity row on their stat table; both are read from the infobox instead, and their true "∞" capacity is carried as a dedicated flag rather than a magazine size, so they never reload. The G-31, being a throwable, has neither row to begin with; see the Throwables card.
1 / (1 + chains) damage: 100% down to 50%. The figures here are the first target only, which understates a weapon whose actual job is clearing a crowd.- weapons, flamethrowers, lasers, the Cremator, have no discrete rounds, so they're modelled as 60 pseudo-shots per minute, one per second of sustained fire. Every shot count in the tables and tiles for these weapons is therefore seconds of fire, not rounds; the Kill column header still says “Shots” because at 60 rpm the number already reads that way.
Standard Damage row gives the per-second figure directly (150 DPS for the Torcher) and that's what the simulation uses; the per-particle figure is shown on the tile for reference only.Capacity row for these weapons is fuel units (the Torcher lists 100), not seconds; feeding that into the sim would claim 100 seconds of continuous fire. FUEL_PER_SEC (in scrape.py) converts it to real seconds of fire; it isn't game data, it's our own fit against the surviving measured points. Beams use the wiki's own numbers directly instead: Overheats at ÷ Heat per second gives real seconds of fire (the Scythe's 100°C ÷ 12.5°C/s = 8s, matching its infobox capacity), so no conversion constant is needed there.STATUS_APPLY_HZ in scrape.py), not read from any third party. A straight rescale to the particle rate (~75/s for a flamethrower) would ignite everything in about a second, which makes the Ignite column meaningless, but the game's own data has no name-joinable source for the real application rate either (checked against the datamine's DamageSettings table, which carries a per-effect strength but no way to tell which of its ~600 anonymous rows belongs to which weapon), so the constant is calibrated against a sanity anchor instead: a dedicated flame weapon's sustained buildup rate shouldn't undercut the SG-225IE Breaker Incendiary's wiki-sourced one. That anchor is met for the strongest flame weapons at the cost of them igniting every enemy in a single second; the weaker ones (Torcher, the beam lasers) still discriminate by a couple of seconds.- CQC-* weapons are melee. What's exact about them is ordinary: damage, durable damage, AP per angle and rate of fire are the wiki attack table's own values, read the same way as any gun's. What isn't modelled is everything that makes melee its own thing in the actual game.
CQC-9 Defoliation Tool is a chainsaw with no published fire rate at all; it's modelled as continuous fire (see the card above), the only melee weapon that is.CQC-20 Breaching Hammer also publishes no fire rate anywhere on its page; rather than being dropped, it's in with the same "no cadence" flag the throwables card below uses: shots-to-kill is exact, TTK/DPS/reload read "-".- grenades are in: every throwable that carries a real Damage section on its wiki attack tables. What's exact about them is the same ordinary rule as any other weapon: damage, durable damage and AP come straight from the attack table, and the blast's shrapnel/bomblet counts are read the same way an exploding rifle's are. What's approximate or missing is what makes a thrown weapon different from a fired one.
noCadence flag suppresses those columns instead: shots-to-kill stays exact, TTK/DPS/reload read "-" with this disclosure. The CQC-20 Breaching Hammer (see the melee card) uses the same flag for the same reason.K-2 Throwing Knife (a genuine thrown melee weapon, no explosion at all) and the G-31 Arc (whose own "explosion" table is a 0-damage stub pointing at its real Arc table). Everywhere else, the tile's Damage/Durable stats read 0, same convention as the SG-8P Punisher Plasma, and the real number is the Explosion row in the damage panel.G-6 Frag and TM-1 Lure Mine's 35 shrapnel pellets, and the G-7 Pineapple's 18 cluster bomblets (a ballistic hit plus their own smaller blast), are shown on the tile and excluded from the sim; how many land on the part you aimed at isn't in the data.G-123 Thermite is a known partial: its blast carries no ignite trigger at all (no Status row on the explosion table), so it ships as a plain 2,000 Anti-Tank III blast. Its Fire tick entry parses and displays, but never ignites in the simulation; there's no published strength anywhere on this weapon's page to key an ignition off. Disclosed here rather than silently dropped.G-3 Smoke and G-89 Smokescreen (radius/duration only, no Damage section at all), G-23 Stun and G-109 Urchin (0 Explosion, Stun Large only, nothing the sim can use), and the G/SH-39 Shield (a shield backpack whose wiki page isn't even cached).Every shot in the simulation is priced the same way, in this order:
AP > AV deals 100% damage, AP = AV deals 65%, AP < AV ricochets for nothing at all, not reduced damage, zero. A ricochet is a dead end unless something part-independent (a counted burn, a blast on the body) is also running.standard × (1 − durability) + durable × durability. This is why a high-damage weapon can lose to a weaker one on a 100%-durable part.ovf is uncapped, and every point of damage transfers however far past the part's own health it goes. Without the marker the transfer is capped at the part's combined health and constitution; you can't carry more through the part than the part had. The wiki's own example: a Trooper's arms are 65 HP at 50% to main and uncapped, so a single 300-damage R-6 Deadeye round puts 150 into a 125-HP body and kills outright, while the same round into a capped part would transfer at most 32. Just over 200 of 525 parts are uncapped, so it is the common case, not an exotic one. Where the column says nothing (48 parts, including every Conflagration Devastator part) the cap is assumed.1,500+2,000.The same arithmetic prices the main pool, which carries its own armor value and durability: that is what a fire tick or an explosion is charged against when it reaches the body.
Not a formula: a per-shot simulation, because damage over time, bleed and reloads make the timeline path-dependent. The loop runs at the weapon's trigger cadence and:
+N reload chip alongside Kill/TTK as an explicit disclosure that the real time is longer. The 4 weapons whose one-round cycle time is published (a charge/warmup/cooldown weapon's whole cycle, e.g. the Railgun) are the exception: that figure is derived from the wiki's own effective fire rate, not a reload estimate.t = 0. Aim time, trigger discipline, first-shot recoil and reaction time are not in TTK, so a 1-shot kill reads 0.00 s.6 +0.7s burn.With no DoT, no constitution and no reload the simulation reproduces the closed-form arithmetic exactly; that property is regression-tested.
The wiki describes fall-off only qualitatively. The curve here decays projectile velocity by 1 m numeric integration (deceleration proportional to calibre² ÷ mass, textbook drag physics) and retains damage as (v/v₀)^E, floored at 25.8% retained (i.e. loss never exceeds 74.2%); the three constants (K, β, E) are our own fit to "Helldivers II Index - 6.3.0 [UNOFFICIAL] - Falloff.csv", a community-compiled, manually-tested (~±0.3%) range-testing dataset covering 77 weapons × 8 distances, 602 measured points across the 76 rows the fit is validated against (the GP-20 Ultimatum has its own override and is excluded). Mean error 0.44 pp, worst 4.06 pp, better than the five-constant third-party fit this replaced (0.51 pp mean / 6.33 pp worst). It is our fit now, but the underlying measurements are still unofficial, not published by the game or the wiki.
- weapons have more than one damage/AP figure depending on a state the player controls in-game: a charge held longer (the RS-422 Railgun, PLAS-39 Accelerator Rifle, and the PLAS-15/45/101 Loyalist/Epoch/Purifier), a heat ramp that never locks out (the LAS-17 Double-Edge Sickle), or a fire-mode switch (the AC-8 Autocannon's APHET/FLAK, and five others). The weapon tile gets a state selector next to its fire-rate/magazine picks, and the currently selected state is always named on the tile and in the caveats panel; showing one unlabelled number per weapon would have been worse than not modelling this at all, since three of these weapons used to show three different, incomparable charge states without saying so.
chargeTime itself, not 60/rpm plus the hold; the wiki's own effective rate for these weapons decomposes as charge time + reload, and treating the two as additive would double-count the cycle. The default state is always the lowest/first one, which moved the headline number for two weapons: the PLAS-101 Purifier used to show its fully-charged figure and the RS-422 Railgun's overcharge-only blast used to apply to every shot, including safe ones.LAS-17 Double-Edge Sickle specifically: its four heat stages are ordered but carry no published temperature threshold; the wiki states the weapon overheats at 200°C and never says how much heat buys which of the four projectile variants, only that stage 2 trades some damage for more penetration on the way up. Labelled as stages, never as a temperature.Every row's own per-shot simulation still assumes you keep hitting that one part: once it is fully destroyed, that sim stops firing there; it never guesses which part you'd switch to. What changed is the Kill column itself: for - parts across - enemies the “part X exposes part Y” chain is documented (hand-curated, because the game's own data doesn't publish this relation; see the per-part table's breaks → / behind chips), and Kill now routes through that armour by default: it counts the shots to destroy the cover, then the shots into the part behind it, on the same clock as everything else. See the Kills through armour card below for the detail. The route is a sequence of two per-row sims chained together, not a new kind of simulation, which is exactly why the per-row sim still has to stop at the aimed part: that's the building block the route is made of. The exposure map itself is still the one field on this page that's editorial rather than scraped or datamined; a human read the enemy's Tactical Information and the game's own zone-visibility flags and decided, the way a wiki citation or a datamine join can't.
A row reading “part only” or “can't kill” still means what it always did: destroying that part alone doesn't kill anything, whether or not it's covered. Where a part is covered, its Kill cell shows the routed total instead, a struck-through number when this weapon can't break the cover, or the same unmodified “part only”/“can't kill” where the cover is breakable but nothing behind it kills either way. The one thing routing still can't show is a route through a second weapon; the Shot counter is for that.
The alternative was worse: without the stop-at-death rule, anything with a part-independent effect ground on against wreckage forever (a gas weapon “killing” through a torso plate that no longer existed by re-gassing it).
The Kill route option (in the per-part table's option bar, “Through armor” by default) is what actually does the routing described above. It counts the shots to destroy a covering part, then the shots into the part behind it, replayed on the Shot counter's own shared-pool engine, never a second, disconnected estimate, and never inside calc() itself (that function stays direct-hits-only; routing lives entirely in the wrapper around it).
4 → Helmet line underneath (hover it to highlight the cover row). A route that exists in principle but this weapon can't break the cover shows the part's own direct number struck through, with a can't break … chip; the number is real information (“this weapon would kill through here if something else opened it”), it just isn't a plan on its own. Where the cover is breakable but nothing behind it kills either way, including when this weapon can't damage the covered part at all regardless of the cover, e.g. its penetration is too low for the part's own armor, the cell reads the same “part only”/“can't kill” as an uncovered part, with no chip: the cover isn't what's stopping the kill, so there's nothing to blame on it.Internals (2) behind Harvester's Carapace (2), for one), not a stat-swap of the intact part. They're collapsed by default behind a ▸ next to their cover's name, a different glyph from the Shot counter's own +/- buttons, so the two never collide on the same row, and auto-reveal the moment the counter shows that cover destroyed. The honest limit: only 4 of 83 enemies publish such a table at all, so every other enemy's post-break anatomy simply isn't documented anywhere, on the wiki or off it.Switch Kill route to “Direct hits only” to see the old, unrouted numbers: what the part itself takes, ignoring what's in front of it; the whole page (per-part table and Breakpoints both) renders exactly as it did before this feature existed. Only Kill, TTK and Min ammo move between the two settings; Min ammo is blank on a routed row, because the ammo-optimal count for the part alone isn't the ammo-optimal count for the whole route.
The Shot counter toggle (in the per-part table's option bar, off by default) turns the table from "shots at one part, one row at a time" into a real, ordered sequence: click a row's + to fire that weapon at that part, click again for another part, and watch a single shared pool of enemy health drain as you go, the payoff of the hand-curated exposure map above, since the model never has to guess which part you'd aim at next once one breaks. It is a real timeline, not instant damage accounting: each shot fires at that weapon's cadence, in click order, with fire/gas buildup, DoT ticks, bleed-out and reloads running in the gaps exactly as the ordinary per-row simulation does, the same shotProfile() arithmetic, shared verbatim, so the two can't quietly disagree. A part with an undestroyed cover shows a disabled + naming what to destroy first (hover it to see the cover row highlighted); an already-dead part or an already-dead enemy disables it too, with the reason in the tooltip.
The Kill column's own automatic routing (see Kills through armour above) now covers the single-weapon case this used to be the only way to see: one weapon, cover then target. What the Shot counter is still for is everything routing can't guess: a second weapon finishing what the first opened, hitting parts in an order the router wouldn't have picked, or just watching the shared pool drain shot by shot. Here you sequence the shots; the model only plays out what you actually clicked.
Two things it deliberately simplifies, stated here and in the summary strip above the table:
The ledger itself (which shots you fired, in what order) is session state, not shareable: it isn't in the URL hash and isn't kept between visits, only the toggle's on/off preference is. Undo removes the most recent shot; Reset clears the whole sequence.
The clock stops at your last shot. A lit burn or an open bleed isn't run to its natural end and folded into the reported state: that would credit you with damage and a kill you haven't actually earned yet, and lock the + buttons behind it. Instead the summary strip reports exactly where things stand the moment you stopped clicking, and shows the burn's natural finish as a separate, clearly-labelled projection: "will die to fire in 1.9s if you stop shooting" rather than a silent "killed." Keep clicking and, if the enemy is still alive, a real kill lands on whichever shot actually does it. This is the counter walking the table's own Kill and Min ammo columns by hand: Kill is what you get firing continuously to the end; Min ammo is what you get stopping at the point the counter's own projection would call fatal.
The per-part table's first row, Main body, is the enemy's own health pool, the same pool the wiki's anatomy table lists as Main, and the same one every → Main transfer, explosion and DoT tick elsewhere on the page already drains. It is not an anatomy part, and it isn't stored as one: it's built on the fly from the same enemy.main figures the tile's "Main HP" stat already shows, with no engine change; it's simulated by calling the same per-shot loop with a pseudo-part whose transfer is 1:1 and uncapped, so the result is exactly the enemy's main pool being shot directly, not a second, parallel calculation.
It exists because an enemy whose every anatomy part is either non-penetrable or merely breakable used to read as unkillable, even when the body itself is comfortably killable: the Hive Guard's head is Medium armor and every other part transfers 25-45%, so every part row says "part only" against an AR-23 Liberator, but its 500 HP Light-armor main pool dies in 12 shots. → Main and Break don't apply to a pool that is the body, so both read “-”, and a losing row reads “can't kill” rather than “part only”, that phrase specifically means no part transfers enough, which isn't true of this row.
It is not a free pass: a Heavy-armor main still ricochets a light-pen weapon exactly like a Heavy-armor part would (the AR-23 Liberator can't kill 32 of 83 enemies through their main body). And it assumes you can hit what you aim at: on many enemies the body is only exposed from certain angles, or only once armor plating is stripped away, which this row has no way to represent. Treat a main-body-only kill as optimistic in the same way an unarmored-flank shot is: mechanically real, situationally conditional.
The wiki's Main row means two different things, though, and this page tells them apart. Some enemies have a real, shootable surface that belongs to no anatomy part; the wiki's photo highlights it (Hive Guard's abdomen, Harvester's small torso patch). Others have no such surface at all: every visible part of the body belongs to some anatomy part, and "Main" is only the pool that transfer damage, blasts and DoT drain; the wiki's photo shows this as a generic green "MAIN" label over an unhighlighted body (Overseer, Devastator, every tank). scraper/classify_main.py tells the two apart by template-matching the green pixels in each Main-view photo against that fixed label; - enemies have a real aim point and - don't. An enemy with no aim point still shows the row; it's still what every transfer/blast/DoT drains, and occasionally (Leviathan) the only kill available, but it carries a "no aim point" chip, reads dimmed, and is never picked as the Overview tab's "best part to shoot": there's nowhere to point a weapon at it.
A part named Upper Arms (2) is two arms, and the wiki's health/armor figures are per arm. When one is destroyed the simulation moves to the next identical instance and keeps firing, up to the published count; unlike the “what's behind a part” case above, the next thing you shoot is in the data. - of - parts carry a count above 1, across - enemies.
Tracks (2) are on opposite sides and really are not. TTK is optimistic by however long the move takes.×N marker.The Overview's Kill count column is a weapon's own Capacity plus its Spare Magazines / Spare Rounds / Spare Shells figure (whichever the wiki publishes, times the selected magazine variant), divided by that row's Kill shot count: the total number of that enemy the weapon can kill using all available ammo, including spare mags. It exists because a weapon that looks strictly better shot-for-shot can still lose badly on ammo: the AR-23 Liberator kills a Devastator's head in 2 shots against the R-63CS Diligence Counter Sniper's 1, but the Liberator carries 405 rounds to the Diligence's 105, roughly 202 kills a load against 105.
∞ and win the column on every row they can kill at all: that's a real property of those weapons, not a display bug.- rather than a guess: three Expendable Anti-Tanks, the LAS-99 Quasar Cannon and a handful of other recharge/belt-fed weapons among them.NON_SELECTABLE_BLOCKS in scrape.py), because crediting both trigger pulls at once would double-count a mode the game only lets you fire one of at a time.+N reload disclosure instead of a fabricated number.CQC-20 Breaching Hammer (rescued via the same "no cadence" flag) are in; see the dedicated cards above. What's left, all deliberate: six zero-damage or uncached throwables (G-3 Smoke, G-89 Smokescreen, G-23 Stun, G-109 Urchin, the G/SH-39 Shield), the MS-11 Solo Silo (an emplacement, explosion-only), the B/MD C4 Pack (equipment, no weapon stat table), and the P-11 Stim Pistol (correctly excluded, it heals teammates, it doesn't damage anything). That's a parser gap for none of them any more; if a weapon isn't in the picker, it's one of the eight named here.This is an unofficial fan tool. It is not affiliated with, endorsed by, or sponsored by Arrowhead Game Studios, and claims no ownership over Helldivers 2 or its assets.