Airsoft FPS Calculator
Estimate FPS, joules, rate of fire and range for your AEG or GBB build, correct a budget HT chrono, and check it all against PH field caps before you reach the chrono table.
Spring
Cross-brand consensus baseline for an M-rated spring.
Barrel and air
Rate of fire
Motor, gears and battery barely change FPS. They set how fast the gearbox cycles.
Notes
- Barrel: Standard length works with any stock cylinder — no compatibility concerns.
- Cylinder volume (100%) is a good match for this barrel (~100% ideal).
AEG hardware glossary
- Spring (M-rating)
- Compression spring inside the gearbox that drives the piston. Higher M-number = stiffer spring = more FPS, but more wear on gears, piston, and air-nozzle seal.
- Bore size
- Inner barrel diameter. Tighter bore (6.01–6.03mm) improves air-seal efficiency and consistency; wider stock bores (6.05–6.08mm) are more forgiving of imperfect BBs.
- Gear ratio
- Motor revolutions needed per piston stroke. Higher ratio (24:1+) = more torque per stroke = better cold-weather/heavy-spring performance. Lower ratio (13:1) = faster cycling = higher ROF.
- DSG (Dual Sector Gear)
- A sector gear that fires two piston strokes per full gear revolution, roughly doubling effective ROF for a given motor/ratio. Requires a DSG-specific gearbox shell.
- MOSFET
- An electronic switch that routes high current away from the mechanical trigger contacts. Effectively mandatory above 9.6V to prevent arcing damage.
- NiMH vs LiPo
- LiPo holds voltage steady as it discharges (consistent ROF shot to shot); NiMH sags under load, so ROF slows as the pack drains.
- Cylinder volume
- How much compressed air the piston pushes per stroke, shown as a % of a stock "full-stroke" cylinder (100%). Needs to roughly match the barrel's internal air volume: too low starves long barrels, too high wastes stroke on short ones.
Spring brand cross-reference
"M-rating" is informal industry shorthand. Most brands roughly track it, but numbering is set by each manufacturer. Treat this as a starting point and always chrono after installing.
Guarder note: Guarder's retailer-published chrono data shows SP-series springs shooting noticeably hotter than their label implies, often a full M-band higher at 0.20g. So the table places Guarder springs by tested FPS: SP130 sits in the M150 row, not M130.
| FPS band (@ 0.20g) | Generic | Guarder SP (tested) | Systema | SHS | Prometheus / Laylax |
|---|---|---|---|---|---|
| 290–300 | M90 | SP90 (label ~285; tested ~310) | M90 (~290–300) | — | MS90SP (~315) |
| 330–350 | M100 | — | M100 (~340–360) | — | MS100SP / PSS10 100SP (~340) |
| 350–380 | M110 | SP100 (label ~325; tested ~360) | — | M110 (~350–380) | MS110SP (~390) |
| 380–410 | M120 | SP110 (label ~355; tested ~387) | M120 (~395–405) | M120 (~380–420) | MS120SP (~410–440) |
| 410–440 | M130 | SP120 (label ~385; tested ~416) | M130 (~420–430) | M130 (~430) | — |
| 440–470 | M140 | — | M140 (~450–460) | M140 (~450) | — |
| 470–500 | M150 | SP130 (label ~420; tested ~490); SP140 (label ~455; tested ~498) | M150 (~470–490) | M150 (~480) | — |
| ~500–520 | M160* | SP150 (label ~485; tested ~518); SP160 (~525, extrapolated)* | M160 (~500–550) | — | — |
FPS figures are for 0.20g in an otherwise stock gearbox. "Tested" figures come from a UK retailer's own chrono testing of stock springs, not marketing claims. *M160/SP160 extrapolated beyond commonly published data. Blanks mean no reliable published reference was found, not that the part doesn't exist.
Platform and gas
Barrel and conditions
GBB hardware glossary
- Green gas
- ~90% propane / 8–10% butane, usually pre-lubricated. ~115 PSI at 20°C for a generic can. The all-round standard gas.
- Puff Dino (9kg / 12kg / 14kg)
- A Taiwan-made green gas brand very common in PH shops. The kg names are pressure tiers, not literal PSI. 12kg and 14kg run meaningfully hotter than generic green gas (14kg ~10% stronger than 12kg); 9kg is a lighter fill for Japan-spec and NBB guns, or to tone down a gun that runs hot.
- Red / black gas
- Higher-pressure propane blend for more power and better cold-weather performance. Check your valve and seals are rated for it.
- CO2
- ~850–900 PSI raw, regulated down at the valve. Barely affected by cold, very consistent, but hits noticeably harder. Many fields restrict CO2 on full-auto GBBRs.
- NPAS
- Negative Pressure Air System / nozzle air volume adjuster. Tunes how much gas reaches the striker per shot.
- Blowback
- The slide or bolt cycling on each shot. Diverts some gas energy from the BB, so locking it sends more energy downrange.
Power
Using your AEG tab settings. Change them there and this updates.
Hop-up
Notes
- Ideal BB weight for 1.14J is roughly 0.25g — you're using 0.25g.
HT-X3005 and X3006 chronos read about 3% low. On a 420 cap, a 419 on your HT is really around 428–439. Enter your bench string and this estimates what a field Acetech or Xcortech would show.
Your HT readings
Set the chrono up firstcaliber 6.00mmreal BB weight8–10 shots

