Skip to content
ARMAG

Search matches names, aliases and the text of every page. An arm found by its service designation is found by its alias, not its title.

Methodology

Every derived figure on the site is produced by one set of pure functions, imported by both the page build and the interactive tools. A figure rendered into the HTML and one recomputed in your browser cannot disagree, because they are the same function.

Status propagation

A derived value inherits the worst status among its inputs. Verified times verified is verified; any estimated input makes the output estimated; if the published record disagrees about an input, the output says so too.

An input with no number blocks the calculation entirely. We do not substitute a typical value, because a typical value is a number nobody measured. The page says which input is missing instead.

The completeness score counts only verified values. Estimating your way to a full spec sheet therefore produces a low-tier entry covered in amber badges — inventing numbers buys nothing, which is the point.

Ballistics

Trajectories are integrated with a fourth-order Runge–Kutta scheme in three dimensions, so wind drift comes out of the same solver as drop. Drag uses the G1 and G7 standard drag functions — public-domain US Army Ballistic Research Laboratory data — scaled by the ballistic coefficient. The reference condition is the International Standard Atmosphere at sea level, which is what published tables are quoted at.

Not modelled: spin drift, Coriolis and aerodynamic jump. Each needs inputs this site does not record — latitude, firing azimuth, gyroscopic stability — and producing a more-decimal-places answer by inventing them would be worse than the honest omission.

The solver is checked in the test suite against a closed-form vacuum trajectory, against an independent open-source implementation, and against manufacturer-published tables. The tolerances are stated in the tests rather than asserted here.

Velocity and barrel length

Muzzle velocity belongs to a cartridge and a barrel length together, and almost nobody publishes it for the pairing you want. Between two sourced barrel lengths we interpolate, and label the figure as interpolated.

Outside the sourced range we project nothing. A 3-inch barrel with data only from 4 to 6 inches shows the nearest measured figure with its actual barrel length stated. The familiar "about 25 feet per second per inch" rule of thumb does not exist anywhere in this codebase: the real figure depends on the cartridge, the powder and where on the curve you are, and it can go negative.

Recoil

Free recoil is computed from the momentum leaving the muzzle and the mass of the arm as carried. Because ARMAG does not record powder-charge weights, the propellant gas term is excluded and the figure is a lower bound, marked as an estimate and consistent between entries.

"Free" means unrestrained: nothing about a stock, a pad, a brake or a shooter is modelled, because none of those is a property of the arm. It is a physical comparison, not a prediction of what recoil will feel like.

Completeness and tier

Tier is computed from a completeness score, never asserted by whoever wrote the entry. The weights are below and are open to revision as the database grows.

ContributionPoints each
Verified Core Spec6
Verified Extended Spec2
Image4
Prose Words Per1003
Resolved Maker Ref4
Resolved Family Ref2
Resolved Cartridge Ref4
Variant3
Lineage Edge2

Tier 1 at 90 points, Tier 2 at 55. Only verified values count toward any of it.

Units

SI is what is stored. Imperial is computed and shown by the toggle in the header; it is never stored in the database and never indexed by the site search. Cartridge names are never converted — a .45 ACP is a .45 ACP in either system.