This is an Android app available at Google Play in two versions:

GForce Free


Let's cut to the chase: how to use this app.

NOTE 1: this app measures performance using the accelerometer. It does not use the GPS. Every Android device has an accelerometer, it updates far faster than the GPS, and can give more accurate performance measurements.

NOTE 2: But the accelerometer has no positional reference. Thus, it's necessary to calibrate each run with the car stationary in order to have a reference point for the accelerometer. GForce does this automatically, and quickly (1 second).


Hold your device flat on a table and start acceleration mode; after a 1 second calibration the dial appears. When the dial appears, slide the device quickly in any direction. The white needles on the dial should move opposite (away from) the direction of motion.

  • If the needles are moving toward the direction of motion, go to Settings and flip the axis (X, Y or both).

  • If the needles are moving 90* from direction of motion, go to Settings and select a rotation via "Rotate X-Y".

  • Now you are ready to measure performance.


    This mode is for measuring cornering and braking forces, for example on an autox or road racing course. Mount your device firmly to the vehicle so it cannot move or rotate, the screen is facing you and within easy reach. Start acceleration mode; after a 1 second calibration the dial appears. Now ignore the device and drive. The app continuously measures and displays your instant, sustained and peak acceleration, both direction and magnitude. The dial radius (max setting) defaults to 1G. If acceleration exceeds 1G (for example R tires on a good handling car) and goes outside the dial, it is still recorded with no loss of accuracy.

  • If the needles go off the dial, go to settings and increase the dial radius G to 1.5 or 2 Gs.

  • At any time, touch the screen anywhere and the following will happen:
  • All values (instantaneous, sustained and peak) will be written to a text file on the device.

  • Peak values will be reset back to zero so new peaks can be recorded.
  • Acceleration mode can be run indefinitely


    This mode is for measuring straight line acceleration, for example on a 1/4 mile drag strip. Mount your device as you would for acceleration mode. Click velocity mode from the main screen, leave the big "Start" button displayed. When you reach the starting line and are fully stopped ready to go, click the "Start" button. After a 1 second calibration the speedometer appears; the device is ready.
    NOTE: from here on you can ignore the device and drive!
    You will notice the speedometer has no needle. As soon as you start moving the speedometer needle appears and the app starts recording. As you pass key points, data will appear on the display. Key points are upon reaching:

  • 60' distance

  • 60 MPH

  • 1/4 mile distance
  • Velocity mode stops running upon reaching 1/4 mile distance. The screen remains, showing the 1/4 mile data (speedo dial, times, distances, power). At any time, touch the screen anywhere and the data will be written to a text file on the device.


    G-Force uses the 3-axis accelerometer to analyze vehicle performance.

    Android devices vary in hardware sensors & features, for example not all devices have a GPS or a magnetic compass. But all Android devices have a 3-axis accelerometer. Most commonly, it's used to detect whether the device is in landscape or portrait mode.

    Google Sky Map uses it in a more unique way: combined with the magnetic compass, it detects the direction & angle of the device held up against the sky, to show on the screen the stars in the sky as seen from that angle by the viewer.

    G-Force provides another creative & useful way to use the accelerometer. With some basic Newtonian physics and 3-D linear algebra and vector/matrix math, the accelerometer can be used to analyze your car's performance.

    There are apps in the Android market that analyze car performance, but they use the GPS not the accelerometer. GPS is easier to use because it gives position, and velocity and acceleration can be computed from that. But GPS has 3 key drawbacks:

  • It updates too slowly for good accuracy. If your car goes 0-60 in 5 seconds, that's only about 10 updates from the GPS. Results will be inconsistent, which makes them less useful.
  • Not every Android device has a GPS. For example, the Kindle Fire doesn't have one.
  • The GPS signal can be unreliable, especially in cars.
  • To summarize, accelerometer based car performance is more accurate, more reliable, and works on all devices.


    G-Force does a brief (1 second) calibration to sense the device orientation. Then it waits for motion to occur. As soon as motion occurs it starts tracking velocity & position. This frees the driver to simply push START and forget about the device & app while driving. After pushing START, he can sit for any length of time before moving. As soon as he starts moving, G-Force starts tracking.

    Here's what the G-Force app measures:

    Acceleration mode:

    This is the only mode the free version of G-Force supports. You can ensure G-Force works on your device, and you can measure your accelerating, cornering & braking forces.

  • Raw G Force: in X-Y plane (parallel with Earth's surface). Both instant and sustained, and peak for both. It reads both axes simultaneously, both magnitude and direction, showing it in a large real-time analog display.
  • Velocity mode:

    This mode measures straight-line performance.

  • Speed: how fast you are moving, relative to calibration (usually done at rest). This is done by integrating acceleration readings.
  • Position: how far you've moved, relative to calibration. This is done by integrating velocity readings.
  • 60': time to reach 60' and speed upon reaching it. Typically of interest in 1/4 mile runs to assess how well you're getting off the line.
    1 G of acceleration produces a 60' of 1.94 sec at 42 mph.
  • 0-60: time to reach 60 MPH and distance upon reaching it.
    1 G of acceleration goes 0-60 in 2.75 sec in 121'
  • 1/4 mile: time to travel 1,320' and speed upon reaching it.
    1 G of acceleration runs the 1/4 mile in 9.08 secs at 198 MPH.
  • Horsepower: how much power is needed to produce the acceleration measured. This depends on the total mass of car + driver + fuel + etc. Power is essentially velocity * acceleration * mass. Actual HP produced by the engine is higher than this, as the engine must overcome air resistance, tire rolling resistance, etc.
  • True Power: Power output corrected for wind resistance losses. This is the same power output that would be measured on a dyno. Because GForce measures acceleration and velocity at different speeds, it can compute how much power is lost due to air resistance, which provides true power, car aerodynamics, and top speed prediction.
  • The following features are being developed or considered, NOT implemented as of this time.

  • Track: show the track the car drove (curves, straights, etc.) relative to the start position. This will combine the accelerometer with GPS readings. Save tracks as KMZ files on the device (can be showed in Google Earth and other apps).

    Most importantly, the direction of motion must be isolated from all other motion. If we could align the device perfectly level or upright, we could simply use the X, Y or Z axis alone and ignore the other two. But this would be impractical. The device is going to be in some kind of mount or holder and can be at any angle or orientation.

    Instead, the GForce app has a calibration step that reads the accelerometer when the car is not moving (or when it's moving at a constant speed - not accelerating). We call this the "base" or "basis" vector. From this, it knows the direction and magnitude of "G" (gravity) regardless of the orientation or angle of the device. From that, it:

  • Computes the 3-D rotation angles needed to align the basis vector with the Z axis.
  • For all subsequent readings, it computes the difference between that reading and the basis vector.
  • Soon after the car starts moving, the direction of motion becomes evident. GForce computes the angle needed to rotate the direction of motion to align with the Y axis. When it does this you will see the acceleration markers on the dial swing around to the Y axis.
  • The above 3 steps make it easy, fast and accurate to measure car performance.

  • The math is easy, since after the rotations, the X and Z axis are ignored and only the Y axis is used.
  • It is fast, since all rotations are expressed as vector-matrix operations, and any series of rotations can be expressed as a single matrix multiplication.
  • It is efficient, since the G-Force app is multithreaded. All computation & graphics are done on a different thread from accelerometer updates, so the accelerometer update thread is never bogged down.
  • For best accuracy, the accelerometer must be read repeatedly as quickly as possible. Put differently, it must be used with the highest possible update rate. This varies by device; I've observed maximum rates from 10 to 100 times per second. The slowest, while not ideal, is still several times faster than GPS.


    Use acceleration mode first before using any other mode. This ensures the app is working and you have the settings needed for your device.

    How to test G-Force accuracy:

    One way to test accuracy is to use Velocity mode, tilt your device 90* after calibration. The acceleration arrow should point to the ring of the dial. Hold it there and let it accelerate at a constant 1G. It should show the following stats:

    60' time: 1.94 sec 60' speed: 42 mph

    0-60 time: 2.75 sec 0-60 dist: 121'

    1/4 mile time: 9.08 sec 1/4 mile speed: 198 mph

    An accurate accelerometer won't quite achieve the above stats because it doesn't start out with 1G of acceleration. During the fraction of a second when you tilt your device, the acceleration is changing from zero to 1G. Thus this test shows slightly less acceleration than the above indicates. If you tilt it too fast you'll cause over-acceleration that will throw off the results. Theoretically 0-60 at 1 G is 2.75 seconds. However, due to the above, if it measures in the low 3 seconds, then your device is accurate.

    Another accuracy test is to use Acceleration mode, tilt your device 90* after calibration and watch the acceleration arrow. It should reach exact to the 1G ring on the dial: no more, no less. If you can find a position where the arrow can't reach the dial, or reaches outside it, you need to recalibrate.

    NOTE: most devices have imperfect accelerometers. Computing velocity from acceleration, and position from velocity, is integration which amplifies errors. Fortunately, perfection isn't needed to attain good real-world accuracy. We only need enough accuracy to last a few seconds.



  • As the car moves through 1/4 mile, it is at full throttle and it must shift gears.
  • The power curve for each gear (1st, 2nd, etc.) will have a peak value.
  • That peak value represents full throttle peak power RPM for the engine, in that gear.
  • That peak power output is the same at peak in every gear - at the engine.
  • That peak power output is lower in each gear, as measured because it's moving faster with higher losses due to wind resistance.
  • The above assumptions imply that the difference between the measured peak power values in each gear is due to wind resistance. We know power losses due to wind resistance increase with the cube of speed. Thus if we know the measured peak power output at any 2 speeds, we can factor out wind resistance and compute peak power at the rear wheels of the car. This is what the true power computation does.

    At the end of each 1/4 mile run, GForce analyzes the power curve to find 2 successive peaks. It draws vertical green lines on the power graph to show which peaks it uses in the true power computation. It does this computation instantly and displays the result.

    If GForce can't find 2 successive peaks on the power curve, or if the computation reveals a strange result, GForces shows N/A for true power.
    Example 1: if you have a constant variable transmission, measured power output will be monotonically decreasing, there are no peaks for GForce to find and it can't compute true power.
    Example 2: if you don't use full throttle in each gear, then the difference in power is not entirely due to air resistance, and true power will be inaccurate or may not be computed at all.
    If you use full throttle acceleration to redline in every gear, true power computation works with virtually all standard and automatic transmission cars.

    If you're wondering how we know power is proportional to speed cubed, read on. Air resistance is proportional to speed squared: moving twice as fast produces 4 times the wind resistance. Now suppose it takes power P to move a fixed distance D, at speed S. Moving at speed 2S, you'd get 4 times the air resistance. That means 4 times as much force (thrust) to overcome that air resistance. You exert that force over the same distance, and work is force * distance, so you do 4 times as much work. But since you're going twice as fast, you do that work in half the time. Power is work / time, and 4 times the work in half the time is 8 times the power. Going twice as fast requires 8 times the power. Generalize this mathematically and you have power proportional to speed cubed.


    The accelerometer cannot distinguish movement from rotation. That is, if you tilt the device after calibrating it, it will think you're accelerating in the direction you tilted it. This becomes a problem if the vehicle tilts while GForce is running. But "Hey!" you might say, "My car moves on a flat road - how could it be tilting?" Here, "tilt" could be:

  • The suspension leaning in a turn
  • Squat and dive under acceleration and braking
  • Going up or down a hill
  • Most devices have a gyroscope in addition to an accelerometer. The gyro can sense rate of rotation around any axis. Using the gyro, we can can compensate for tilt and keep the accelerometer accurate in the above situations.

    However, this has limitations:

  • The gyro is less accurate than the accelerometer
  • The gyro drifts so errors accumulate, making it wildly inaccurate over time
  • 3-D rotations are not commutative (more on this below)
  • 3-D Rotations and Commutativity

    Consider a gyro that says it has rotated 20* around X, 30* around Y and 40* around Z. To compensate for this we apply the reverse rotations. However, we don't know - the gyro doesn't tell us - in what order the rotations happened. We can order these 3 rotations in 6 different ways and each produces a different end result. To most people this is counterintuitive. You can read more about this online.

    It turns out that small rotations are nearly commutative - the smaller the angles the less it matters in what order they're applied. GForce reads the gyro as fast as the device can send data, typically 100 times per second. So GForce simply does X, then Y then Z in a single matrix operation. This is imperfect but good enough for now. If it messes up your results, go to settings and turn off Gyro Stabilization.

    Even with this simplification I found this feature surprisingly hard to implement. I ended up having to apply a fudge factor to the gyro angle readings and I don't understand why. This fudge factor is in settings as "Gyro Factor". Defaults to 2*pi, which seems to work most of the time. If it doesn't work right, feel free to try different values.

    So I'm releasing what I have so far and meanwhile I'm looking for a better solution.