Cervid Ballistics — User Guide

Air Rifle · Rimfire · Centrefire — for basic, intermediate, and advanced shooters
Basic get a usable result in under a minute
Intermediate match the model to real-world conditions
Advanced calibrate, correct, and compare like a long-range shooter

📌1. Welcome

How this guide is organised, and how to use the badges below.

Cervid Ballistics is an offline exterior-ballistics calculator covering Air Rifle, Rimfire, and Centrefire shooting. It runs entirely as a single file in your browser — no install, no account, no signal required at the range.

This guide walks through the app one feature at a time, in roughly the order you'll meet them on screen. Every topic carries one of three badges so you can tell at a glance whether it's something to learn on day one, or something to come back to once you're comfortable:

Basic — everything you need to get a trustworthy drop chart from a Quick Preset in under a minute.
Intermediate — entering your own loads and real conditions, reading the full results table.
Advanced — calibrating the model to your specific rifle, correcting for spin and the Earth's rotation, and comparing loads side by side.

You don't need to read this guide start to finish. Jump straight to what you need from the menu on the left (or the ☰ Menu button on a phone), and use the badges to decide how deep to go.

🎯2. Getting Started

Your first result, in under a minute.

Choose a discipline Basic

The three buttons at the top of the screen — Air Rifle, Rimfire, Centrefire — switch the whole app between disciplines. Each has its own presets, its own sensible default ranges, and its own plausibility checks, so switching modes is the very first thing to get right.

Switching modes clears the Inputs tab and any results on screen, so there's no risk of accidentally mixing an air rifle pellet weight with a centrefire zero range.

Pick Imperial or Metric Basic

The Imperial / Metric toggle changes every field label and unit on the page — fps vs m/s, yards vs metres, and so on. You can switch at any time; nothing you've typed in is lost, it's simply re-displayed in the other system.

Tap a Quick Preset Basic

The fastest way to a result: tap any tile under Quick Presets. This instantly fills every field on the Inputs tab with a known load and calculates a trajectory — no typing required. Presets are grouped per discipline, and on a phone, tapping one automatically switches you to the Results tab so you see the outcome straight away.

If you don't see any Quick Presets, you may be on the General Release build, which intentionally ships with no built-in loads — enter your own load instead (see Section 3) or import a backup file if you have one (Section 6).

Press Calculate Trajectory Basic

Whenever you change a field by hand, press Calculate Trajectory at the bottom of the Inputs tab to refresh the Results page. Nothing recalculates automatically as you type — this is deliberate, so a half-finished edit never produces a misleading half-finished result.

60-second cheat sheet

  1. Pick your discipline: Air Rifle, Rimfire, or Centrefire.
  2. Tap a Quick Preset, or fill in Firearm & Load by hand.
  3. Press Calculate Trajectory.
  4. Read the stat cards and table on the Results tab.

🛠️3. Entering Your Own Load

Every field in the Firearm & Load panel, and when it matters.

The core numbers Basic

Four fields drive most of the result: Bullet Weight (gr), Muzzle Vel. (fps), BC (G1), and Scope Height (in). Weight and muzzle velocity usually come straight off the ammunition box or your chronograph; BC (G1) is the manufacturer-quoted ballistic coefficient, almost always published as a G1 figure. Scope Height is the vertical distance from the centre of your bore to the centre of your scope — typically 2–3in for a rifle.

Zero Range, Max Range & Interval Basic

Zero Range is the distance your rifle is actually sighted in at. Max Range sets how far the table and chart extend. Interval controls the row spacing in yards or metres — leave it blank for a sensible automatic spacing.

Choosing a Drag Model: G1, G7, or GA Intermediate

A ballistic coefficient is only meaningful alongside the reference shape it was measured against. G1 is the oldest and most common standard, used by most manufacturer-quoted BCs. G7 suits modern boat-tail, low-drag rifle bullets and tends to model the transonic region more realistically for that shape. GA is a community-sourced table built specifically for diabolo airgun pellets, whose sharp drag rise above roughly Mach 0.8 neither G1 nor G7 fit well.

