# TrimCase: full reference text > Graded fuel trim and scan data cases for engine performance students and instructors: read the freeze frame and the live data grid, name the fault and the cells that point to it, and see what you missed. Generated from the site's own data at build time. Last reviewed 2026-09-26. TrimCase is a training aid built on a simulated engine model. It is not a diagnostic instruction for any real vehicle. TrimCase is not affiliated with ASE, the ASE Education Foundation, or any certification or accrediting body. ## Fuel trim diagnosis, step by step URL: https://trimcase-web.pages.dev/guide/ 1. Is the data worth reading. Fully warm, fuel system in closed loop in the idle, 2,500 and cruise cells. Trims taken during warm up or in open loop are not a fingerprint of anything. 2. Codes and the freeze frame. Note what is stored and where it set. A code tells you which monitor failed, not which part. The freeze frame tells you the conditions, which is often the more useful half. 3. Misfire counters before trims. A misfire sends unburned oxygen past the upstream sensor and makes the trims go positive. If one cylinder has counts, deal with that first: the trims are reacting to it, not causing it. 4. Is the coolant reading believable. A warm engine near its regulating temperature, moving a little with load. One frozen cold number means the sensor; a cool reading that drops at road speed means the thermostat. Either one changes the fuel the module meters. 5. Add STFT and LTFT, per bank, per cell. Look at the shape across idle, 2,500 and cruise: high at idle only, rising with airflow, or flat everywhere. The chart in every case plots exactly this. 6. Check the MAF against the engine. Divide the MAF reading by the speed density estimate. Short at idle only means air is getting in around the MAF; short and growing with flow means the MAF reads low; above the estimate means it reads high; short at WOT only with quiet trims means the engine cannot breathe out. 7. Read the downstream sensor. Steady around 0.6 to 0.7 V means the engine is at stoichiometry after the converter. Rich while the trims add fuel means the upstream sensor is being fooled, by a bias or by a misfire. 8. Look at the WOT snapshot. Open loop, commanded rich. If the upstream sensor reads lean at WOT while the MAF agrees with the estimate, the fuel supply is not keeping up. 9. Compare the banks. On a V engine, one bank moving and the other not points to something that belongs to one bank: an injector, an exhaust leak ahead of one sensor, a sensor, a cylinder. 10. Only then decide, and confirm with a physical test. The data narrows the field. A smoke test, a fuel pressure and volume test, a sensor comparison or a misfire swap is what proves it on a real car. ## Guides ### Positive fuel trim at idle: the causes, and how to tell them apart URL: https://trimcase-web.pages.dev/guide/positive-fuel-trim-at-idle/. Last reviewed 2026-09-26. Positive fuel trim at idle that falls back towards zero as rpm and airflow rise almost always means a fixed amount of something the engine computer did not account for: air getting into the intake past the MAF (a vacuum leak, including a leaking PCV path), or outside air being drawn into the exhaust ahead of the upstream oxygen sensor. A fixed leak is a big share of the small idle airflow and a small share of cruise airflow, so the correction shrinks as flow rises. To tell the two apart, compare the MAF reading with what the engine should be drawing: a vacuum leak makes the MAF read short at idle, while an exhaust leak leaves the MAF honest and, on a V engine, shows on one bank only. If the trims are positive at idle and stay positive, or grow, as airflow rises, it is not a leak pattern. Think fuel supply, a MAF reading low, a lean biased sensor or a misfire instead. #### Why a leak shows most at idle At idle the manifold sits well below half an atmosphere, so air rushes through any crack at the speed of sound and the leak flows a fixed mass whatever the engine is doing. In the worked example below the leak passes about 0.39 g/s. That is 13 percent of the air a warm 2.0 L engine draws at idle, but only 3 percent of what it draws at a light cruise. The computer adds fuel in proportion to the air it measured, so the missing share is what the trims have to make up: large at idle, small at cruise. An exhaust leak ahead of the upstream sensor behaves the same way for a different reason. Between exhaust pulses the pressure at the leak dips below atmospheric and outside air is pulled in. At idle the pulses are slow and far apart, so a lot of air gets in; at higher flow the exhaust pressure stays up and little does. The sensor sees the extra oxygen and the trims add fuel the engine did not need. #### The causes, grouped by what they do to the data - Vacuum leak: an intake gasket, a cracked hose, a brake booster line, a throttle body gasket, a torn duct between the MAF and the throttle, or the PCV path (hose, grommet, an open oil filler). Trims positive at idle and near zero at cruise, the MAF short of the estimate at idle, both banks together if the leak is on the common plenum. See the [vacuum leak fingerprint](https://trimcase-web.pages.dev/faults/vacuum-leak/). - Exhaust leak ahead of the upstream sensor: a cracked manifold, a leaking flange or gasket. Same trim shape, but the MAF agrees with the estimate, and on a V engine only the bank with the leak moves. See the [exhaust leak fingerprint](https://trimcase-web.pages.dev/faults/exhaust-leak/). - Single cylinder misfire: unburned oxygen reaches the sensor and the trims go positive, but not only at idle, the misfire counter shows one cylinder, and the downstream sensor reads rich. See the [misfire fingerprint](https://trimcase-web.pages.dev/faults/misfire/). - Not idle only, so not a leak: a weak fuel pump or restricted filter (trims rise with demand and the engine goes lean at WOT), a MAF reading low (trims rise with flow and the MAF falls further short as flow rises), and a sensor biased lean (trims positive by the same amount everywhere, downstream rich). #### How to tell them apart, step by step 1. Confirm the data is worth reading. Take the data fully warm with the fuel system in closed loop. Trims during warm up or in open loop are not a fingerprint of anything. 2. Check the misfire counters first. If one cylinder has counts, deal with the misfire before the trims. The trims are reacting to it, not causing it. 3. Add short and long term trim per bank. Record STFT plus LTFT at idle, at 2,500 rpm with no load and at a steady cruise. Positive at idle and near zero at cruise is the leak shape. 4. Compare the MAF with the engine. Work out what the engine should draw at idle from displacement, rpm, MAP and intake temperature, and divide the MAF reading by it. Short at idle means air is getting in around the MAF. 5. Compare the banks. On a V engine, one bank moving and the other flat points to something that belongs to one bank, such as an exhaust leak ahead of that bank's sensor. 6. Confirm with a physical test. A smoke test of the intake, or an inspection of the exhaust ahead of the sensor, following the service information. The data narrows the field; the test proves it. #### Worked example: a vacuum leak next to an exhaust leak Two faults from the model at their reference size, with no noise. The vacuum leak is on a 2.0 L inline four; the exhaust leak is ahead of bank 2's sensor on a 3.5 L V6. The trim shapes are almost the same. The MAF column and the healthy bank are what separate them. Total trim (STFT + LTFT, percent) and the airflow check (MAF as a percentage of the speed density estimate): | Case | Idle trim | 2,500 rpm trim | Cruise trim | Airflow check at idle | | --- | --- | --- | --- | --- | | Vacuum leak, 2.0 L | +14.9 | +5.4 | +2.8 | 87% | | Exhaust leak, V6 bank 2 | +12.0 | +5.3 | +3.8 | 100% | | Same V6, bank 1 | 0.0 | 0.0 | 0.0 | 100% | Read it the way the drill grades it. Both faults add between +12.0 and +14.9 percent at idle and fall to a few percent at cruise. On the inline four the MAF reads only 87 percent of what the engine is drawing at idle, so air is getting in around it: vacuum leak. On the V6 the MAF agrees with the engine and bank 1 sits at 0.0, so the extra oxygen is only in bank 2's exhaust: exhaust leak ahead of that sensor. #### Common mistakes - Calling it a vacuum leak without the MAF check. An exhaust leak ahead of the sensor gives the same trim shape. - Reading short term trim alone. Once the computer has learned the correction, most of it sits in long term trim. - Chasing the trims while a misfire counter is climbing. A misfire makes the trims positive on its own. - Taking the data cold or in open loop, where the trims do not mean what they mean warm. - Assuming a leak must show on both banks. A plenum leak does; a leak at one bank's runners or an exhaust leak shows on one side. - Hunting a leak with flammable spray around a hot engine. A smoke test is safer and shows the leak directly. #### Sources - SAE J1979, the OBD II diagnostic services standard, and its successor SAE J1979-2 for OBD on UDS. They define the fuel trim parameters (PIDs 06 to 09: short and long term trim for bank 1 and bank 2, scaled from minus 100 to plus 99.2 percent, where positive means fuel is being added) and the mass airflow parameter (PID 10, in grams per second). - SAE J2012, which defines the standard trouble code meanings, including P0171 and P0174 (system too lean, bank 1 and bank 2) and P0172 and P0175 (system too rich, bank 1 and bank 2). - The US EPA onboard diagnostics requirement for light duty vehicles, 40 CFR 86.1806, which requires a fuel system monitor and largely adopts California's OBD II regulation, 13 CCR 1968.2. - Manufacturer service information for the vehicle in front of you. It sets the real trim limits, when a lean or rich code is allowed to set, which side is bank 1, and the confirmation tests. These vary by make, engine and model year, so no number on this page replaces them. - The [TrimCase engine model](https://trimcase-web.pages.dev/model/), which computes every number in the worked example on this page. #### Frequently asked questions ##### Is positive fuel trim at idle always a vacuum leak? No. A vacuum leak is the most common cause, but an exhaust leak ahead of the upstream sensor gives the same shape. The MAF check separates them: a vacuum leak makes the MAF read short of what the engine is drawing at idle, and an exhaust leak does not. ##### How much positive fuel trim at idle is too much? There is no single number, because each manufacturer sets its own limits. Many technicians treat a total of short plus long term trim within about plus or minus 10 percent as normal and start looking beyond that. Lean codes commonly set somewhere above plus 20 percent, depending on the vehicle. ##### Can a PCV problem cause positive fuel trim at idle? Yes, when it lets in air the MAF never measured: a cracked PCV hose, a leaking grommet or an open oil filler. On scan data that is a vacuum leak. A PCV valve stuck open on a sealed crankcase draws metered air and moves the trims very little. ### Negative fuel trim: the causes, and how to check each one URL: https://trimcase-web.pages.dev/guide/negative-fuel-trim-causes/. Last reviewed 2026-09-26. Negative fuel trim means the engine computer is taking fuel away because the upstream oxygen or air fuel sensor reports rich. The usual causes are extra fuel the computer did not meter (a leaking injector, fuel pressure too high, a purge valve stuck open with a loaded canister, fuel vapour coming from the crankcase), an airflow reading that is too high (a MAF over reporting), or a coolant sensor that reads cold, so the computer adds warm up fuel that the trims then have to remove. The shape of the trims across idle, 2,500 rpm and cruise, together with the MAF check and the coolant reading, tells them apart. Negative trims are the sensor doing its job, so a new oxygen sensor rarely fixes them. Find where the extra fuel, or the missing air, comes from. #### What negative means Fuel trim is reported as a percentage of the fuel the computer meters from its air reading. Positive means it is adding fuel because the sensor says lean; negative means it is removing fuel because the sensor says rich. The standard scan data parameters run from minus 100 to plus 99.2 percent, and what matters for diagnosis is the total, short term plus long term, per bank and per load cell. A total of minus 10 means the engine is getting, or seems to be getting, about 10 percent more fuel than the air it has. #### Two shapes, two groups of causes Negative at idle and near zero at cruise means a fixed amount of extra fuel, which is a large share of the small idle fuel flow and a small share at cruise: - A leaking injector: a drip while the injector is shut. The MAF agrees with the engine, and on a V engine only the bank with the injector moves. See the [leaking injector fingerprint](https://trimcase-web.pages.dev/faults/leaking-injector/). - An EVAP purge valve stuck open with a loaded canister: vapour the computer did not expect, carried in air the MAF never saw, so the MAF reads short at idle as well. Often worse just after a fill up. See the [purge valve fingerprint](https://trimcase-web.pages.dev/faults/purge-stuck-open/). Negative by about the same amount everywhere means the error scales with the fuel or the air itself: - Fuel pressure too high: every injector passes more fuel for the same pulse, in every cell. The MAF agrees and the coolant reading is normal. See [high fuel pressure](https://trimcase-web.pages.dev/faults/high-fuel-pressure/). - A MAF over reporting: the computer meters fuel for air that is not there, and the MAF reads above the speed density estimate in every cell. See [MAF over reporting](https://trimcase-web.pages.dev/faults/maf-over/). - A coolant sensor stuck cold: the computer adds warm up enrichment to a warm engine and the trims take it back out. The coolant reading is frozen at one low number. See [ECT stuck cold](https://trimcase-web.pages.dev/faults/ect-stuck-cold/). Outside what the TrimCase model simulates, three more are worth knowing: engine oil diluted with fuel, whose vapour reaches the intake through the PCV system; a ruptured diaphragm in a vacuum referenced fuel pressure regulator, which lets fuel into the vacuum line; and an upstream sensor biased rich, which usually shows as a downstream sensor reading lean. #### Checking negative trims in order 1. Read the coolant temperature. A warm engine should sit near its regulating temperature. One frozen low number means the sensor, and its extra fuel explains flat negative trims. 2. Find the shape. Add STFT and LTFT per bank at idle, 2,500 rpm with no load and cruise. Negative at idle only points to a fixed extra fuel source; flat negative points to pressure, the MAF or the coolant reading. 3. Do the airflow check. Divide the MAF reading by what the engine should draw. Above the estimate everywhere means the MAF reads high; short at idle with negative trims means the purge stream. 4. Command the purge valve closed. With a scan tool, where the vehicle supports it, close the purge valve and watch the trims. If they recover, the purge path is the cause. 5. Test fuel pressure. Compare pressure with a gauge against the specification in the service information, and check how it holds after shut off. 6. Test the injectors. A leak down, balance or flow test, as the service information calls for, finds the injector that drips. #### Worked example: three flat negative trims that are not the same fault Three faults on the same 2.0 L inline four, each at its reference size with no noise. The trims alone cannot separate them. The airflow check and the coolant reading can. Total trim (percent), airflow check at idle and coolant reading, from the model: | Fault | Idle trim | Cruise trim | Airflow check | Coolant | | --- | --- | --- | --- | --- | | Fuel pressure too high | -10.6 | -10.4 | 100% | 90 C | | MAF over reporting | -9.1 | -9.0 | 110% | 90 C | | ECT stuck cold | -8.5 | -8.5 | 100% | 38 C | | Purge stuck open | -9.0 | -1.1 | 90% | 90 C | The first three pull between -8.5 and -10.6 percent in every cell. The MAF reading 110 percent of the estimate names the MAF; a coolant reading of 38 C on a warm engine names the coolant sensor; with both normal, the fuel pressure is the one left, and a gauge confirms it. The purge valve is the odd one out: negative at idle only, with the MAF 90 percent of the estimate because the purge stream is air the MAF never measured. #### Common mistakes - Replacing the upstream sensor because it reads rich. It is usually reporting a real rich mixture. - Condemning injectors before checking fuel pressure. High pressure makes every injector look like it over fuels. - Missing a coolant sensor that reads cold on a warm engine. Always read the coolant temperature before the trims. - Testing just after a fill up and blaming the injectors, when a stuck purge valve with a full canister is the source. - Clearing codes and retesting straight away. On many vehicles that resets long term trim, which then needs a drive to relearn. #### Sources - SAE J1979, the OBD II diagnostic services standard, and its successor SAE J1979-2 for OBD on UDS. They define the fuel trim parameters (PIDs 06 to 09: short and long term trim for bank 1 and bank 2, scaled from minus 100 to plus 99.2 percent, where positive means fuel is being added) and the mass airflow parameter (PID 10, in grams per second). - SAE J2012, which defines the standard trouble code meanings, including P0171 and P0174 (system too lean, bank 1 and bank 2) and P0172 and P0175 (system too rich, bank 1 and bank 2). - The US EPA onboard diagnostics requirement for light duty vehicles, 40 CFR 86.1806, which requires a fuel system monitor and largely adopts California's OBD II regulation, 13 CCR 1968.2. - Manufacturer service information for the vehicle in front of you. It sets the real trim limits, when a lean or rich code is allowed to set, which side is bank 1, and the confirmation tests. These vary by make, engine and model year, so no number on this page replaces them. - The [TrimCase engine model](https://trimcase-web.pages.dev/model/), which computes every number in the worked example on this page. #### Frequently asked questions ##### Is negative fuel trim bad? A few percent either side of zero is normal. A total that stays beyond about minus 10 percent means the engine is running rich before the correction and the computer is working to hide it, and past the manufacturer's limit it sets a rich code. ##### Can a bad oxygen sensor cause negative fuel trim? It can if it is biased rich, but that is less common than a real rich mixture. A biased upstream sensor usually shows up as a downstream sensor reading lean while the trims pull fuel. ##### What does a fuel trim of minus 10 percent mean? The computer is delivering about 10 percent less fuel than its air reading calls for, because the sensor says the mixture would otherwise be rich. Where it happens, idle only or everywhere, says more than the number itself. ##### Why are my fuel trims negative only at idle? A fixed amount of extra fuel is a big share of the small idle fuel flow and a small share at cruise. A leaking injector or a purge valve stuck open are the usual suspects, and the MAF check separates them. ### Long term vs short term fuel trim, explained URL: https://trimcase-web.pages.dev/guide/long-term-vs-short-term-fuel-trim/. Last reviewed 2026-09-26. Short term fuel trim (STFT) is the engine computer's instant correction to the fuel it meters, moving many times a second in response to the upstream oxygen or air fuel sensor. Long term fuel trim (LTFT) is the learned correction: when short term trim keeps pulling the same way, the computer moves that amount into long term trim and stores it, so short term can return towards zero. For diagnosis, add the two per bank. The total is the whole correction, and a large total means the same thing whichever of the two is holding it. #### How short term trim behaves Short term trim follows the upstream sensor directly. With a narrowband oxygen sensor, which only says rich or lean, the computer steps and ramps the fuel back and forth across the switching point, so short term trim swings a few percent either side of its average all the time. With a wideband air fuel sensor, which reports how rich or lean, the correction is proportional and short term trim sits steadier. Either way, a single snapshot of short term trim tells you less than its average over a few seconds. #### How long term trim learns Long term trim changes slowly. When short term trim holds away from zero for a while, the computer shifts part of it into long term trim, a little at a time. Many strategies keep separate long term values for different ranges of rpm and load, which is why long term trim at idle and at cruise can differ. The learned values are kept in memory with the ignition off, and on many vehicles clearing codes or disconnecting the battery resets them, after which it takes a drive for them to relearn. So the split between the two depends on timing. Just after a reset, the whole correction sits in short term trim. After a drive, most of it has moved into long term trim. The total barely changes, which is exactly why you add them. #### Reading them together - Short term near zero, long term at plus 14: a learned lean correction. The problem is real and has been there long enough to be learned. - Short term at plus 14, long term near zero: the same correction, not learned yet. Either the memory was just reset or the condition just appeared. - Short term at minus 10, long term at plus 10: a total near zero. Something changed in the last few seconds, such as a purge event or a change of load, and the trims are catching up. - Totals that differ between banks on a V engine: something that belongs to one bank. See [bank 1 vs bank 2 fuel trim](https://trimcase-web.pages.dev/guide/fuel-trim-bank-1-vs-bank-2/). #### Worked example: where a vacuum leak's correction sits A vacuum leak on a 2.0 L inline four, from the model, after long term trim has learned most of the correction. The model assumes long term trim is learned per load cell, so each cell carries its own value. Short term, long term and total trim, percent: | Cell | STFT | LTFT | Total | | --- | --- | --- | --- | | Idle | +1.5 | +13.4 | +14.9 | | 2,500 rpm, no load | +0.5 | +4.9 | +5.4 | | Cruise | +0.2 | +2.6 | +2.8 | Short term trim alone reads +1.5 at idle and looks healthy. The total, +14.9, does not. Clear the codes on a vehicle that resets long term trim and, for the first minutes of driving, short term trim would carry the whole +14.9 instead. Same leak, same total, different split. #### Common mistakes - Reading short term trim alone and calling the engine healthy while long term trim holds the whole correction. - Comparing long term trim at idle with long term trim at cruise as if they were one number. Many strategies learn them separately. - Clearing codes before recording the trims, which on many vehicles throws away the learned values you needed. - Judging a narrowband engine's short term trim from one frame while it swings. Average it over a few seconds. - Mixing up the sign. Positive means the computer is adding fuel because the sensor says lean. #### Sources - SAE J1979, the OBD II diagnostic services standard, and its successor SAE J1979-2 for OBD on UDS. They define the fuel trim parameters (PIDs 06 to 09: short and long term trim for bank 1 and bank 2, scaled from minus 100 to plus 99.2 percent, where positive means fuel is being added) and the mass airflow parameter (PID 10, in grams per second). - The US EPA onboard diagnostics requirement for light duty vehicles, 40 CFR 86.1806, which requires a fuel system monitor and largely adopts California's OBD II regulation, 13 CCR 1968.2. - Manufacturer service information for the vehicle in front of you. It sets the real trim limits, when a lean or rich code is allowed to set, which side is bank 1, and the confirmation tests. These vary by make, engine and model year, so no number on this page replaces them. - The [TrimCase engine model](https://trimcase-web.pages.dev/model/), which computes every number in the worked example on this page. #### Frequently asked questions ##### Which matters more, short term or long term fuel trim? Neither on its own. Add them per bank: the total is the whole correction. Long term shows what has been learned over time, short term shows what is happening right now. ##### What is a normal long term fuel trim? Within a few percent of zero on a healthy engine. Many technicians treat a total of short plus long term trim within about plus or minus 10 percent as normal, but the real limits are the manufacturer's. ##### Does clearing codes reset long term fuel trim? On many vehicles it does, and so does disconnecting the battery. Record the trims before you clear anything, and expect long term trim to need a drive to relearn afterwards. ##### Why does short term fuel trim jump around? On an engine with a narrowband oxygen sensor the computer keeps stepping the mixture across the rich and lean switching point, so short term trim swings a few percent all the time. That is normal. Its average is what counts. ### MAF grams per second per litre: the rule of thumb, and a better check URL: https://trimcase-web.pages.dev/guide/maf-grams-per-second-per-litre/. Last reviewed 2026-09-26. A warm, healthy, naturally aspirated engine at idle often shows a MAF reading of very roughly 1 g/s per litre of displacement, a rule of thumb many technicians use as a quick sanity check. It is only a first look. The better check is to work out what the engine should be drawing from its displacement, rpm, manifold pressure and intake air temperature, and divide the MAF reading by that. Close to 100 percent is healthy; short at idle only points to unmetered air getting in around the MAF; short and getting worse as airflow rises points to a MAF reading low; above the estimate everywhere points to a MAF reading high. #### Where the rule of thumb comes from, and where it breaks An engine is an air pump. A four stroke engine fills each cylinder once every two turns, so at idle it moves its displacement roughly six times a second, but at a manifold pressure of about 30 kPa, less than a third of atmospheric density. Work that through and a warm engine at idle draws somewhere between about 1 and 1.5 g/s per litre. The four engines in the TrimCase model come out between 1.1 and 1.5 g/s per litre at idle, in the same neighbourhood as the rule. The rule breaks wherever idle speed, manifold pressure or temperature differ: a high idle, an air conditioning load, altitude, a hot intake, a big cam. A reading 20 percent off the rule can be perfectly healthy, and a leak that costs 10 percent can hide inside the rule's range. That is why the rule only tells you whether to look closer. #### The speed density check The air an engine draws, in grams per second, is: volumetric efficiency x displacement in litres x rpm / 120 x MAP in kPa / (0.287 x intake air temperature in kelvin). Volumetric efficiency (VE) is how well the cylinders fill relative to the manifold; around 0.7 to 0.85 at part throttle is a reasonable working assumption, and the [model page](https://trimcase-web.pages.dev/model/) lists the reference values TrimCase uses. Divide the MAF reading by this estimate and you have the airflow check every TrimCase case reports. Healthy airflow per litre of displacement in the TrimCase model, g/s per litre: | Engine | Idle | 2,500 rpm, no load | Cruise | WOT | | --- | --- | --- | --- | --- | | 2.0 L inline four, narrowband upstream sensor | 1.5 | 3.8 | 7.1 | 42 | | 2.5 L inline four, wideband air fuel sensor | 1.4 | 3.8 | 6.4 | 42 | | 3.5 L V6, dual bank, wideband air fuel sensors | 1.3 | 3.7 | 5.5 | 42 | | 5.3 L V8, dual bank, narrowband upstream sensors | 1.1 | 3.1 | 4.4 | 38 | Some scan tools show airflow in pounds per minute. One pound per minute is about 7.56 g/s, so convert before comparing. #### How to check airflow, step by step 1. Record the inputs. Warm engine, closed loop. Note rpm, MAP, intake air temperature and the MAF reading at idle and at 2,500 rpm with no load. 2. Work out the estimate. Multiply VE by displacement, by rpm divided by 120, and by MAP, then divide by 0.287 times the intake temperature in kelvin. 3. Divide the MAF by the estimate. Express the MAF reading as a percentage of the estimate in each cell. 4. Add a WOT reading if it is safe. Where it can be done safely and legally, on a dyno or a closed road, record a wide open throttle pull, which shows whether the shortfall grows with flow. 5. Read the pattern. Short at idle only means unmetered air. Short and growing with flow means the MAF reads low. High everywhere means it reads high. Short at WOT only with normal trims means the engine cannot breathe out. 6. Confirm on the car. Inspect the MAF element and the intake duct, check the air filter, smoke test the intake, or compare with a known good sensor, as the service information directs. #### Worked example: a 2.0 L at idle The model's 2.0 L inline four idles at 750 rpm with a MAP of 30 kPa and an intake temperature of 38 C (311.15 K), with a reference VE of 0.72. The estimate is 0.72 x 2.0 x 750 / 120 x 30 / (0.287 x 311.15) = 3.02 g/s, or 1.5 g/s per litre. Airflow check (MAF as a percentage of the estimate), from the model: | Engine state | Idle | 2,500 rpm | Cruise | WOT | | --- | --- | --- | --- | --- | | Healthy | 100% | 99% | 99% | 100% | | Vacuum leak | 87% | 94% | 96% | 100% | | MAF reading low | 95% | 91% | 89% | 74% | The vacuum leak's MAF reads 2.63 g/s at idle, 87 percent of the estimate, and recovers to 100 percent at WOT where the leak stops flowing. The failing MAF reads nearly right at idle, 95 percent, and falls to 74 percent at WOT. Both would pass the 1 g/s per litre rule at idle. Only the check across cells tells them apart. #### Common mistakes - Treating the rule of thumb as a pass or fail limit. It is a sanity check with a wide margin. - Leaving MAP and intake temperature out. Air density is half of the estimate. - Comparing a pounds per minute reading with a grams per second rule. - Blaming the MAF for low WOT airflow while the trims are normal. A restricted exhaust also caps WOT airflow. - Applying naturally aspirated numbers to a turbocharged engine, whose manifold pressure goes above atmospheric. #### Sources - SAE J1979, the OBD II diagnostic services standard, and its successor SAE J1979-2 for OBD on UDS. They define the fuel trim parameters (PIDs 06 to 09: short and long term trim for bank 1 and bank 2, scaled from minus 100 to plus 99.2 percent, where positive means fuel is being added) and the mass airflow parameter (PID 10, in grams per second). - Manufacturer service information for the vehicle in front of you. It sets the real trim limits, when a lean or rich code is allowed to set, which side is bank 1, and the confirmation tests. These vary by make, engine and model year, so no number on this page replaces them. - The [TrimCase engine model](https://trimcase-web.pages.dev/model/), which computes every number in the worked example on this page. #### Frequently asked questions ##### What should a MAF read at idle? Very roughly 1 g/s per litre of displacement on a warm, healthy, naturally aspirated engine, so a 2.0 L near 2 to 3 g/s and a 5.3 L near 5 to 6 g/s. Idle speed, manifold pressure and temperature move it, so check it against a speed density estimate before calling it wrong. ##### What should a MAF read at 2,500 rpm with no load? In the TrimCase model a healthy engine draws about two and a half to three times its idle airflow at 2,500 rpm with no load. On a real engine, work it out from rpm, MAP and intake temperature rather than relying on a ratio. ##### How do I convert pounds per minute to grams per second? Multiply by about 7.56. One pound is 453.6 grams and a minute is 60 seconds. ##### Can a vacuum leak make the MAF read low? Not the sensor itself. The MAF measures the air that passes it correctly, but the leak lets more air into the engine than that, so the MAF reads short of what the engine is actually drawing, most of all at idle. ### Bank 1 vs bank 2 fuel trim: what a split between the banks means URL: https://trimcase-web.pages.dev/guide/fuel-trim-bank-1-vs-bank-2/. Last reviewed 2026-09-26. When one bank's fuel trims move and the other bank's stay near zero, the cause belongs to that bank only: an injector, an exhaust leak ahead of that bank's upstream sensor, that bank's sensor, a misfire on one of its cylinders, or an intake leak close to that bank's runners. Anything both banks share, such as the MAF, the fuel pressure, the purge valve, the coolant sensor or a leak into the common plenum, moves both banks together. So the first question on a V engine is not how lean or how rich, but whether both banks agree. #### What bank 1 and bank 2 mean Bank 1 is the side of the engine that holds cylinder 1; bank 2 is the other side. Sensor 1 is the upstream sensor ahead of the converter and sensor 2 is downstream, so B1S1 is bank 1's upstream sensor. Which side cylinder 1 is on, and so which physical side bank 1 is, is set by the manufacturer and varies, so check the service information before touching a sensor. An inline engine has only bank 1. The lean codes follow the same numbering: P0171 is bank 1 too lean and P0174 is bank 2 too lean, with P0172 and P0175 for rich. One lean code alone on a V engine already says the problem may belong to one bank. #### Shared causes and one bank causes - Both banks move together: a leak into the common plenum, a MAF reading low or high, fuel pressure too high or too low, a purge valve stuck open, a coolant sensor reading cold. - One bank moves, positive: an [exhaust leak](https://trimcase-web.pages.dev/faults/exhaust-leak/) ahead of that bank's sensor, a sensor [biased lean](https://trimcase-web.pages.dev/faults/biased-sensor/), a [misfire](https://trimcase-web.pages.dev/faults/misfire/) on one of its cylinders, or an intake leak at that bank's runners. - One bank moves, negative: a [leaking injector](https://trimcase-web.pages.dev/faults/leaking-injector/) on that bank. In the TrimCase model a difference of 5 points or more between the banks' totals in any cell counts as a split. On a real engine, small differences between banks are normal, so a split matters most when one bank is near zero and the other is well out. #### Reading a bank split, step by step 1. Confirm the bank numbering. Find which side holds cylinder 1 in the service information before naming a side. 2. Add the trims per bank per cell. Short plus long term trim for each bank at idle, 2,500 rpm with no load and cruise. 3. Decide shared or one bank. Both banks together points to something they share. One bank alone points to something on that bank. 4. Check that bank's misfire counters. Counts on one of its cylinders make that bank's trims positive and its downstream sensor read rich. 5. Compare the downstream sensors. A downstream sensor reading rich on the bank that is adding fuel means its upstream sensor is being fooled. 6. Confirm on the car. Inspect for exhaust leaks ahead of the sensor, test the injectors on that bank, or swap parts across banks where the service information allows, and see whether the problem follows. #### Worked example: three bank 2 faults on a V6 Three faults on bank 2 of the model's 3.5 L V6, each at reference size with no noise. Bank 1 is healthy in all three, which is the first clue. The rest of the screen names the fault. Bank 2 total trim, bank 1 total trim, downstream sensor and misfire counts at idle: | Fault on bank 2 | Bank 2 idle | Bank 2 cruise | Bank 1 idle | Bank 2 downstream | Misfires | | --- | --- | --- | --- | --- | --- | | Exhaust leak | +12.0 | +3.8 | 0.0 | 0.66 V | none | | Sensor biased lean | +7.0 | +7.0 | 0.0 | 0.90 V | none | | Misfire, cylinder 4 | +8.0 | +6.0 | 0.0 | 0.90 V | cyl 4: 120 | | Leaking injector | -12.0 | -2.7 | 0.0 | 0.66 V | none | All four leave bank 1 at 0.0. The exhaust leak is positive at idle and fades at cruise with a normal downstream sensor. The biased sensor is positive by the same +7.0 everywhere, with bank 2's downstream sensor at 0.90 V, rich. The misfire also drives the downstream sensor rich, but the counter on cylinder 4 names it. The leaking injector is the only negative one. #### Common mistakes - Assuming bank 1 is the driver's side. It is the side with cylinder 1, and that varies. - Replacing both upstream sensors when only one bank moved. - Blaming the sensor on the moving bank without reading its misfire counters and downstream sensor. - Looking for a one bank cause when both banks moved together. A shared fault, such as a plenum leak or fuel pressure, is more likely. - Swapping a sensor to the other bank without checking the service information for connector and wiring differences. #### Sources - SAE J1979, the OBD II diagnostic services standard, and its successor SAE J1979-2 for OBD on UDS. They define the fuel trim parameters (PIDs 06 to 09: short and long term trim for bank 1 and bank 2, scaled from minus 100 to plus 99.2 percent, where positive means fuel is being added) and the mass airflow parameter (PID 10, in grams per second). - SAE J2012, which defines the standard trouble code meanings, including P0171 and P0174 (system too lean, bank 1 and bank 2) and P0172 and P0175 (system too rich, bank 1 and bank 2). - Manufacturer service information for the vehicle in front of you. It sets the real trim limits, when a lean or rich code is allowed to set, which side is bank 1, and the confirmation tests. These vary by make, engine and model year, so no number on this page replaces them. - The [TrimCase engine model](https://trimcase-web.pages.dev/model/), which computes every number in the worked example on this page. #### Frequently asked questions ##### Which side of the engine is bank 1? The side that holds cylinder 1. Which physical side that is depends on the manufacturer and the engine, so check the service information rather than assuming the driver's or passenger's side. ##### Why is only bank 1 lean? Because the cause belongs to bank 1: an exhaust leak ahead of its upstream sensor, a lean biased sensor, a misfire on one of its cylinders, or an intake leak at its runners. Anything the banks share would move both. ##### Can a vacuum leak affect only one bank? A leak into the common plenum affects both banks about equally. A leak at one bank's intake runners or its gasket can affect that bank more than the other. ##### How much difference between banks is normal? A few points. TrimCase counts a difference of 5 points or more in any cell as a split. On a real engine, look hardest when one bank is near zero and the other is well away from it. ### How to practise fuel trim diagnosis without a car URL: https://trimcase-web.pages.dev/guide/fuel-trim-diagnosis-practice/. Last reviewed 2026-09-26. You can practise fuel trim diagnosis without a car by working from scan data: a freeze frame and live data at idle, at 2,500 rpm with no load, at cruise and at wide open throttle, then naming the fault and the cues that point to it before you look at the answer. What makes it work is the same thing that makes shop diagnosis work: reading every cell rather than one number, and being marked on the reasoning as well as the answer. TrimCase's free daily drill gives five such cases a day, generated from a published engine model, with the missed cues named. #### What to practise - Adding short and long term trim per bank and reading the shape across the cells: positive at idle only, rising with airflow, or flat. - The airflow check: the MAF reading against what the engine should draw. See [the MAF check](https://trimcase-web.pages.dev/guide/maf-grams-per-second-per-litre/). - Comparing the banks on a V engine. See [bank 1 vs bank 2](https://trimcase-web.pages.dev/guide/fuel-trim-bank-1-vs-bank-2/). - Reading the downstream sensor, the WOT snapshot, the coolant temperature and the misfire counters, in the [order](https://trimcase-web.pages.dev/guide/) that stops one fault hiding another. - Deciding that nothing is wrong with the fuel control. The [healthy control](https://trimcase-web.pages.dev/faults/no-fault/) is a real answer. #### Where practice data can come from Recorded data from real vehicles is the gold standard, but it rarely comes with a confirmed answer, and a fault created on a training engine takes an instructor, a bay and time. Simulated cases fill the gap between: every case has a known answer, faults can be shown at a clean size and then made harder, and a class can all open the same case by its code. The cost is that a model is simpler than an engine. TrimCase publishes its [model](https://trimcase-web.pages.dev/model/) in full, lists what it leaves out, and says plainly that it has not yet been reviewed by a master technician. #### What simulated practice cannot do It cannot teach the physical tests: a smoke test, a fuel pressure and volume test, an injector test. It cannot show every strategy a manufacturer uses. And a good score is a self assessment, not a credential. Use the cases to make the reading automatic, then prove it on a real car with the service information. #### A routine that builds the skill 1. Learn the order. Read the diagnostic order once, so every case is read the same way: warm and closed loop, codes, misfires, coolant, trim shape, airflow, downstream, WOT, banks. 2. Do the daily drill. Five cases a day, three clean and two noisy, the same for everyone until midnight UTC. 3. Tick your cues before you choose. Write down what you saw in each cell before naming the fault. The grade marks the cues as well as the answer. 4. Read every miss. The grade names each cue you missed and why it points where it does. Open the fault page for any fault you confused. 5. Practise one family at a time. Work one family, such as unmetered air, until its fingerprints are automatic, then mix. 6. Move to noisy cases. Smaller faults and rougher numbers sit nearer the thresholds, the way real data does. 7. Teach it back. Put one case on a screen and talk a class or a colleague through it, cell by cell. #### Worked example: reading one case cell by cell A case from the model at reference size, with no noise, on a 2.0 L inline four: warm, closed loop, no misfire counts, coolant at 90 C. Total trim is +14.9 at idle, +5.4 at 2,500 rpm and +2.8 at cruise. The MAF reads 2.63 g/s at idle against an estimate of 3.02, an airflow check of 87 percent, and 100 percent at WOT. - Coolant and misfires normal: nothing is fooling the trims. - Positive at idle, near zero at cruise: a fixed amount of something unaccounted for. - MAF short at idle, fine at WOT: air is getting in around the MAF. - Answer: vacuum leak, with those three cues ticked. Picking exhaust leak instead would lose the airflow cue, and the grade would say so. #### Common mistakes - Answering from one cell. The shape across cells is the fingerprint. - Memorising answers instead of cues. The noisy tier moves the numbers, not the reasoning. - Practising only clean cases, which are easier than real data. - Never answering no fault. Deciding the fuel control is fine is part of the job. - Treating a practice score as proof of competence on a real vehicle. #### Sources - SAE J1979, the OBD II diagnostic services standard, and its successor SAE J1979-2 for OBD on UDS. They define the fuel trim parameters (PIDs 06 to 09: short and long term trim for bank 1 and bank 2, scaled from minus 100 to plus 99.2 percent, where positive means fuel is being added) and the mass airflow parameter (PID 10, in grams per second). - The US EPA onboard diagnostics requirement for light duty vehicles, 40 CFR 86.1806, which requires a fuel system monitor and largely adopts California's OBD II regulation, 13 CCR 1968.2. - Manufacturer service information for the vehicle in front of you. It sets the real trim limits, when a lean or rich code is allowed to set, which side is bank 1, and the confirmation tests. These vary by make, engine and model year, so no number on this page replaces them. - The [TrimCase engine model](https://trimcase-web.pages.dev/model/), which computes every number in the worked example on this page. #### Frequently asked questions ##### Can I learn fuel trim diagnosis without a scan tool? You can learn to read the data without one, from recorded or simulated cases. You still need a scan tool and the service information to test a real vehicle. ##### Is the TrimCase practice free? Yes. The daily drill, practice on the unmetered air family, every fault page, the model page and the guides are free and need no account. ##### Are the cases taken from real cars? No. Every case comes from one engine model written out on the model page, so no make or model is depicted and every answer is known. It is a training aid, not a diagnostic instruction for any real vehicle. ##### Is this affiliated with ASE? No. TrimCase is not affiliated with ASE, the ASE Education Foundation, or any certification or accrediting body. A good score is a self assessment, not a credential. ## How fuel trim works: the engine model URL: https://trimcase-web.pages.dev/model/ Air the engine draws (the speed density estimate): air (g/s) = VE x displacement (L) x rpm / 120 x MAP (kPa) / (0.287 x IAT in kelvin) Fuel metered and delivered: fuel commanded = (MAF + expected purge air) / 14.7 x enrichment x (1 + trim) - expected purge vapour fuel delivered = fuel commanded x sqrt(rail pressure / rated) + injector drip + purge vapour Closed loop solves the trim that drives the upstream sensor to lambda 1: actual lambda = true air / (14.7 x fuel delivered) gas lambda = actual lambda x (1 + exhaust leak air share) sensor lambda = gas lambda x (1 + misfire share) x sensor bias ### Reading the cells: fuel trim against load and airflow Fuel trim only means something when you know which operating point it was taken at, so every case reports it in cells: idle, 2,500 rpm with no load, and a steady cruise, plus a WOT snapshot in open loop. The cells are ordered by airflow, the grams per second the engine draws, because that is what decides how big a fixed error looks. Calculated load does not follow the same order: at 2,500 rpm with no load the throttle is nearly shut, manifold pressure is lower than at idle, and calculated load is lower too, even though airflow is more than twice as high. A healthy 2.0 L inline four in each closed loop cell, and the same engine with a vacuum leak: | Cell | rpm | MAP (kPa) | Calculated load (%) | MAF (g/s) | Vacuum leak total trim (%) | | --- | --- | --- | --- | --- | --- | | Idle | 750 | 30 | 20.7 | 3.02 | +14.9 | | 2,500 rpm, no load | 2500 | 22 | 15.6 | 7.61 | +5.4 | | Cruise | 2100 | 42 | 34.4 | 14.09 | +2.8 | Read the last column against the MAF column, not the load column. The leak adds +14.9 at 3.02 g/s, +5.4 at 7.61 g/s and +2.8 at 14.09 g/s: it shrinks steadily as airflow rises. Sorted by calculated load instead, 2,500 rpm would come first and the pattern would look broken. A fault whose error is a fixed mass (a leak, a drip) falls with airflow; a fault whose error grows with flow (a weak fuel supply, a MAF losing signal) rises with it; a fault that scales everything (fuel pressure, a MAF gain error, a coolant reading) stays flat. - Common mistake: comparing trims from two cells taken at different engine temperatures. Only warm, closed loop cells compare. - Common mistake: treating 2,500 rpm with no load as a loaded cell. It is a higher airflow cell with a lower load, and the drill's chart plots it between idle and cruise for that reason. - Common mistake: reading one cell. A trim at idle alone cannot separate a leak from a sensor bias; the second and third cells can. - More on the arithmetic: [MAF grams per second per litre](https://trimcase-web.pages.dev/guide/maf-grams-per-second-per-litre/) and [long term vs short term fuel trim](https://trimcase-web.pages.dev/guide/long-term-vs-short-term-fuel-trim/). #### Why is calculated load lower at 2,500 rpm with no load than at idle? Calculated load compares the air per intake stroke with the most the engine could draw. With no load the throttle is nearly shut at 2,500 rpm, manifold pressure drops below its idle value, and each stroke draws less air, even though more strokes per second mean more airflow overall. #### Should fuel trim be read against load or airflow? Against airflow when you are judging how a fixed error scales. A leak or a dripping injector is a fixed mass, so its share of the total, and the trim that corrects it, falls as airflow rises. ### What each fault changes in the model - Vacuum leak: An orifice from the atmosphere into the manifold, sized so it flows 13 percent of healthy idle air. Choked below the critical pressure ratio, so the same mass at idle, 2,500 and cruise. - EVAP purge valve stuck open: The purge valve open all the time. Its full flow is 10 percent of healthy idle air, carrying 0.123 g of fuel vapour per gram of air (a loaded canister). Only flow beyond the commanded duty is a surprise to the module. - MAF under reporting: The MAF reports metered air times (1 minus (0 + 0.26 x square root of flow over healthy WOT flow)). - MAF over reporting: The MAF reports metered air times 1.1. - Restricted exhaust: Volumetric efficiency falls by 0.25 x (flow over WOT flow) squared x (baro over MAP). Off WOT the throttle opens to hold airflow, so MAP rises; at WOT airflow falls. - Restricted fuel filter or weak pump: Rail pressure over rated = 1 minus k x fuel demand squared, with k set so the drop at healthy cruise demand is 12 percent, and a floor of 0.4. - Fuel pressure too high (regulator stuck closed): Rail pressure 25 percent above rated in every cell. - Leaking injector: One injector passes a constant drip while shut, sized so its bank's idle trim moves 12 percent. The drip only flows for the part of each cycle the injector is closed. - Exhaust leak upstream of the upstream sensor: Air drawn into the exhaust ahead of the upstream sensor: 12 percent of the bank's flow at idle, scaled by (idle flow over flow) to the power 0.8, and none at WOT. - Upstream O2 or A/F sensor biased lean: The upstream sensor on one bank reports lambda 1.07 times the gas it sits in. - Single cylinder misfire: One cylinder fails to burn 24 percent, 12 percent, 18 percent, 20 percent of its events in the four cells. The unburned charge reads as oxygen at the upstream sensor. - ECT sensor stuck cold: The coolant reading is frozen at about 38 C (the noisy tier draws 28 to 48 C). The coolant itself is at 90 C. - Thermostat stuck open: The coolant runs 16 C, 17 C, 26 C, 24 C below 90 C in the four cells. ### What the model leaves out - Long term trim is learned per load cell. Some strategies learn one value for the whole range. - There is no downstream fuel trim correcting the upstream sensor. - Healthy purge is accounted for exactly. On a real engine purge moves the trims a few percent on its own. - A vacuum leak and the PCV path are treated as one fault. A leak in the PCV hose, a cracked grommet or an open oil filler is unmetered air and gives the same data as any other vacuum leak, so they are not separate cases. - No altitude, no fuel with ethanol, no transient tip in enrichment, no cold start. - Bank 1 holds the odd cylinders and bank 2 the even ones. Real engines number their cylinders in several ways. ## Fault fingerprints ### No fault (healthy control) URL: https://trimcase-web.pages.dev/faults/no-fault/ The healthy control. Trims near zero, the MAF agreeing with the speed density estimate, a warm coolant reading, a steady downstream sensor and no misfire counts. It is in the drill because deciding that the fuel control is fine is a diagnosis too. Must be present: - Trims close to zero in every closed loop cell (Total trim (STFT + LTFT) within plus or minus 5 percent at idle, 2,500 rpm and cruise) - MAF agrees with the speed density estimate everywhere (Airflow check between 95 and 105 percent in all four cells) Must be absent: - Misfire counts on one cylinder (At least 20 misfires per 1,000 revolutions on one cylinder in some cell) - ECT frozen at one low value (ECT the same (within 1 C) in all four cells and no higher than 55 C) - ECT below regulating temperature, and falls at cruise (ECT below 82 C at idle and at least 5 C lower at cruise than at idle) - Upstream sensor reads lean at WOT (At WOT the upstream sensor reads below 0.45 V (narrowband) or above lambda 1.00 (wideband)) - Downstream sensor sits rich in closed loop (Downstream sensor at least 0.78 V at idle and at cruise) In closed loop the module meters fuel from the air the MAF reports, then trims it until the upstream sensor reads stoichiometry. When the air measurement, the fuel delivery and the sensor are all honest, there is nothing for the trims to correct, so short and long term trims sit within a few percent of zero in every cell. The customer still had a complaint. A healthy fuel control does not mean a healthy car: the fault may be elsewhere (ignition under load, a transmission concern, driver expectation), and the value of the data here is that it rules the mixture out quickly. On a real car: - Check that the engine was fully warm and in closed loop when the data was taken. - Reproduce the complaint under the conditions the customer described before blaming the fuel system. Where the model is simpler: The model's healthy engine has the commanded purge accounted for exactly, so its trims are clean. A real engine's trims move a few percent with purge, altitude and fuel quality. ### Vacuum leak URL: https://trimcase-web.pages.dev/faults/vacuum-leak/ Air enters below the MAF through a cracked hose, a leaking intake gasket, a PCV hose or an open oil filler. The trims add fuel at idle and fall back towards zero as airflow rises, and the MAF reads short of what the engine is actually drawing at idle. Must be present: - Trims positive at idle, near zero at cruise (Idle total trim at least +8 percent and at least 6 points above cruise) - MAF short of the estimate at idle, fine at WOT (Airflow check at or below 94 percent at idle and at least 94 percent at WOT) Must be absent: - Nothing else needed A leak is an orifice between the atmosphere and the manifold. With manifold pressure below about half an atmosphere the flow through it is choked, so it passes the same mass of air at idle, at 2,500 rpm and at a light cruise. That fixed mass is a big share of idle air and a small share of cruise air, which is why the correction shrinks with load. At WOT the manifold is close to atmospheric pressure and the leak hardly flows at all. Because the leaked air never passes the MAF, the MAF reading falls short of the speed density estimate by the leak's share of the airflow. That is the second half of the fingerprint and the one that separates a vacuum leak from an exhaust leak, which moves the trims the same way but leaves the MAF honest. In the model: An orifice from the atmosphere into the manifold, sized so it flows 13 percent of healthy idle air. Choked below the critical pressure ratio, so the same mass at idle, 2,500 and cruise. On a real car: - A smoke test of the intake with the engine off. - Watch short term trim while briefly enriching suspect areas, following the service information's safety guidance. - Inspect the PCV hoses and the oil filler cap: a leak in the crankcase path is a vacuum leak with a different address. Where the model is simpler: The model puts the leak on the common plenum, so both banks see it equally. A leak at one bank's intake runners would show on that bank more than the other. ### EVAP purge valve stuck open URL: https://trimcase-web.pages.dev/faults/purge-stuck-open/ The EVAP purge valve is stuck open, so canister vapour flows into the manifold all the time, including at idle where the module commands none. With a loaded canister the trims take fuel away at idle, and the MAF reads short at idle because the purge stream is unmetered air as well as vapour. Must be present: - Trims negative at idle, near zero at cruise (Idle total trim at or below -6 percent and at least 5 points below cruise) - MAF short of the estimate at idle, fine at WOT (Airflow check at or below 94 percent at idle and at least 94 percent at WOT) Must be absent: - Nothing else needed The purge valve connects the charcoal canister to the manifold. Normally the module opens it on a duty cycle and accounts for the flow. Stuck open, it flows like a small vacuum leak whose air carries fuel vapour. At idle the module expects no purge at all, so the whole flow is a surprise; at cruise the module is purging anyway and only the excess is. The vapour is fuel the module did not meter, so closed loop pulls fuel out and the trims go negative, most at idle. The air in the stream bypasses the MAF, so the airflow check is short at idle. That pairing, rich trims with missing air, is what a leaking injector cannot produce: an injector adds fuel but no air. In the model: The purge valve open all the time. Its full flow is 10 percent of healthy idle air, carrying 0.123 g of fuel vapour per gram of air (a loaded canister). Only flow beyond the commanded duty is a surprise to the module. On a real car: - Command the purge valve closed with a scan tool and see whether the trims and idle change. - Pinch or cap the purge line at the manifold, as the service information allows, and watch short term trim. - Symptoms that follow a fill up point towards a loaded canister. Where the model is simpler: The model assumes a loaded canister. With an empty canister the stream is nearly all air and a stuck valve looks like a small vacuum leak. The two faults are grouped in one family for exactly that reason. ### MAF under reporting URL: https://trimcase-web.pages.dev/faults/maf-under/ A contaminated or failing MAF reports less air than the engine draws. The trims add fuel, more as flow rises, the MAF falls further below the speed density estimate as flow rises, and WOT airflow is well short. Must be present: - Trims grow more positive as airflow rises (Cruise total trim at least +4 percent and at least 3 points above idle) - MAF short of the estimate, and more so as flow rises (Airflow check at or below 94 percent at cruise, and at WOT at least 8 points below idle) Must be absent: - Nothing else needed The module meters fuel from the MAF reading. If the sensor reads a fraction low, the base fuel is that fraction short and closed loop adds it back. In this model a contaminated element loses more of its signal as flow rises, so the shortfall and the correction both grow with airflow. The airflow check is the tell. The engine's actual airflow is set by displacement, rpm, manifold pressure and temperature; the MAF should match it. A leak makes the MAF short because air goes around it; a failing MAF is short because it reads low, and the gap keeps growing all the way to WOT, where a leak would have closed up. In the model: The MAF reports metered air times (1 minus (0 + 0.26 x square root of flow over healthy WOT flow)). On a real car: - Compare MAF grams per second against a calculated value at a steady 2,500 rpm and during a WOT run, using the service information's figures. - Inspect the sensing element and the air filter housing for contamination or leaks after the sensor. Where the model is simpler: Some failing sensors under report more at low flow instead. The fingerprint here is the high flow pattern; the low flow version would look closer to a vacuum leak without the WOT recovery. ### MAF over reporting URL: https://trimcase-web.pages.dev/faults/maf-over/ The MAF reports more air than the engine draws, so the module meters too much fuel and closed loop takes the same share back out everywhere. The MAF reads above the speed density estimate in every cell. Must be present: - Trims negative by about the same amount in every cell (Every closed loop total trim at or below -5 percent, with no more than 3 points between them) - MAF above the estimate everywhere (Airflow check at least 105 percent in all four cells) Must be absent: - Nothing else needed Over reporting by a fixed fraction means base fuel is high by that fraction at every load, so the negative correction is the same size at idle, at 2,500 rpm and at cruise. An engine cannot draw more air than its displacement, rpm and manifold pressure allow. A MAF reading above the estimate everywhere is the sensor, not the engine. In the model: The MAF reports metered air times 1.1. On a real car: - Check the reading against a calculated value with the engine warm and steady. - Look for an air filter or intake duct problem that disturbs the flow across the sensor. Where the model is simpler: The model applies one uniform over report. A real sensor's error usually varies somewhat with flow. ### Restricted exhaust URL: https://trimcase-web.pages.dev/faults/restricted-exhaust/ A plugged converter or crushed pipe limits how much exhaust can leave. Trims stay quiet because the MAF measures the reduced air honestly, but at WOT the engine draws far less air than its displacement and MAP say it should. Must be present: - Trims close to zero in every closed loop cell (Total trim (STFT + LTFT) within plus or minus 5 percent at idle, 2,500 rpm and cruise) - MAF short of the estimate at WOT only (Airflow check at or below 88 percent at WOT while cruise is at least 95 percent) Must be absent: - Upstream sensor reads lean at WOT (At WOT the upstream sensor reads below 0.45 V (narrowband) or above lambda 1.00 (wideband)) Exhaust back pressure leaves more burned gas in each cylinder, which lowers volumetric efficiency. The restriction's back pressure rises with the square of the flow, so at idle and light load it barely matters and at WOT it dominates. Off WOT the throttle simply opens a little more to hold the same airflow, so MAP creeps up; at WOT there is no more throttle to open and the airflow falls. Fuel control is unaffected because the air that does get in is measured, so the trims stay near zero. The fingerprint is on the air side only: an airflow check close to normal at light load and well short at WOT. In the model: Volumetric efficiency falls by 0.25 x (flow over WOT flow) squared x (baro over MAP). Off WOT the throttle opens to hold airflow, so MAP rises; at WOT airflow falls. On a real car: - Measure exhaust back pressure or run a vacuum test at a held rpm, as the service information describes. - Compare MAF at WOT against the expected value for the engine. Where the model is simpler: The model applies the restriction to both banks together, as a restriction after the pipes join would. ### Restricted fuel filter or weak pump URL: https://trimcase-web.pages.dev/faults/fuel-delivery/ A restricted filter or a weak pump cannot hold rail pressure as demand rises. Trims are close to normal at idle, grow positive as airflow rises, and the upstream sensor goes lean at WOT, while the MAF agrees with the estimate. Must be present: - Trims grow more positive as airflow rises (Cruise total trim at least +4 percent and at least 3 points above idle) - Upstream sensor reads lean at WOT (At WOT the upstream sensor reads below 0.45 V (narrowband) or above lambda 1.00 (wideband)) - MAF agrees with the speed density estimate everywhere (Airflow check between 95 and 105 percent in all four cells) Must be absent: - Nothing else needed An injector passes fuel in proportion to the square root of the pressure across it. When the supply cannot keep up, rail pressure sags as demand grows, each pulse delivers less than commanded, and closed loop adds fuel. At idle demand is tiny and the pressure holds; by cruise it has started to sag. At WOT the module is in open loop, commanding a rich mixture and carrying only the long term trim it learned at cruise. Demand is at its highest, the pressure falls furthest, and nothing corrects it, so the upstream sensor reads lean at the moment the engine most needs fuel. The MAF agrees with the estimate throughout, which rules out a metering fault. In the model: Rail pressure over rated = 1 minus k x fuel demand squared, with k set so the drop at healthy cruise demand is 12 percent, and a floor of 0.4. On a real car: - Measure fuel pressure and volume under load, not just at idle, following the service information. - Check the filter and the pump supply circuit for voltage drop. Where the model is simpler: The model floors rail pressure at 40 percent of rated so the WOT snapshot stays a running engine. ### Fuel pressure too high (regulator stuck closed) URL: https://trimcase-web.pages.dev/faults/high-fuel-pressure/ The regulator is stuck closed or the return is restricted, so rail pressure runs high. Every pulse delivers more fuel than commanded, the same share in every cell, and the trims come down evenly. The MAF agrees and the coolant reading is normal. Must be present: - Trims negative by about the same amount in every cell (Every closed loop total trim at or below -5 percent, with no more than 3 points between them) - MAF agrees with the speed density estimate everywhere (Airflow check between 95 and 105 percent in all four cells) Must be absent: - ECT frozen at one low value (ECT the same (within 1 C) in all four cells and no higher than 55 C) Flow through an injector goes with the square root of the pressure across it, so a rise of a quarter in pressure delivers roughly a tenth more fuel for the same pulse. That excess is the same share at every load, so the negative correction is flat across the cells. Two other faults also pull the trims down evenly. A MAF that over reports gives it away in the airflow check; an ECT stuck cold gives it away in the coolant reading. High fuel pressure leaves both honest. In the model: Rail pressure 25 percent above rated in every cell. On a real car: - Measure fuel pressure at idle and under load against the specification. - Check the return line and regulator. Where the model is simpler: The model uses one constant pressure rise. A regulator that sticks intermittently would come and go. ### Leaking injector URL: https://trimcase-web.pages.dev/faults/leaking-injector/ One injector drips while it should be shut. The trims on its bank go negative at idle and come back towards zero by cruise, and the MAF agrees with the estimate. On a V engine only one bank is affected. Must be present: - Trims negative at idle, near zero at cruise (Idle total trim at or below -6 percent and at least 5 points below cruise) - MAF agrees with the speed density estimate everywhere (Airflow check between 95 and 105 percent in all four cells) Must be absent: - Nothing else needed A dripping injector leaks while it is closed. At idle each injector is shut for well over ninety percent of the cycle, so the drip is a large share of idle fuel; at cruise it is open longer and the drip becomes a small share. The negative correction therefore shrinks with load. No air is involved, so the airflow check is normal, which separates it from a purge valve stuck open. The extra fuel lands on one bank only, so on a dual bank engine the other bank stays at zero. In the model: One injector passes a constant drip while shut, sized so its bank's idle trim moves 12 percent. The drip only flows for the part of each cycle the injector is closed. On a real car: - Check rail pressure bleed down with the engine off. - Balance or flow test the injectors on that bank as the service information describes. Where the model is simpler: The model uses a constant drip rate. Real leaks can worsen with heat, which is why hot restart complaints are common. ### Exhaust leak upstream of the upstream sensor URL: https://trimcase-web.pages.dev/faults/exhaust-leak/ An exhaust leak ahead of the upstream sensor lets air in on each pulse. The sensor sees extra oxygen and the trims add fuel at idle, fading with load. The MAF agrees with the estimate, no cylinder misfires, and on a V engine only one bank is fooled. Must be present: - Trims positive at idle, near zero at cruise (Idle total trim at least +8 percent and at least 6 points above cruise) - MAF agrees with the speed density estimate everywhere (Airflow check between 95 and 105 percent in all four cells) Must be absent: - Misfire counts on one cylinder (At least 20 misfires per 1,000 revolutions on one cylinder in some cell) - Downstream sensor sits rich in closed loop (Downstream sensor at least 0.78 V at idle and at cruise) Between exhaust pulses the pressure at a leak dips below atmospheric and air is pulled in. At idle the pulses dominate the flow, so the pulled in air is a noticeable share of the exhaust; as flow rises it is drowned out, and at WOT the leak pushes gas out instead. The sensor reads the extra oxygen as a lean mixture, so the module adds fuel and the engine actually runs rich. Downstream, the converter sees the same mixed gas the upstream sensor saw, so the downstream sensor sits at a normal steady voltage. No air entered the intake, so the MAF agrees with the estimate: that is what separates an exhaust leak from a vacuum leak with the same trim shape. In the model: Air drawn into the exhaust ahead of the upstream sensor: 12 percent of the bank's flow at idle, scaled by (idle flow over flow) to the power 0.8, and none at WOT. On a real car: - Listen and look for a leak at the manifold and flange at cold start. - Smoke test the exhaust as the service information allows. Where the model is simpler: The model treats the leaked air as mixed into the exhaust before both sensors. A leak between the upstream sensor and the converter would behave differently. ### Upstream O2 or A/F sensor biased lean URL: https://trimcase-web.pages.dev/faults/biased-sensor/ The upstream O2 or A/F sensor reports leaner than the gas it sits in. The module adds the same share of fuel in every cell, the engine runs rich, and the unbiased downstream sensor sits rich to say so. No misfire counts. Must be present: - Trims positive by about the same amount in every cell (Every closed loop total trim at least +5 percent, with no more than 3 points between them) - Downstream sensor sits rich in closed loop (Downstream sensor at least 0.78 V at idle and at cruise) Must be absent: - Misfire counts on one cylinder (At least 20 misfires per 1,000 revolutions on one cylinder in some cell) Closed loop drives the upstream reading to stoichiometry. If the sensor reports a fixed share leaner than the truth, the module adds that share of fuel everywhere, so the trims are positive and flat across the cells. With the sensor satisfied, the upstream reading itself looks perfect, which is why the upstream sensor alone never finds this fault. The engine is really rich by that share, and the downstream sensor, which is not biased, sits at a rich voltage in every closed loop cell. A misfire also puts the trims up with a rich downstream sensor, but it leaves counts on its cylinder. In the model: The upstream sensor on one bank reports lambda 1.07 times the gas it sits in. On a real car: - Compare the upstream sensor against the downstream sensor and against a known good reference, such as an exhaust gas analyser. - Check the sensor's heater and wiring for a bias in the signal circuit. Where the model is simpler: The model has no downstream fuel trim. Many control strategies use the downstream sensor to correct an upstream bias, which would make the trims smaller than shown here. ### Single cylinder misfire URL: https://trimcase-web.pages.dev/faults/misfire/ One cylinder misfires part of the time. Its unburned charge carries oxygen past the upstream sensor, which reads lean, so the trims add fuel on that bank. The misfire counter names the cylinder and the downstream sensor sits rich. Must be present: - Misfire counts on one cylinder (At least 20 misfires per 1,000 revolutions on one cylinder in some cell) - Downstream sensor sits rich in closed loop (Downstream sensor at least 0.78 V at idle and at cruise) Must be absent: - Nothing else needed When a cylinder fails to burn, its air and fuel go into the exhaust. The upstream sensor responds to the oxygen in that charge and reads lean, so closed loop adds fuel to the whole bank. The mixture is now rich overall, and the converter, which burns the leftovers, shows that on the downstream sensor. A misfire is the classic trap for trim diagnosis: positive trims that look like a lean engine when the real fault is ignition, compression or a single injector. Read the misfire counters before trusting a positive trim. In the model: One cylinder fails to burn 24 percent, 12 percent, 18 percent, 20 percent of its events in the four cells. The unburned charge reads as oxygen at the upstream sensor. On a real car: - Swap ignition components between cylinders and see whether the misfire follows. - Run a compression or leak down test on the cylinder. Where the model is simpler: The model uses a fixed misfire rate per cell. Real misfires are often worse under load and with heat. ### ECT sensor stuck cold URL: https://trimcase-web.pages.dev/faults/ect-stuck-cold/ The coolant temperature sensor reports one cold value whatever the engine does. The module adds warm up enrichment for a cold engine that is not there, and closed loop takes it back out, so the trims are negative and flat. The reading is identical in every cell. Must be present: - ECT frozen at one low value (ECT the same (within 1 C) in all four cells and no higher than 55 C) - Trims negative by about the same amount in every cell (Every closed loop total trim at or below -5 percent, with no more than 3 points between them) Must be absent: - Nothing else needed Below its warm threshold the module adds enrichment to base fuel. With the sensor stuck at a cold value that enrichment never goes away, and in closed loop the trims have to remove it everywhere, so the correction is the same size in every cell. The frozen reading is the giveaway. A warm engine's coolant moves with load and road speed; a number that does not change between idle, cruise and WOT is a sensor or circuit, not the coolant. In the model: The coolant reading is frozen at about 38 C (the noisy tier draws 28 to 48 C). The coolant itself is at 90 C. On a real car: - Compare the ECT reading with the IAT after a cold soak and with a thermometer on a warm engine. - Check the sensor circuit for resistance that would read as cold. Where the model is simpler: In this model the module still enters closed loop with the stuck reading and keeps its warm up enrichment in base fuel. Some strategies drop enrichment in closed loop or stay in open loop, so the reading itself is the dependable cue. ### Thermostat stuck open URL: https://trimcase-web.pages.dev/faults/thermostat-open/ The thermostat is stuck open, so the coolant never reaches regulating temperature and it drops further at road speed when the radiator gets more air. The trims are only slightly negative from a little warm up enrichment. Must be present: - ECT below regulating temperature, and falls at cruise (ECT below 82 C at idle and at least 5 C lower at cruise than at idle) Must be absent: - ECT frozen at one low value (ECT the same (within 1 C) in all four cells and no higher than 55 C) With the thermostat open the radiator is always in circuit. At idle the engine still gets fairly warm; at cruise, with air forced through the radiator, the coolant falls further. The module sees a real, cool engine and adds a little enrichment, which closed loop takes back out, so the trims are small and negative. Compare it with a stuck sensor: the thermostat's reading moves between cells, lowest at cruise, while a stuck sensor shows one frozen number. In the model: The coolant runs 16 C, 17 C, 26 C, 24 C below 90 C in the four cells. On a real car: - Watch coolant temperature on a road test and compare with the thermostat's rating. - Check upper hose temperature during warm up. Where the model is simpler: The model uses fixed temperature deficits per cell. Ambient temperature changes them a great deal on a real car. ## Frequently asked questions URL: https://trimcase-web.pages.dev/faq/ ### What is TrimCase? A practice bank of fuel trim and scan data cases for engine performance students, instructors and technicians moving into driveability work. Each case shows a freeze frame, a live data grid across four load cells and a trim chart; you name the fault and the cues that point to it, and the grade says what you missed. ### Where do the numbers come from? From one engine model written out in full on the model page: speed density air, MAF metering, expected fuel, and trim as the correction closed loop finds. A fault changes one physical quantity, such as a leak orifice or a rail pressure, and every reading follows from it. No data is copied from a real vehicle. ### Is this a diagnostic procedure for my car? No. It is a training aid built on a simulated engine. A real vehicle can behave differently, and the service information for that vehicle, with the physical tests it calls for, is what a real diagnosis rests on. ### Has the model been reviewed by a master technician? Not yet. The model and its assumptions are published on the model page so that a reviewer can check every step, and an independent review by an experienced driveability technician is planned. Corrections are welcome through the support address in the footer. ### What is free? The daily drill of 5 cases, practice on the unmetered air family, the model page, every fault page, the diagnostic guide and exporting your progress. None of it needs an account. ### Can I use it in class? Yes. Projection mode puts one case on the screen with the answer hidden until you reveal it, and prints a case sheet with the answer on its own page. Every case has a code, so students can open the same case on their own devices. The timed exam runs 20 cases. ### Why are there no make or model names? The engine families are generic on purpose: an inline four, a V6 and a V8, with narrowband and wideband sensors. The point is the reasoning, which carries across makes. ### Where is my progress stored? In your browser only. Nothing is uploaded. Export it as a JSON file from the progress page to keep a copy or move it. ### Is it affiliated with a certification body? No. TrimCase is not affiliated with ASE, the ASE Education Foundation, or any certification or accrediting body. A good score here is a self assessment, not a credential. ## What it is not - TrimCase is not affiliated with ASE, the ASE Education Foundation, or any certification or accrediting body. - TrimCase is a training aid built on a simulated engine model. It is not a diagnostic instruction for any real vehicle. - No make, model, engine code or calibration is depicted, and no data is copied from a real vehicle. - The model has not yet been reviewed by an independent master technician; its assumptions are published on the model page so anyone can check them. - A score is a self assessment, not a credential. ## Pages - [Home](https://trimcase-web.pages.dev/): What TrimCase is, an example case and the fault families. - [Daily drill](https://trimcase-web.pages.dev/drill/): Five fuel trim cases a day, the same for everyone, graded on the cues as well as the answer. Free. - [Practice by fault family](https://trimcase-web.pages.dev/practice/): Eight graded cases from one fault family, clean, noisy or two faults. - [Timed exam](https://trimcase-web.pages.dev/exam/): Twenty cases in forty minutes across every family and tier, reviewed at the end. - [Projection mode](https://trimcase-web.pages.dev/projection/): One case on a classroom screen, reveal on click, printable case sheet. - [Fuel trim diagnosis, step by step](https://trimcase-web.pages.dev/guide/): The diagnostic order of operations the drills reward, and the guide index. - [Positive fuel trim at idle: the causes, and how to tell them apart](https://trimcase-web.pages.dev/guide/positive-fuel-trim-at-idle/): Fuel trim high at idle but near zero at cruise usually means a vacuum leak or an exhaust leak. How to tell them apart with the MAF check and the banks. - [Negative fuel trim: the causes, and how to check each one](https://trimcase-web.pages.dev/guide/negative-fuel-trim-causes/): Negative fuel trim means the computer is pulling fuel. The usual causes, from a leaking injector to high fuel pressure, and the checks that tell them apart. - [Long term vs short term fuel trim, explained](https://trimcase-web.pages.dev/guide/long-term-vs-short-term-fuel-trim/): Short term fuel trim is the instant correction; long term fuel trim is the learned one. How each behaves, why you add them, and how to read them per bank. - [MAF grams per second per litre: the rule of thumb, and a better check](https://trimcase-web.pages.dev/guide/maf-grams-per-second-per-litre/): A healthy engine at idle reads roughly 1 g/s of MAF per litre. Why that is only a first look, and how to check airflow properly with rpm, MAP and IAT. - [Bank 1 vs bank 2 fuel trim: what a split between the banks means](https://trimcase-web.pages.dev/guide/fuel-trim-bank-1-vs-bank-2/): When one bank's fuel trim moves and the other stays near zero, the cause belongs to that bank. What bank 1 means, and how to read a split on a V engine. - [How to practise fuel trim diagnosis without a car](https://trimcase-web.pages.dev/guide/fuel-trim-diagnosis-practice/): Practise fuel trim diagnosis from scan data cases: read every load cell, name the fault and the cues, and get graded on the reasoning. Free, in your browser. - [Fault fingerprints](https://trimcase-web.pages.dev/faults/): Every fault and the healthy control, with the cues that tell each apart. - [No fault (healthy control)](https://trimcase-web.pages.dev/faults/no-fault/): What healthy fuel trim data looks like: trims near zero in every cell, the MAF agreeing with the engine, warm coolant, a steady downstream sensor. - [Vacuum leak](https://trimcase-web.pages.dev/faults/vacuum-leak/): A vacuum leak adds fuel trim at idle that fades by cruise, and the MAF reads short of what the engine draws at idle. The fingerprint, numbers and checks. - [EVAP purge valve stuck open](https://trimcase-web.pages.dev/faults/purge-stuck-open/): A purge valve stuck open pulls fuel trim negative at idle with the MAF short of the estimate. How to spot it on scan data and confirm it on the car. - [MAF under reporting](https://trimcase-web.pages.dev/faults/maf-under/): A MAF reading low makes fuel trim rise with airflow and falls further short of the engine's real airflow as flow rises, most of all at WOT. - [MAF over reporting](https://trimcase-web.pages.dev/faults/maf-over/): A MAF reading high pulls fuel trim negative by the same amount in every cell, with the MAF above the speed density estimate everywhere. - [Restricted exhaust](https://trimcase-web.pages.dev/faults/restricted-exhaust/): A restricted exhaust leaves fuel trim normal but caps airflow at wide open throttle. How to tell it from a MAF reading low on scan data. - [Restricted fuel filter or weak pump](https://trimcase-web.pages.dev/faults/fuel-delivery/): A weak fuel pump or clogged filter shows fuel trim rising with demand and a lean upstream sensor at WOT while the MAF agrees with the engine. - [Fuel pressure too high (regulator stuck closed)](https://trimcase-web.pages.dev/faults/high-fuel-pressure/): Fuel pressure too high pulls fuel trim negative in every cell while the MAF and coolant read normal. The fingerprint and how to confirm it. - [Leaking injector](https://trimcase-web.pages.dev/faults/leaking-injector/): A leaking injector pulls fuel trim negative at idle, near zero at cruise, on one bank of a V engine, with the MAF agreeing with the engine. - [Exhaust leak upstream of the upstream sensor](https://trimcase-web.pages.dev/faults/exhaust-leak/): An exhaust leak ahead of the upstream sensor adds fuel trim at idle on one bank while the MAF stays honest. How to tell it from a vacuum leak. - [Upstream O2 or A/F sensor biased lean](https://trimcase-web.pages.dev/faults/biased-sensor/): An upstream sensor biased lean adds the same fuel trim in every cell on its bank, and the downstream sensor reads rich. The fingerprint and checks. - [Single cylinder misfire](https://trimcase-web.pages.dev/faults/misfire/): A single cylinder misfire makes fuel trim go positive because unburned oxygen fools the upstream sensor. Misfire counts and a rich downstream name it. - [ECT sensor stuck cold](https://trimcase-web.pages.dev/faults/ect-stuck-cold/): A coolant sensor stuck cold adds warm up fuel the trims take back out: flat negative fuel trim and one frozen low coolant reading on a warm engine. - [Thermostat stuck open](https://trimcase-web.pages.dev/faults/thermostat-open/): A thermostat stuck open keeps the coolant below its regulating temperature and falling at road speed, with small negative trims from warm up fuel. - [How fuel trim works: the engine model](https://trimcase-web.pages.dev/model/): Every equation the cases are generated from, and what each fault changes. - [FAQ](https://trimcase-web.pages.dev/faq/): Where the numbers come from, what is free, classroom use, and what the site is not. - [Progress and export](https://trimcase-web.pages.dev/progress/): The case record kept in this browser, with JSON export and import. - [Privacy](https://trimcase-web.pages.dev/privacy/): Nothing you answer is uploaded; progress stays in your browser. - [Terms of use](https://trimcase-web.pages.dev/terms/): The limits of what a simulated case can be relied on for.