- Caliber: 6mm. Not the 4.5mm/.177 pellet setting some units default to.
- BB weight: the BB you are actually shooting, not a default. One known weight only; mixed BBs make the reading useless.
- Display: FPS or m/s both work. This calculator converts.
- Shoot 8–10 shots minimum. Single shots are too noisy.
Correction
Generic estimate with a 2.0–4.7% band. Calibrating against a field chrono once tightens it to about ±3 fps.
To pass, keep your HT at or under 429 fps on 0.20g.
More numbers
- Bench average
- 339 fps
- Mid estimate
- 106.4 m/s
- Energy, mid
- 1.13 J
- Energy understated by
- +6.3%
- Shot spread
- 7 fps
Notes
- Your chrono is under-reading by roughly 10 FPS. Bench average 339 FPS (103.2 m/s) → estimated true 345–354 FPS, mid 349 FPS (106.4 m/s) on 0.20g. In energy terms: 1.06 J displayed vs 1.13 J mid / 1.17 J worst case — understated by ~6.3%, because energy scales with the square of velocity.
- This is a generic estimate, not a calibration. It assumes your unit behaves like the published average. Real HT units vary a lot — some are near-perfect, others are badly off — and that unit-to-unit spread is the single biggest source of error here, bigger than the average bias itself. If you can get one reading from a field Acetech/Xcortech on the same gun, switch to Calibrate to my own unit above; it's far more accurate than any generic percentage.
- Whatever this says, chrono on the field's own unit before you play. This tool exists so the gap doesn't surprise you — it is not something to argue with a marshal about.
Why your HT reads low (and why it matters)
The HT-X3005 and HT-X3006 are the budget chronographs most of us actually own: cheap, pocket-sized, everywhere in PH shops. They're genuinely useful for tuning. The problem is what happens when you take that number to a game.
Both our own bench testing and the published comparisons point the same way: the HT reads low against reference-grade units, by roughly 3%, around 10–15 FPS at typical AEG velocities. Your gun is hotter than your chrono is telling you.
That direction is the whole point. Over-reporting would just leave performance on the table. Under-reporting means you can walk up to a field chrono believing you're legal and fail, or pass a lax check and spend the day shooting people harder than the site allows.
Where it bites: on a 420 FPS PH CQB cap, a bench reading of 419 looks like one FPS under. You're realistically around 428–439, over the cap across the entire range. For even the worst case to stay under 420, your HT needs to read 401 or lower.
It's worse in joules. Energy scales with the square of velocity, so a 3% velocity error becomes a 6–8% energy error. Real example from the unit pictured above: it displayed 321.8 FPS / 0.961 J on a 0.20g BB, apparently inside Japan's 0.98 J ASGK limit. Corrected, that shot is more like 328–337 FPS / 1.00–1.05 J, over the legal limit across the whole range.
The honest caveat: this shows a range, not one number, on purpose. Published HT-vs-reference comparisons don't all agree; some units are nearly spot-on, others far worse than 3%. Unit-to-unit variation is a bigger source of error than the average bias, so no single percentage is right for every device. If you can get one reading from a field Acetech or Xcortech on the same gun, use Calibrate my unit.
This tool exists so the gap doesn't surprise you at the safety table. It does not replace the field's chrono.
How the correction was derived
Our own testing: 20-shot strings on two deliberately different platforms, a WE M4A1 GBBR (gas, higher shot-to-shot variance) and a King Arms P90 AEG (electric, tighter grouping), each chronographed on the HT and on reference-grade equipment.
The independent test we lean on most: AirsoftLab mounted an HT-X3005 directly in front of an Acetech AC6000 and fired three 10-shot strings. The HT read lower on every shot, averaging about 11 FPS low. Two Acetech units tested against each other differed by only ±2 FPS (±0.5%) at ~405 FPS. They also noted the difference was "not really stable, so it's not just an offset": once the average bias was removed, residual scatter was around ±3 FPS.
Why a percentage, not a fixed FPS. An optical chrono works out speed as distance ÷ time between two light gates. If the gate spacing or clock is slightly off, every reading is scaled by the same ratio, so the error grows with velocity. A flat "+11 FPS at every velocity" is the one shape no plausible mechanism predicts, so this applies ÷ 0.97 (about 3.1%) with a band from 2.0% to 4.7%.
| HT reading | Est. true (range) | Mid gap | Joules @ 0.20g (bench → mid) |
|---|---|---|---|
| 300 | 306 – 314 | +9 (+3.1%) | 0.84 → 0.89 (+6.3%) |
| 350 | 357 – 366 | +11 (+3.1%) | 1.14 → 1.21 (+6.3%) |
| 400 | 408 – 419 | +12 (+3.1%) | 1.49 → 1.58 (+6.3%) |
| 450 | 459 – 471 | +14 (+3.1%) | 1.88 → 2.00 (+6.3%) |
| 500 | 510 – 524 | +15 (+3.1%) | 2.32 → 2.47 (+6.3%) |
| 550 | 561 – 576 | +17 (+3.1%) | 2.81 → 2.99 (+6.3%) |
The energy gap is roughly double the FPS gap because energy scales with velocity squared. Where sites regulate in joules (much of the EU, Japan's 0.98 J), the under-read hurts about twice as much.
The HT's own spec sheet claims ≤0.5% accuracy, which independent testing plainly doesn't support. A generic correction narrows the gap; it doesn't close it.
Sources: AirsoftLab's HT-X3005 chrono and AC6000 chrono accuracy bench comparisons, plus owner reports across airsoft and airgun forums.
Known limitations
Derived from field testing (20-shot strings, WE M4A1 GBBR + King Arms P90 AEG) plus cross-referenced owner reports on the HT-X3005/X3006, not a factory calibration certificate. Treat outputs as a practical estimate, not legal or competition-grade certification.
Individual units vary. Always re-verify against the field's chronograph before relying on any number for an FPS cap.
Assumes the device is set to 6mm and the correct BB weight. Wrong setup gives wrong output regardless of the maths.
FPS to joules chart, Philippine field caps
Most FPS charts online are built around US and UK caps. PH fields run much hotter: 450 for standard rifles, 500 for DMR and 550 for bolt-action snipers, all measured on 0.20g. Find your chrono number on the left and read across to see the energy on heavier BBs.
What does my number mean?
450 fps on 0.20g is 137.2 m/s. Lowest class it fits: Outdoor Standard (≤ 450 @ 0.20g).
| fpsm/s | 0.20g | 0.23g | 0.25g | 0.28g | 0.30g | 0.32g | 0.36g | 0.40g | 0.43g | 0.45g |
|---|---|---|---|---|---|---|---|---|---|---|
| 25076.2 | 0.58 | 0.67 | 0.73 | 0.81 | 0.87 | 0.93 | 1.05 | 1.16 | 1.25 | 1.31 |
| 26079.2 | 0.63 | 0.72 | 0.79 | 0.88 | 0.94 | 1.00 | 1.13 | 1.26 | 1.35 | 1.41 |
| 27082.3 | 0.68 | 0.78 | 0.85 | 0.95 | 1.02 | 1.08 | 1.22 | 1.35 | 1.46 | 1.52 |
| 28085.3 | 0.73 | 0.84 | 0.91 | 1.02 | 1.09 | 1.17 | 1.31 | 1.46 | 1.57 | 1.64 |
| 29088.4 | 0.78 | 0.90 | 0.98 | 1.09 | 1.17 | 1.25 | 1.41 | 1.56 | 1.68 | 1.76 |
| 30091.4 | 0.84 | 0.96 | 1.05 | 1.17 | 1.25 | 1.34 | 1.51 | 1.67 | 1.80 | 1.88 |
| 31094.5 | 0.89 | 1.03 | 1.12 | 1.25 | 1.34 | 1.43 | 1.61 | 1.79 | 1.92 | 2.01 |
| 32097.5 | 0.95 | 1.09 | 1.19 | 1.33 | 1.43 | 1.52 | 1.71 | 1.90 | 2.05 | 2.14 |
| 330100.6 | 1.01 | 1.16 | 1.26 | 1.42 | 1.52 | 1.62 | 1.82 | 2.02 | 2.18 | 2.28 |
| 340103.6 | 1.07 | 1.24 | 1.34 | 1.50 | 1.61 | 1.72 | 1.93 | 2.15 | 2.31 | 2.42 |
| 350106.7 | 1.14 | 1.31 | 1.42 | 1.59 | 1.71 | 1.82 | 2.05 | 2.28 | 2.45 | 2.56 |
| 360109.7 | 1.20 | 1.38 | 1.51 | 1.69 | 1.81 | 1.93 | 2.17 | 2.41 | 2.59 | 2.71 |
| 370112.8 | 1.27 | 1.46 | 1.59 | 1.78 | 1.91 | 2.03 | 2.29 | 2.54 | 2.73 | 2.86 |
| 380115.8 | 1.34 | 1.54 | 1.68 | 1.88 | 2.01 | 2.15 | 2.41 | 2.68 | 2.88 | 3.02 |
| 390118.9 | 1.41 | 1.63 | 1.77 | 1.98 | 2.12 | 2.26 | 2.54 | 2.83 | 3.04 | 3.18 |
| 400121.9 | 1.49 | 1.71 | 1.86 | 2.08 | 2.23 | 2.38 | 2.68 | 2.97 | 3.20 | 3.34 |
| 410125.0 | 1.56 | 1.80 | 1.95 | 2.19 | 2.34 | 2.50 | 2.81 | 3.12 | 3.36 | 3.51 |
| 420128.0 | 1.64 | 1.88 | 2.05 | 2.29 | 2.46 | 2.62 | 2.95 | 3.28 | 3.52 | 3.69 |
| 430131.1 | 1.72 | 1.98 | 2.15 | 2.40 | 2.58 | 2.75 | 3.09 | 3.44 | 3.69 | 3.86 |
| 440134.1 | 1.80 | 2.07 | 2.25 | 2.52 | 2.70 | 2.88 | 3.24 | 3.60 | 3.87 | 4.05 |
| 450137.2 | 1.88 | 2.16 | 2.35 | 2.63 | 2.82 | 3.01 | 3.39 | 3.76 | 4.04 | 4.23 |
| 460140.2 | 1.97 | 2.26 | 2.46 | 2.75 | 2.95 | 3.15 | 3.54 | 3.93 | 4.23 | 4.42 |
| 470143.3 | 2.05 | 2.36 | 2.57 | 2.87 | 3.08 | 3.28 | 3.69 | 4.10 | 4.41 | 4.62 |
| 480146.3 | 2.14 | 2.46 | 2.68 | 3.00 | 3.21 | 3.42 | 3.85 | 4.28 | 4.60 | 4.82 |
| 490149.4 | 2.23 | 2.57 | 2.79 | 3.12 | 3.35 | 3.57 | 4.02 | 4.46 | 4.80 | 5.02 |
| 500152.4 | 2.32 | 2.67 | 2.90 | 3.25 | 3.48 | 3.72 | 4.18 | 4.65 | 4.99 | 5.23 |
| 510155.4 | 2.42 | 2.78 | 3.02 | 3.38 | 3.62 | 3.87 | 4.35 | 4.83 | 5.20 | 5.44 |
| 520158.5 | 2.51 | 2.89 | 3.14 | 3.52 | 3.77 | 4.02 | 4.52 | 5.02 | 5.40 | 5.65 |
| 530161.5 | 2.61 | 3.00 | 3.26 | 3.65 | 3.91 | 4.18 | 4.70 | 5.22 | 5.61 | 5.87 |
| 540164.6 | 2.71 | 3.12 | 3.39 | 3.79 | 4.06 | 4.33 | 4.88 | 5.42 | 5.82 | 6.10 |
| 550167.6 | 2.81 | 3.23 | 3.51 | 3.93 | 4.22 | 4.50 | 5.06 | 5.62 | 6.04 | 6.32 |
| 560170.7 | 2.91 | 3.35 | 3.64 | 4.08 | 4.37 | 4.66 | 5.24 | 5.83 | 6.26 | 6.56 |
| 570173.7 | 3.02 | 3.47 | 3.77 | 4.23 | 4.53 | 4.83 | 5.43 | 6.04 | 6.49 | 6.79 |
| 580176.8 | 3.13 | 3.59 | 3.91 | 4.38 | 4.69 | 5.00 | 5.63 | 6.25 | 6.72 | 7.03 |
| 590179.8 | 3.23 | 3.72 | 4.04 | 4.53 | 4.85 | 5.17 | 5.82 | 6.47 | 6.95 | 7.28 |
| 600182.9 | 3.34 | 3.85 | 4.18 | 4.68 | 5.02 | 5.35 | 6.02 | 6.69 | 7.19 | 7.53 |
How to read this chart
PH fields chrono on 0.20g, so the 0.20g column is the one that decides your class. The caps here (CQB 420, standard 450, DMR 500, BASR 550) follow common local conventions; your site may differ, so confirm before game day.
Every other column is coloured by energy. Each cap is converted to its joule equivalent (450 fps on 0.20g = 1.88 J) and any shot at or under that energy shares the colour. That is how you compare a 0.28g DMR load or a 0.40g sniper load against a cap written for 0.20g.
One catch: springers usually gain a little energy on heavier BBs, because the BB stays in the barrel longer. A gun that chronos 450 on 0.20g can land slightly above 1.88 J on 0.30g. If your field chronos on your game BBs or caps joules, chrono with those BBs.
Joules = ½ × mass × velocity². 1 fps = 0.3048 m/s. Values rounded to 0.01 J.
Frequently asked questions
What are the airsoft FPS limits in the Philippines?
Common PH caps on a 0.20g BB are about 420 FPS for CQB sites, 450 for standard rifles outdoors, 500 for DMRs and 550 for bolt-action snipers. That is roughly 1.64, 1.88, 2.32 and 2.81 joules, well above typical US (350–400) and UK (328) caps. Sites set their own rules, so confirm with yours. The PH FPS chart tab above shows every combination up to 0.45g.
Does the HT-X3005 or HT-X3006 read high or low?
They read low. In a controlled bench comparison by AirsoftLab, an HT-X3005 mounted directly in front of an Acetech AC6000 read lower than the Acetech on every shot across three 10-shot strings — averaging about 11 FPS low. Your replica is shooting harder than the HT displays, which is the direction that gets people failed at a chrono check they expected to pass.
How much does the HT-X3005/X3006 under-report FPS?
Roughly 3% — about 9 FPS at 300 FPS, 12 FPS at 400 FPS, and 17 FPS at 550 FPS. The correction is proportional rather than a flat FPS figure because an optical chronograph works out velocity as distance ÷ time between two light gates, so an error in gate spacing or clock timing scales with velocity. Individual units vary a lot, so treat 3% as typical rather than guaranteed.
Why is the joules error bigger than the FPS error?
Kinetic energy is ½ × mass × velocity², so energy scales with the square of velocity. A 3% velocity under-read becomes roughly a 6.3% energy under-read. This matters most where sites regulate in joules rather than FPS — much of the EU, and Japan's 0.98 J ASGK limit.
What should my HT read to pass a 420 FPS field limit?
About 401 FPS or lower. A 419 FPS reading looks like 1 FPS of headroom under a 420 cap, but true velocity is realistically 428–439 FPS — over the limit across the entire plausible range. Because units vary, leaving 15–20 FPS of margin below the posted cap is sensible.
Is the HT-X3005/X3006 accurate enough for airsoft?
Fine for comparative tech work; not for tuning to a field limit. Shot-to-shot consistency is good — residual scatter is around ±3 FPS once the systematic bias is removed — so it reliably tells you whether a change to your build helped or hurt. The problem is the absolute reading, which sits systematically below reference units like the Acetech AC6000 and Xcortech X3200.
Can I calibrate an HT-X3005/X3006?
There's no user calibration setting, but you can measure its bias and correct for it. Chrono the same replica with the same BBs through both your HT and a reference unit in one session, then divide your HT reading by the reference reading to get your personal correction factor. That's substantially more accurate than any generic percentage, because unit-to-unit variation is larger than the average bias itself. The calculator above has a calibration mode that does this for you.
How do I convert airsoft FPS to joules?
Multiply FPS by 0.3048 for metres per second, divide BB weight in grams by 1000 for kilograms, then apply E = ½mv². Example: 350 FPS on a 0.20g BB is 106.7 m/s, giving 1.14 J. Joules are the more meaningful cross-weight comparison, since a heavier BB leaves the barrel slower while carrying similar energy.
Why does my chronograph show a wide spread between shots?
A healthy AEG or GBBR string spreads about 15–30 FPS between lowest and highest shot. Beyond roughly 40 FPS you're usually looking at a mechanical problem rather than chrono noise — air seal leaks, inconsistent hop-up contact, worn or mismatched BBs, feeding issues, or on gas platforms a magazine cooling during a fast string.