BC (G1) is always required. If you switch Drag Model to G7 and haven't entered a real published BC (G7) figure, a yellow banner appears — press ≈ Estimate BC (G7) for me to pre-fill a reasonable approximation (BC(G1) ÷ 1.9), which you're free to overwrite if you find a better published number.

The G1→G7 ÷1.9 estimate is a rule of thumb for modern boat-tail rifle bullets. It isn't meaningful for pellets or flat-base projectiles — use GA for pellets instead.

Projectile Shape & Twist Direction Advanced

Projectile Shape (Flat-base / Boat-tail / Diabolo) applies a small correction to the gyroscopic stability calculation, since a boat-tail or a hollow pellet skirt needs less spin to stabilise than the same length-to-diameter ratio would otherwise suggest. Twist Direction (RH standard / LH) determines which way Spin Drift pushes the impact point — get this backwards and your spin-drift correction will point the wrong way.

Diameter, Length & Twist Rate Advanced

These three feed the Gyroscopic Stability (Sg) calculation and are only needed if you want that stat card populated. Twist Rate is written as Twist 1:X — the barrel makes one full turn every X inches (or millimetres in Metric).

Spot Range — one extra data point Intermediate

Spot Range inserts a single additional row into the table at a distance of your choosing, on top of the regular interval — handy for checking one specific target distance without changing your whole table spacing.

🌌4. Environmental Conditions

Air is not a constant — and neither is wind.

Altitude, Temperature, Humidity & Pressure Intermediate

These four combine into an air-density ratio that scales drag directly — thinner air means less deceleration and a flatter trajectory. Press 🌌 Weather to pull your current conditions automatically from your device's location, or fill them in by hand if you know them. If you only know altitude, press 📍 Pressure from altitude to estimate station pressure from a standard atmosphere model.

Wind Speed & Wind Clock Basic

Wind direction is entered as a clock face, using the same convention as reading a Kestrel or any other wind meter with the vane-into-the-wind technique: point it at the target (12 o'clock), turn it until the impeller stalls, and read whichever hour the back of the meter faces. Wind Clock = 3 means a full-value wind FROM your right, 9 a full-value wind FROM your left, and 12 or 6 a pure head/tailwind with no sideways component at all. This one field drives two separate effects at once — the crosswind component deflects the trajectory sideways (a wind from 3 o'clock pushes the point of impact left), and the head/tailwind component very slightly changes drag, adding a touch more drop and time of flight into a headwind (wind from 12), or taking a touch off both with a tailwind at your back (wind from 6). See "Head/tailwind affects drop, not just crosswind" in Section 12 for how large that second effect actually is.

Wind at Target Advanced

Wind Speed & Wind Clock above describe conditions at the shooter, and by default the app assumes that same wind holds for the whole flight. Wind at Target is an optional second speed+clock reading for when the wind genuinely differs out at the target — calm at the muzzle but gusting further out, say. Leave it blank and nothing changes; fill it in and the app blends smoothly between the two readings across the shot instead of assuming one uniform wind everywhere.

The blend is by straight-line downrange fraction — 0% of the way there at the muzzle, 100% at the table's max range — applied separately to the crosswind and head/tailwind parts of each reading rather than to the raw speed-and-clock numbers themselves. That matters because averaging clock positions directly can be meaningless (a 3 o'clock wind and a 9 o'clock wind don't blend to "no wind" by any sensible physical reasoning), whereas blending the sideways and along-the-shot components separately always behaves sensibly, including when the two readings come from very different directions.

Wind read near the target matters more to total drift than the same wind read near the muzzle. The bullet decelerates over its flight, so it spends more time — not just more distance — exposed to whatever crosswind is blowing during the slower, back half of the trajectory. A crosswind that only picks up close to the target will still move the point of impact meaningfully; the same crosswind confined to just the first stretch out of the muzzle moves it noticeably less. This is exactly the "read the wind at the target, not just at the firing line" habit taught for long-range work — the app's math bears it out.

