Developed by a Czech-Swedish hunter and handloader, this tool is designed for practical hunting and handloading scenarios, with a focus on real-world implications rather than purely theoretical values.
A central objective is clarity and understanding. The three-phase model separates the rifle's mechanical zero, the contribution of atmospheric conditions, and propellant temperature — making their individual contributions explicit. The aim is to support intuition and informed judgment, not merely to produce numerical output.
Trajectory predictions agree with JBM Ballistics and QuickTARGET to within 10 mm (0.4 in) at 200 m (220 yd). Velocity agrees to within 0.5 m/s, validated against JBM Ballistics and Norma factory data.
This tool was developed with the assistance of Claude by Anthropic.
⚠ Disclaimer
This calculator is provided for informational and educational purposes only. All ballistic calculations are theoretical models and may differ from real-world results due to ammunition variation, atmospheric conditions, barrel characteristics, and other factors.
Never rely solely on software for safe firearm handling. Always follow applicable firearms laws and hunting regulations. The author accepts no liability for any use of this tool.
v2.5 (Apr 17, 2026) — Terminology unified across the UI: Phase 2 is now consistently labelled “shooting” (shooting atmosphere, shooting day, Shoot atm. P2, Shoot column) rather than mixing “hunting/shooting” and “hunt”. Trajectory table reference column renamed Ref → Zero to match the Zero atm. (P1) row label. “Hunting” is retained only where it is the actual subject (intro text, Swedish 150 m zero recommendation) and for the Swedish Hunt Classes (Naturvårdsverket), which is a proper name. Sensitivity analysis table now respects the selected pressure and temperature units — previously labels and values were hard-coded as hPa/°C regardless of user choice (visible when switching to mbar, inHg, or °F). v2.4 (Apr 17, 2026) — Unit-system review: added m as an option for Chronograph distance (“3 m” reads more naturally than “3000 mm” for optical chrono setups); added mbar as a synonym for hPa in pressure fields (numerically identical, matches older meteorological habit); fixed bug where v₀ sensitivity value was not converted when temperature unit was switched between °C and °F (conversion factor: 1 m/s/°C = 1.8227 fps/°F). v2.3 (Apr 17, 2026) — Darker, dedicated colour for section titles and panel headings so the logical groupings read as distinct at a glance. Crosswind unit list revised: removed kts (not used for wind in hunting ballistics), added km/h for Central European use; final options are m/s, km/h, mph. Added a safeguard for stale unit preferences in localStorage. v2.2 (Apr 17, 2026) — Input panel reorganised: Vital Zone moved next to Zero Range since it drives the zero-range optimiser; Chronograph distance and v₀ spread grouped into a collapsible “Chronograph details” panel under Muzzle Velocity; VZS row labels unified as Zero atm. (P1) / Hunt atm. (P2) / +Propellant (P3); redundant Class column removed from the trajectory table. v2.1 — Unified UI for zero-range estimators: both sections now use an explicit Calculate button, consistent result rows with dimmed “—” for empty scenarios, stale-clearing on input change; tooltip texts revised for clarity and Optimal tooltip added.
G1/G7 drag function Cd(M): Gehtsoft G1 tabulation (79 Mach points, 0–5), π/8 normalization (Siacci/Ingalls convention). Zero angle θ: found by bisection (60 iterations, ε < 10⁻¹⁰ rad). Wind drift: lag-time method — z = w · (tflight − x/v₀). Shooting angle α: reduces effective gravity (g·cos α). Both uphill and downhill hit higher than level.
Three-Phase Model
Phase 1 — Zero: bisection solves for θ under zero-day atmosphere (Tzero, Pzero, RHzero). θ is fixed thereafter — it represents the rifle's mechanical setting. Phase 2 — Shooting day: same θ, new atmosphere (Tshoot, Pshoot, RHshoot). Shows the pure external ballistic effect of weather change. Typically <2 mm at ≤200 m. Phase 3 — Propellant temperatureEXPERIMENTAL: same θ and shooting atmosphere, but v₀ is shifted by the propellant temperature effect: Δv₀ = k · (Tshoot − Tzero), where k is the user-measured sensitivity [m/s/°C] and propellant temperature is assumed equal to shooting temperature. This is the dominant real-world weather effect — a −30°C temperature swing with a sensitive powder (k = 0.5 m/s/°C) shifts v₀ by 15 m/s. Disabled when k = 0.
Validation vs JBM Ballistics & QuickTARGET
Test conditions: 165 gr Hornady InterBond · G1 BC 0.447 · v₀ = 785 m/s · sight 45 mm · zero 150 m · 15°C / 1013 hPa / 0% RH · no wind
Validated against JBM Ballistics and Norma factory data. Trajectory error ≤1 mm and velocity error ≤0.1 m/s across all ranges. Drag model uses Gehtsoft G1 tabulation with π/8 (Siacci/Ingalls) normalization — no empirical correction factors. Humidity model: Magnus formula + partial-pressure density, validated at 15°C / 1013 hPa / 50% RH → ρ = 1.2211 kg/m³ (QuickTarget).
Model Notes
▸ Trajectory, velocity, and energy validated to <1% vs JBM — Gehtsoft G1 drag tabulation with π/8 (Siacci/Ingalls) normalization. No empirical correction factors. ▸ Reliable to ≤300 m — trajectory error <2 mm, velocity error <0.2 m/s across the full range. ▸ Relative humidity modelled — Magnus formula + partial-pressure density. Effect <0.5 mm at ≤200 m; included for physical correctness. ▸ G1 and G7 drag models supported — G7 recommended for VLD/boattail bullets. ▸ No spin drift, Coriolis, or aerodynamic jump — negligible at ≤300 m. ▸ Phase 3 (propellant temperature) is experimental — user-measured v₀ sensitivity [m/s/°C]. Disabled when k = 0.