Wind at Target is a standing field like Wind Speed/Wind Clock themselves — it describes today's conditions, not a property of the load, so it is not saved into presets and is left untouched when clearing or switching loads. When active, the Results header's "Wind at <range>" card shows both readings (shooter → target) so it's always visible which two conditions are actually driving the figures. It also carries through correctly into HUD and Compare Loads — each still blends toward the same target range you originally entered it for, even though both views can show figures at a shorter distance than that. Reticle View shows a small note of its own when a target reading is active, right below its wind override row.

Latitude & Azimuth (Coriolis) Advanced

These two feed the Coriolis and Eötvös corrections — the Earth's own rotation measurably deflecting very long shots. They only become practically relevant at longer centrefire distances, which is why they're optional rather than defaulted silently. Azimuth is the compass bearing of the shot, measured from true north.

Shooting Angle Intermediate

Shooting Angle accounts for uphill or downhill shots (uphill is positive). A shot at any real incline covers less horizontal distance than its slope distance suggests, which affects both drop and every angular correction derived from it.

Plausibility warnings Basic

If a value looks unusual for the selected discipline — a decimal point in the wrong place, fps entered as m/s — a dismissible yellow banner appears above Calculate Trajectory. These checks are advisory only: they will never block a calculation, even for a genuinely unusual but real load, such as a deliberately low-powered air rifle or an experimental wildcat cartridge.

📊5. Reading Your Results

What every stat card and table column actually means.

The stat cards Basic

Across the top of the Results tab: Muzzle Energy, Muzzle Velocity, Velocity/Energy/Drop/Wind at your max range, Gyro Stability, Subsonic point, and Air Density as a percentage of the standard atmosphere. Cards are colour-coded — green/yellow/red shading on the energy card for air rifle loads flags whether a shot is likely to be humane at that power level, for instance.

The trajectory chart Basic

The blue line is drop, read against the left axis; the dashed green line is energy, read against the right axis. The two lines use different line styles as well as different colours so the chart stays legible if you're colourblind.

Switching the table's display unit Intermediate

The row of buttons above the table — mils / MOA / clicks / inches / cm — changes how Drop, Wind, Spin Drift, and Coriolis are all displayed together. Switching to clicks also reveals a turret click-size selector, so the table can show whole-click adjustments for your specific scope.

Mach, Time of Flight & Subsonic Intermediate

The Mach and ToF(s) columns show speed relative to sound and elapsed flight time at each range. Rows past the point where a projectile drops below the local speed of sound are marked distinctly in the table — useful context, since the drag model becomes markedly less predictable through the transonic region.

Gyroscopic Stability (Sg) & Min Twist Advanced

Sg is classified into bands: below 1.0 Unstable, 1.0–1.4 Marginal, 1.4–2.5 Stable, 2.5–4.0 Over-stabilised, above 4.0 Excessively fast. The Min Twist card shows the loosest twist rate (in both Miller's and Greenhill's formulas) that would still adequately stabilise the projectile you've entered.

Sg is referenced to roughly 2800fps rifle velocities. Miller did publish a velocity correction, capping it at its value at the speed of sound rather than shrinking it further into subsonic territory — but neither the base formula nor that correction was validated against 700–950fps airgun pellets, so the app doesn't apply it. Read the raw Sg figure for pellets as indicative rather than exact.

Exporting the table Intermediate

Export CSV, above the results table, downloads the full range table as a spreadsheet-ready file — handy for printing your own custom range card or importing into another tool.

💾6. Presets & Saved Loads

Building your own library of loads.

Saving a load Basic

Once you've filled in a load and calculated a trajectory, type a name into the field beside + Save and press it. Your load appears as a new tile under Quick Presets, ready to reload with one tap next time.

Editing, reordering & deleting Basic

Tap any of your own preset tiles to load it straight into edit mode. On desktop, drag tiles to reorder them; on touch devices, press and hold. The Sort by calibre link switches to an automatic alphabetical grouping instead, without losing your manual order — toggle back any time.

Backing up your presets Intermediate

⬇ Export presets downloads all of your custom loads (and any edits you've made to built-in ones) as a single backup file. ⬆ Import presets restores from that file on another device, or after clearing your browser data — existing presets with the same name are skipped rather than overwritten, so importing is always safe to repeat.

Restoring a pre-truing BC Advanced

If you've saved a load after applying Trajectory Truing (Section 7), a small overflow menu on that preset offers Restore pre-truing BC — reverting just the ballistic coefficient back to its value before that first calibration, without touching anything else you've since edited.

🎯7. Calibrating to Your Rifle

Trajectory Truing and Verification — making the model match your actual chronograph and target data.

Why Truing exists Advanced

Manufacturer-quoted BCs are averages, and frequently don't match your specific rifle, load, and chronograph combination exactly. Trajectory Truing lets you correct for this using one real observed data point, rather than trusting the catalogue figure in isolation.

Running a Truing pass Advanced

Enter the distance you actually shot at into Validation Range, and the holdover you genuinely needed at that distance into Observed Holdover — in mils, MOA, inches, or cm, whichever you measured in. Press True Trajectory. The engine searches for a BC multiplier that reproduces your observed holdover exactly, and the whole table updates immediately.

Press 💾 Save to preset to bake the correction permanently into the loaded preset's own BC, so you don't need to re-true it every session.

Truing is scoped to the load that's currently open — switching to a different preset or a new load never carries a stale correction over from whatever you last trued.

Verifying the fit Advanced

Once trued, enter a second, independent observation — a different distance you also have real data for — into Verify At and Observed Holdover, then press Verify Second Point. You'll get the model's prediction, your observed value, the difference, and a plain verdict: holding up well, some drift, or diverging. A growing gap at the second point usually means a different input is wrong (muzzle velocity is the most common culprit) rather than the BC fit itself.

8. Zero Offset

For when you know a holdover, but haven't re-zeroed.

When to use it Advanced

If you've zeroed for one load, then switch to a different projectile without re-zeroing, you often already know from experience how much that new load holds over or under point of aim at your zero range. Zero Offset – Elevation lets you enter that figure directly (in mils, MOA, or clicks) and shifts the whole elevation table by that constant angular amount.

A second, independent field — Zero Offset – Windage — does the same thing for left/right instead of up/down: a known windage correction at your zero range, for example a scope that isn't perfectly boresighted, or a previous zero done in a crosswind. It has its own mils/MOA/clicks toggle (so it can be entered in a different unit from the elevation field if you prefer), and it stacks on top of — rather than replacing — wind deflection, spin drift, and Coriolis, all of which are added into the same combined windage figure used by Reticle View, HUD, and the Windage row of the Turret Dial. Positive values dial or hold right, matching the direction convention used everywhere else in the app.

Both Zero Offset fields are deliberately distinct from Trajectory Truing. Truing adjusts BC to match the drag model to reality, and assumes your zero is a true zero. Zero Offset does the opposite — it accepts that your zero is not quite true for this projectile, without touching the drag model at all. Positive elevation values mean hold up; positive windage values mean hold/dial right.
The mils/MOA toggle now remembers each rifle's own turret preference — the first time you save a preset with the Results table on mils or MOA, that choice sticks to it and both Zero Offset fields default to match on every future load, whatever the calibre. It's not tied to calibre at all: a .308 with an MOA-turret scope and a .177 with a mil-dot scope are both handled correctly, independently of each other. The results header shows a separate badge for each active offset — "Zero Offset (Elev)" and "Zero Offset (Wind)" — and both follow the mils/MOA toggle, converting along with the rest of the table instead of always showing mils.
Choosing clicks on either field reveals a click-size dropdown (1/8, 1/4, 1/2 MOA, or 0.1/0.2 MRAD per click — the same list used by the Results table's own clicks column and the Turret Dial), so you can enter a holdover the way it's actually dialed on your turret ("6 clicks left") without doing the MOA/mil conversion yourself. This click size is shared app-wide, not stored separately per field, so setting it here also updates it everywhere else clicks are shown, and vice versa. Unlike mils and MOA, a click's angular size depends on this shared setting rather than being a fixed ratio — so if you change the click-size dropdown after saving a preset, the same typed click count will resolve to a different angle next time, exactly like every other clicks figure in the app (the Results table's own clicks column behaves identically). If your click size won't change, this never matters in practice; it's only worth knowing about if you switch scopes or turrets between sessions.

🌍9. Advanced Corrections

The physics that only matters once you're shooting a long way.

Spin Drift Advanced

A spin-stabilised projectile drifts slightly to the side of its twist direction over the course of a flight, independent of any crosswind, growing disproportionately at long range. It's computed automatically once Diameter, Length, and Twist Rate are filled in, and shown as its own stat card and table column — kept separate there so you can see how much of your total windage is wind versus spin. It's also folded into the single combined windage figure Reticle View and HUD hand you to actually dial or hold; see "Combined windage" under Field Tools below.

Coriolis & Eötvös Advanced

The Earth's rotation deflects a bullet in two distinguishable ways: a vertical Eötvös effect (an eastward shot experiences marginally reduced effective gravity, a westward shot the opposite) and a horizontal Coriolis drift perpendicular to the line of fire. Both depend on your Latitude and the shot's Azimuth (Section 4), and both are genuinely tiny outside long-range centrefire shooting. The vertical Eötvös component is already baked directly into Drop everywhere in the app — it's not a separate figure you'd ever need to add in yourself. The horizontal component is the one shown as its own "Coriolis" stat/column, the same way Spin Drift is.

The Coriolis column in the results table follows whichever display unit you've selected — mils, MOA, clicks, inches, or cm — the same as Wind and Spin Drift. That column stays wind-only for reference; the horizontal Coriolis figure is folded into Reticle View's and HUD's combined windage hold — see "Combined windage" under Field Tools below.

📋10. Field Tools

Range Card, Reticle View, the turret dial, and HUD — built for glancing at, not reading closely.

Combined windage in Reticle View & HUD Advanced

The main results table shows Wind, Spin Drift, and Coriolis as three separate columns, so you can see exactly where your total lateral correction is coming from. But the windage figure Reticle View and HUD actually give you to dial or hold — the reticle's hold point and its "Hold ... left/right" text, and HUD's Windage hero number — is all three added together into one number, so there's no ambiguity about what to actually dial: you don't need to read three figures and add them up yourself before trusting the reticle marker or the number on screen. Elevation is unaffected by this — Spin Drift and the horizontal Coriolis component are both purely lateral effects, so only windage is combined; Drop already includes the vertical Eötvös component on its own (see Coriolis & Eötvös, Section 9). For most air rifle shooting, Spin Drift and Coriolis are small enough next to wind that the combined figure and the wind-only figure barely differ — the difference grows at longer centrefire range, where all three genuinely matter. If a Zero Offset – Windage value is active (Section 8), it's folded into this same combined figure too, on top of Wind/Spin Drift/Coriolis.

Range Card Intermediate

Press 📋 Range Card for a stripped-down, large-print range-vs-holdover view — easy to read at a glance in the field or on a bright phone screen. Each row also shows a small "Wind (per mph)" (or "Wind (per kph)" when the page is set to metric) reference figure underneath the holdover value — how much correction to apply for every 1mph/1kph of full-value wind, in whatever unit (mils, MOA, clicks, in, or cm) the holdover value itself is shown in. This is deliberately not a single wind-corrected number: the wind speed you enter is one static guess, and real field wind rarely matches it exactly, so the card instead gives you a per-mph/per-kph rate to scale by whatever you actually read off the wind at the line. The label spells out "per mph"/"per kph" rather than just stating the unit, since this is a rate rather than a wind-speed reading, and a bare unit label could otherwise be misread as one. It's left off when the calculation used 0mph wind, since there's nothing to derive a rate from. Press 🖨 Print inside the card for a paper copy, or 📤 Share to send it as plain text (wind reference included) to any app on your phone — Notes, Reminders, Messages, or a Shortcut — via the standard iOS/macOS share sheet. There's no direct Apple Watch app, but anything saved to Notes or Reminders this way syncs automatically and shows up on your wrist, so Share is the quickest route to having your range card on your watch without leaving the field. On a browser without share-sheet support, the button copies the text to your clipboard instead.

Reticle View Intermediate

Press Reticle View to see your holdover overlaid directly on a Mil-Dot, MOA Hash, or Christmas Tree reticle pattern for a chosen range — useful for rehearsing exactly where your reticle needs to sit before you're on the clock. A small grey arrow in the top-left corner shows the wind condition that hold was calculated for — pointing at whichever clock position you entered (12=up, 3=right, and so on), which is also where that wind is blowing FROM (see Wind Speed & Wind Clock above), so the arrow doubles as a small weathervane reading, just like glancing at a Kestrel. Beside it, labelled "PUSH," is the resulting effect — which way the correction actually pushes your point of impact, which is the opposite side from where the arrow points (a wind FROM 3 o'clock pushes left). The speed carries a trailing R or L (e.g. "10mph L") giving that push side as a quick letter rather than needing to judge the arrow's angle and then remember which way to flip it. "Calm" replaces the whole readout when wind speed is 0. It's a static readout of the assumption behind the drawn hold, not a separate target — deliberately drawn in muted grey rather than the orange used for the actual aim-point marker. No letter appears for a pure head- or tailwind (12 or 6 o'clock), since there's no sideways push to report — and for the same reason, the "PUSH" word itself is left off at those two positions too, leaving just the arrow and speed. The windage half of the hold point (and the "Hold ... left/right" text) is the combined figure described in "Combined windage" above — wind, spin drift, and Coriolis added together, not wind alone.

Overriding the wind in Reticle View Intermediate

Below the Range field, a wind speed box and the same small clock-face dial used on Compare Loads let you re-check the hold for a different wind without leaving Reticle View or re-running Calculate on the Inputs tab. It defaults to whatever wind the current calculation actually used and keeps following it until you type your own speed or drag/tap the dial — drag anywhere on the ring or tap a spot on its edge, it snaps to the nearest hour using the same "clock = direction the wind is FROM" convention as the Wind Clock field. Unlike Compare Loads, there's no separate button to press: the hold point, the reticle marker, and the small grey wind arrow all update as soon as you release the dial or finish typing a speed, since this is a genuine recalculation under the new wind rather than a shortcut estimate. A Reset link beside the wind row snaps it back to the calculated wind at any time, and it resets on its own the next time you press Calculate — a fresh calculation is always the starting point for a new "what if." If a Wind at Target reading is active for the current load, a small note appears below the override row saying so — this override only ever adjusts the near/shooter-side wind; the target-side reading stays whatever was entered on the Inputs tab and can't be touched from inside Reticle View.

Overriding velocity in Reticle View Intermediate

Below the wind row, a Velocity field lets you re-check the hold under a different muzzle velocity — handy for testing a chronograph reading against your saved figure without touching the preset or leaving Reticle View. It defaults to whatever velocity the current calculation actually used and keeps following it until you type your own; a Reset link beside it snaps back to the calculated value at any time, and it resets on its own the next time you press Calculate. Like the wind override, this is a genuine recalculation — the hold point and reticle marker update as soon as you finish typing, not an estimate.

Turret Dial Advanced

The optional Turret Dial (inside Reticle View) tracks what you've already dialed on your scope's elevation and windage turrets, then shows the remaining holdover needed on top of that — handy when you've dialed most of the correction and want to hold the small remainder rather than dial it all.

HUD (Head Up Display) Intermediate

Press 📡 HUD in the Results page's button row for a single-distance, single-glance solution in the largest type anywhere in the app — type a distance to target and get elevation and windage as two big numbers, in mils, MOA, or clicks. Unlike Reticle View's range field, HUD's distance box takes any number you've actually ranged, not just a distance the main table happened to compute — type 437 and get 437, not whatever tabulated mark is closest. Wind and velocity can be overridden the same way as on Reticle View, with their own independent dial and speed fields that don't affect Compare Loads or Reticle View's own overrides, and everything recomputes live as you type or drag, with no separate button to press. The velocity field has +/- buttons beside it for a quick 10fps (5m/s) nudge, rather than relying on your browser's own number-field arrows — Safari doesn't show those at all. Below the two big numbers, a headline table shows Muzzle Energy, Velocity at Target, Energy at Target, Drop, Wind, and Air Density — the same physical-distance figures the main Results page's own stat cards show, as a quick reference alongside the angular hold values above. The big Windage number is the combined figure described in "Combined windage" above (wind, spin drift, and Coriolis added together); the headline table's own "Wind" row underneath stays crosswind-only, matching the main Results page's own Wind column, so the two aren't showing the same thing under different labels.

⚖️11. Compare Loads

Deciding which rifle and load to bring, side by side.

Selecting loads to compare Intermediate

Press ⚖️ Compare in the header to open the comparison picker. Select up to three saved presets — any mix of disciplines and any mix of your own and built-in loads — then press the Compare button inside the overlay to see headline stats and an overlaid trajectory chart for all three side by side.

The comparison distance Intermediate

All three loads are shown out to one shared distance, defaulting to the shortest of the selected loads' own max ranges. Type your own value into the distance field beside the Compare button to override it — your typed value sticks across further selection changes until you clear the selection back to zero.

The distance isn't capped — the engine will extrapolate as far as you type. A load shown beyond its own saved max range gets a dismissible warning rather than being blocked.

Overriding the wind for a comparison Intermediate

Below the distance field, a wind speed box and a small clock-face dial let you ask "what if the wind picked up?" or "what if it swung round?" without leaving the Compare page. Both default to whatever's currently set on the Inputs tab and keep following it — right up until you type your own speed or drag/tap the dial, at which point your override sticks across further selection changes, exactly like the distance field beside it. Drag anywhere on the ring or tap a spot on its edge; it snaps to the nearest hour using the same "clock = direction the wind is FROM" convention as the Wind Clock field. Clearing the selection back to zero resets both the distance and wind overrides together, ready for a fresh comparison.

Drop & Wind Drift units Intermediate

The Drop & Wind units dropdown above the comparison table switches those two rows between mils, MOA, clicks, inches, and cm — independent of whatever unit the single-load Results table happens to be showing. The row labels always state the unit directly, e.g. "Drop (mil) at 500yd", so there's never any doubt what's being read. Switching units is instant and doesn't re-run the comparison. Choosing clicks reveals the same turret click-size selector as the single-load Results table, and the two stay in sync — changing the click size in either place updates both.

Overriding velocity per load Intermediate

Unlike the wind and distance overrides above, which apply to the whole comparison at once, velocity can be overridden separately for each column — a small Velocity box sits in each load's own header in the results table, with +/- buttons beside it for a quick 10fps (5m/s) nudge rather than your browser's own (often invisible on Safari) number-field arrows. Type a value, or tap the buttons, to test a chronograph reading, or nudge just one load's velocity without disturbing the other two, then press Compare again to see it take effect. A Reset link appears next to a column's box once it has an override, and takes effect immediately rather than waiting for the next Compare press. Deselecting a load clears its own override; clearing the whole selection back to zero clears all of them.

Comparing a load you're still editing Advanced

If a selected load is also the one currently open on the Inputs tab, Compare automatically uses whatever you've most recently calculated for it — including an unsaved Trajectory Truing correction or a quick field edit — rather than the stale saved preset. It's marked (live) in the comparison table whenever this applies.

The subsonic-crossing warning Advanced

A centrefire load that goes subsonic before the comparison distance is flagged — subsonic centrefire is usually a deliberate choice (a suppressed .300 BLK load, for example) and worth a second look. Air rifle and rimfire loads never trigger this warning, since subsonic flight is the ordinary case for pellets, slugs, and standard-velocity rimfire ammunition, not the exception.

💡12. Tips, Limitations & Troubleshooting

Things worth knowing, at every level.

Warnings never block a calculation Basic

Every yellow banner in the app — plausibility checks, BC estimates, extrapolation, subsonic crossing — is advisory only. You can always dismiss it and proceed; the app trusts you to know your own load better than a generic bound can.

Everything works offline Basic

The whole application, including this guide, is a single file with no server component. It works fully offline once loaded — ideal at the range, away from signal. Your presets are stored locally in your browser, so back them up (Section 6) before switching devices or browsers.

The G1↔G7 estimate is approximate Intermediate

The ÷1.9 estimate used to fill in a missing BC (G7) is a commonly cited approximation for modern boat-tail rifle bullets specifically. It has no general validity for pellets or flat-base projectiles — use a genuine published G7 figure, or GA for pellets, whenever you can.

Head/tailwind affects drop, not just crosswind Advanced

Drag is computed from the bullet's velocity relative to the air, not relative to the ground — so a headwind (12 o'clock) very slightly increases drag and drop, and a tailwind (6 o'clock) very slightly decreases both, on top of whatever crosswind deflection the same Wind Clock position also produces. This is a genuinely small effect for centrefire and rimfire: at 15-20mph even a rifle bullet at long range shifts by only a few hundredths of a mil, well inside the uncertainty already present from BC tolerance and chronograph error. It's proportionally larger for air rifle pellets specifically, since a given wind speed is a much bigger share of a pellet's much lower muzzle velocity — a light, low-BC pellet (around 0.02 BC) at a typical 50yd Field Target distance can see roughly 0.07-0.09mil of extra drop from a 15-20mph headwind, comparable to half a scope click. Heavier, higher-BC pellets are far less affected — the same wind speed moves a denser 0.08+ BC pellet by only a few thousandths of a mil, one more reason competitive air rifle shooters favour them.

Sg doesn't apply Miller's velocity correction Advanced

Miller's stability formula is referenced to roughly 2800fps rifle velocities, and Miller did publish a velocity correction — capped at its value at the speed of sound rather than extrapolated further into subsonic territory. Air rifle loads typically run 700–950fps, but the app doesn't apply this correction: neither the base formula nor Miller's own correction was derived from or validated against airgun pellets, so adding it would swap one unvalidated number for another rather than clearly improve accuracy. Read the raw Sg figure for pellets as indicative rather than exact — a documented, known limitation rather than a bug.

My Quick Presets are empty Basic

Some deployments of the app (the public "General Release" build in particular) intentionally ship with no built-in preset library. Enter your own loads by hand, or import a backup file from another install (Section 6).

📱13. Installing as an App

Cervid Ballistics is a single offline file with no server — every platform below just adds a shortcut icon to it, so it opens without a browser address bar and behaves like an installed app. Nothing is downloaded or installed beyond that icon; it's still the same file.

iPhone & iPad (Safari) Basic

  1. Open the Safari app and go to the web page you want.
  2. Tap the Share button (the square with an upward arrow, or the three dots depending on your layout).
  3. Scroll down the list of options and tap Add to Home Screen. If you do not see it, scroll to the bottom, tap Edit Actions, and add it.
  4. Type a custom name for the icon if you want.
  5. Turn on Open as Web App if you want it to open like a standalone app, or leave it off to open in Safari.
  6. Tap Add in the top-right corner.

Mac (Safari — add to the Dock) Basic

  1. Open the web page in Safari.
  2. Click the Share button in the toolbar.
  3. Choose Add to Dock.
  4. Edit the name if you want, then click Add.

This creates a standalone web app in your Applications folder, launchable from the Dock or Spotlight with its own window and no address bar — you don't need to keep a Safari tab open for it.

Android (Chrome) Basic

  1. Open the web page in Chrome.
  2. Tap the three-dot menu at the top right.
  3. Tap Add to Home screen, then Install.

The icon appears on your Home screen and in the app drawer, opening in its own window without Chrome's address bar. Android has no universal taskbar equivalent; on tablets with a taskbar/dock strip, drag the installed icon there the same way you would any other app.

Windows (Edge or Chrome — pin to the taskbar) Basic

  1. Open the web page in Edge or Chrome.
  2. Edge: click Settings and more (•••) → Apps → Install this site as an app. Chrome: click the three-dot menu → Cast, save, and share → Install page as app… (some pages also show an install icon directly in the address bar).
  3. Confirm the name in the dialog and click Install.
  4. Once installed and open, right-click its taskbar icon and choose Pin to taskbar — Edge also offers this directly from the "App installed" confirmation.