25 BMW Option Codes That Change a 3 Series’ Value
Short answer
BMW option codes are the factory build sheet of a 3 Series: three- and four-character codes like ZPP (Premium Package), ZMP (M Sport Package), 2TB (Sport automatic transmission), and 688 (Harman Kardon) tell you exactly what a car left the factory with. The VIN’s first 11 characters narrow down country, model, engine, and year; the last 7 digits unlock the full option list through free decoders such as the NHTSA vPIC database, bimmer.work, or mdecoder. Before you pay a premium for an “M Sport” or “fully loaded” 3 Series, decode the options and cross-check them against our used 3 Series buying guide — a badge can be added in an afternoon, a build sheet cannot.
In this guide
- The 17 characters: WMI, VDS, and VIS
- Position-by-position: what each slot tells you
- Where to find the VIN on a BMW
- How to decode the option list for free
- 25 BMW option codes that change a 3 Series’ value
- How to pull a real option list from a VIN
- Interactive: decode your options
- How to use the option list when buying
- Quiz: can you read a VIN?
- Option code and VIN FAQ
Why a 3 Series’ option list beats its badge
Two used 3 Series cars can share a year, a mileage figure, and a window sticker price — and still be thousands of dollars apart in real value. The difference is the build sheet: the factory option codes that say whether that 2016 328i is a stripped rental-fleet car or a ZPP/ZMP car with sport transmission, Harman Kardon, and a head-up display. Sellers love words like “fully loaded” and “M Sport,” and an M badge costs about twenty dollars on the aftermarket. Option codes are the one claim a seller cannot fake, because they are tied to the car’s VIN in BMW’s own production records.
Every BMW carries two layers of identity. The VIN (Vehicle Identification Number) describes the car itself — where it was built, which model and engine, which year, and its serial number. The option codes (also called SA codes, from the German Sonderausstattung) describe how it was equipped: every package and standalone option ordered when the car was built. A VIN decoder reads the first layer; a BMW option decoder reads both. This guide covers both, because you need the VIN to get the options, and you need the options to judge the car.
The 17 characters: WMI, VDS, and VIS
A VIN is always 17 characters — uppercase letters and numbers, never the letters I, O, or Q (they look too much like 1 and 0). It splits into three sections. Positions 1–3 are the WMI, the World Manufacturer Identifier: who built the car and in which country. Positions 4–9 are the VDS, the Vehicle Descriptor Section: model, body style, and engine in BMW’s own internal coding. Positions 10–17 are the VIS, the Vehicle Identifier Section: model year, assembly plant, and the car’s unique serial number. Memorize the three-section split and you can already read the skeleton of any BMW VIN.
BMW WMI codes you will actually see
| WMI | Meaning |
|---|---|
| WBA | BMW AG, Germany — standard passenger cars and SAVs built in Germany |
| WBS | BMW M GmbH, Germany — genuine M cars (M3, M4, M5), not M Sport trim |
| 4US / 5UX | BMW Manufacturing, Spartanburg, South Carolina — X3, X4, X5, X6, X7 and their M versions |
| WBX | BMW AG, Germany — motorcycles and certain other BMW-built vehicles |
For 3 Series shoppers the takeaway is simple: an F30 or G20 sedan starts with WBA, and a true M3 starts with WBS. If someone advertises a “335i M” and the VIN starts with WBA, it is a regular 3 Series with M Sport trim — which is fine, as long as the price reflects it. The M in ZMP (M Sport Package) and the M in WBS are two different things, and the WMI tells you which one the car actually is.
The check-digit question: position 9
You may read that BMWs “don’t use” the VIN check digit. That is only half true, and the half matters. In the United States and Canada, federal law (49 CFR Part 565) requires position 9 to be a mathematically calculated check digit — a fraud-detection checksum derived from the other 16 characters. Every BMW sold new in North America carries a valid check digit there, and NHTSA’s decoder will flag a VIN whose check digit does not compute. In Europe, ISO 3779 does not require the check digit, so BMW uses position 9 as an ordinary VDS character on European-market cars — which is why some US-built decoders choke on gray-market or European-delivery VINs. The practical rule: position 9 tells you nothing about the car’s equipment, but a failed check digit on a US-market car means the VIN was copied or typed wrong.
Position-by-position: what each slot tells you
| Position(s) | Section | What it tells you |
|---|---|---|
| 1–3 | WMI | Manufacturer and country of origin (WBA, WBS, 5UX…) |
| 4–8 | VDS | Model line, body style, engine, and drivetrain in BMW-internal coding |
| 9 | VDS | Check digit on North American-market cars; ordinary VDS character elsewhere |
| 10 | VIS | Model year code (see table below) |
| 11 | VIS | Assembly plant — BMW-specific, needs a BMW decoder to map |
| 12–17 | VIS | Sequential production number, unique to the car |
Model year codes (position 10)
The year code runs on a 30-year rotating cycle that skips I, O, Q, U, Z, and 0. The run that matters to used 3 Series buyers looks like this:
| Code | Year | Code | Year |
|---|---|---|---|
| 6 | 2006 | G | 2016 |
| 7 | 2007 | H | 2017 |
| 8 | 2008 | J | 2018 |
| 9 | 2009 | K | 2019 |
| A | 2010 | L | 2020 |
| B | 2011 | M | 2021 |
| C | 2012 | N | 2022 |
| D | 2013 | P | 2023 |
| E | 2014 | R | 2024 |
| F | 2015 | S | 2025 |
A quick example: a 3 Series VIN of WBA8D9C50GK… starts with WBA (BMW Germany passenger car), has G in position 10 (2016 model year) — and you would expect that car to be a facelift F30, which matches the 2016 model year. When the year code and the car’s stated year disagree, you are looking at either a typo or a car with a story the seller is not telling.
Where to find the VIN on a BMW
BMW stamps or displays the VIN in four places you can check in about two minutes:
- Driver’s-side dash. A metal plate at the base of the windshield, readable from outside the car. This is the one police and inspectors check — it should be cleanly riveted, with no signs of tampering or re-stamping.
- Driver’s door jamb sticker. Open the driver’s door and look at the B-pillar area: a certification label shows the VIN, build date (month/year), and weight ratings. The build date here is gold for buyers — it tells you whether a “2016” car was built in 2015, which matters for option availability and warranty math.
- iDrive. On most F- and G-generation cars the VIN is shown in the vehicle information screen. A VIN in iDrive that differs from the dash plate is a walk-away red flag — control units get swapped, but VINs should never disagree.
- Paperwork. Title, registration, and insurance card. All three should match the car exactly, character for character. A single mismatched digit is a paperwork problem at best; at worst it means the documents belong to a different car.
BMW people also live by the last 7 digits: BMW’s internal systems (and most BMW option decoders) key off the final seven characters of the VIN rather than the full 17. If a forum member or a parts counter asks for “the last 7,” that is what they want — and it is also the fastest way to look a car up yourself.

How to decode the option list for free
A generic VIN decoder (the free NHTSA VIN decoder is the authoritative one) will confirm year, make, model, engine, and plant from the 17 characters. But the option list — the Z-codes and SA codes that say what the car was actually ordered with — lives in BMW’s production data, and only BMW-specific decoders read it. The well-known free ones, bimmer.work and mdecoder, are named often enough that a web search finds them instantly; they take the last 7 VIN digits and return the factory build sheet. BMW itself does not offer a public option-list decoder, so third-party decoders plus a dealer service printout are the two sources that matter.
What a decoder cannot tell you is just as important: it will not show accidents, title brands, mileage rollbacks, or whether an option was retrofitted after delivery. A decoder output that lists 2TB (Sport automatic) while the car has no paddle shifters means someone swapped the steering wheel — or the build sheet belongs to a different car. Use the option list as a checklist during the in-person inspection, not as a substitute for it. Our used 3 Series buying guide covers the full inspection; decoding is the desk research you do before you ever drive to see the car.
25 BMW option codes that change a 3 Series’ value
Every code below was verified against BMW’s own option-code catalog and period BMW Group press pricing documents — no forum folklore, no invented codes. BMW prints package codes with a Z prefix (ZPP, ZMP) and standalone options as three-digit numbers (2TB, 688); decoders sometimes show them with an S prefix (S2TB, S688), which means the same thing.
The package codes (the big-ticket ones)
| Code | Name | Why it matters to buyers |
|---|---|---|
| ZPP | Premium Package | The resale workhorse: bundles comfort access-era conveniences (power seats, lumbar, auto-dimming mirrors, garage-door opener depending on year). A ZPP car consistently appraises above a stripper with the same mileage. |
| ZMP | M Sport Package | M sport seats, M steering wheel, aero kit, sport suspension (704) and M brakes on later cars. The single most value-adding package on a used 3 Series — but verify with the decoder, not the badge. |
| ZCW | Cold Weather Package | Heated front seats (494), heated steering wheel (248), headlight washers. In snow-belt states this is a genuine value add; in warm states it is dead weight you should not pay extra for. |
| ZDA | Driving Assistance Package | Active Driving Assistant, blind-spot detection, lane departure warning. Increasingly expected by buyers on 2017+ cars; its absence dates a car in the listing photos. |
| ZSP | Sport Package | The E90-era predecessor to M Sport: sport seats, sport suspension, sport steering wheel. On an E90 it is the package to look for. |
| ZHP | Performance Package | US-only E46 330i/Ci/Cic special: hotter cams, sportier suspension, M body bits. A collector-relevant code — a real ZHP car commands a real premium over a regular E46 330. |
The standalone codes buyers should memorize
| Code | Name | Why it matters to buyers |
|---|---|---|
| 2TB | Sport automatic transmission | Sport programming plus steering-wheel paddle shifters (usually paired with ZMP). Shifts faster and holds gears in manual mode; cars without it feel noticeably lazier and sell slower. |
| 205 | Steptronic automatic | The standard automatic. If the decoder shows 205 instead of 2TB, the car has no sport programming and no factory paddles — price it accordingly. |
| 322 | Comfort Access | Keyless entry and push-button start without taking the fob out. Buyers now treat it as standard equipment; its absence is a negotiation point, not a dealbreaker. |
| 610 | Head-up display | Projects speed and nav onto the windshield. A genuine differentiator in listings — HUD cars photograph the same but feel a class up on a test drive. |
| 552 | Adaptive LED headlights | Corner-following LEDs with high-beam assistant (5AC) on later cars. Big safety and resale value versus base halogens; check they actually swivel on a dark road. |
| 5AC | High-beam assistant | Automatic high-beam dipping. Usually bundled with 552; nice to have, rarely a price driver on its own. |
| 688 | Harman Kardon surround sound | The premium audio option (16 speakers on F30-era cars). The single most-mentioned “must have” in buyer wish lists; non-HK cars take longer to sell. |
| 676 | HiFi speaker system | The mid-grade audio: external amp, more speakers than base, but not the HK. Better than base stereo; do not confuse it with 688 in a listing. |
| 6CP | Apple CarPlay preparation | Wireless CarPlay on 2017+ cars (needs Navigation Professional 609). Missing it on a 2018 is an annoyance buyers will punish; present on most 2019+ cars. |
| 609 | Navigation Professional | The large-screen iDrive nav. Required hardware for 6CP CarPlay and for several connected services; cars without it feel a generation older inside. |
| 494 | Heated front seats | Often bundled in ZCW. Expected in northern markets; verify they actually heat — seat-heater elements do fail. |
| 248 | Heated steering wheel | The ZCW companion to 494. Cheap to want, expensive to retrofit — a good tiebreaker between two otherwise identical cars. |
| 403 | Electric glass roof | The moonroof. Near-universal expectation on US 3 Series; a delete is rare and hurts resale. Check the shade and tilt mechanism on the test drive. |
| 431 | Auto-dimming mirrors | Interior (and usually exterior) mirrors that dim at night. Small comfort item; usually arrives inside ZPP. |
| 488 | Lumbar support | Driver and passenger lumbar adjustment. Long-drive comfort that buyers notice on day two of ownership — and miss immediately if absent. |
| 481 | Sport seats | The E90-era bolstered seats (superseded by M Sport seats under ZMP). On an E90, 481 seats are the enthusiast’s tell for a well-optioned car. |
| 704 | M sport suspension | Firmer, lower suspension, standard inside ZMP. Improves handling; budget for firmer ride quality and slightly higher shock replacement costs. |
| 2NH | M Sport brakes | Bigger blue (later red) M calipers with more bite. A real performance upgrade — and pricier pads and rotors at brake time, so check pad life. |
| 2VF | Adaptive M suspension | Electronically adjustable dampers: comfort and sport in one car. Desirable and expensive to replace when the dampers wear — listen for knocks on the test drive. |
How to pull a real option list from a VIN
Do this before you contact the seller, while you still have leverage:
- Get the full VIN from the listing — dash photo, door-jamb photo, or the ad text. If the seller will not share it, treat that as information in itself.
- Sanity-check the 17 characters yourself: WMI matches the model, position 10 matches the advertised year, and on a US car the NHTSA decoder validates the check digit. One wrong character and every conclusion downstream is suspect.
- Run the last 7 digits through a BMW option decoder (bimmer.work, mdecoder, or similar) and save or screenshot the build sheet. Compare its package list against the ad’s claims — “M Sport” without ZMP, “premium sound” without 688, or “cold weather” without ZCW/494 are price-adjustment facts, not accusations.
- Cross-check the sheet against the car in person: paddles for 2TB, HK badges for 688, the HUD reflection for 610, sport seats for ZMP/481. Retrofits happen; a decoder lists what the car was born with, and your eyes confirm what it still has.
- Note what the sheet rules out, not just what it lists: no 205/2TB distinction in an ad? The decoder settles it. No ZDA on a 2019? That is a missing safety suite you can price in.
One caution: a build sheet is not a history report. It will not tell you about accidents, flood damage, or odometer rollbacks — pair it with a proper history check and the hands-on inspection in our used 3 Series buying guide before any money moves.
Interactive: decode your options
Tick every code from the car’s build sheet (or the seller’s ad) and the tool translates it into plain English, flags the value drivers, and calls out combinations that matter — like whether “M Sport” actually comes with paddle shifters.
Decode your options
Select every option code on the car’s build sheet, then decode.
Packages
Drivetrain & chassis
Comfort & convenience
Tech, audio & safety
Your plain-English equipment summary will appear here.

How to use the option list when buying
A decoded build sheet turns a vague “nice 3 Series” into a priced position. Work it in this order:
- Pay for what the market pays for. ZMP, ZPP, 2TB, 688, 610, and 552 are the codes that move resale value on a 3 Series. Two otherwise identical cars — one a ZPP/ZMP car, one a base car — are not the same car at the same price, even with identical mileage. Generation context helps too: our F30 vs G20 comparison and E90 vs F30 comparison show which options were even available in each era.
- Discount for what is missing. No ZDA on a 2019, no 6CP on a 2018, halogens instead of 552 — each missing option is a line item in your offer, not a reason to walk away. The one exception is the moonroof delete (no 403): it is rare enough that the next buyer will discount it too.
- Verify the expensive-feeling options in person. Paddles behind the wheel (2TB), the HUD ghost image on the windshield (610), HK speaker badges (688), sport seats and the M wheel (ZMP). Retrofits are common and not always disclosed; a build sheet proves what the car was born with, and your eyes prove what it still has.
- Match the spec to the engine. The VDS characters encode the engine, and option value rides on top of mechanical desirability: a well-optioned 335i and a well-optioned 328i are different buying decisions. Our 328i vs 335i guide and 330i vs M340i guide cover the engine side; this article covers the equipment side.
- Remember the running costs hiding in the codes. 2NH means pricier brake jobs, 2VF means expensive dampers when they wear, and a ZHP E46 deserves a specialist inspection. Cross-check the maintenance picture with our 3 Series maintenance schedule and reliability by year before you commit.

Quiz: can you read a VIN?
Five quick questions on the positions covered above. Pick an answer for each, then check your score.
VIN position quiz
Option code and VIN FAQ
Can I decode BMW option codes from the VIN alone?
Partially. The 17-character VIN tells you country, model, engine, year, and plant, but not the option list — for that you need the last 7 digits run through a BMW-specific decoder (bimmer.work or mdecoder, found via web search) or a dealer service printout. The free NHTSA decoder confirms the VIN is structurally valid but does not list BMW options.
What does ZMP mean on a BMW 3 Series?
ZMP is the M Sport Package: M sport seats, M steering wheel, aerodynamic body kit, sport suspension, and (on later cars) M Sport brakes. It is the most value-adding package on a used 3 Series, but verify it in the build sheet — an M badge on the trunk is a twenty-dollar part, while ZMP in the decoder is factory equipment.
Do BMW VINs have a check digit?
On cars sold new in North America, yes: federal law requires position 9 to be a mathematically calculated check digit, and NHTSA’s decoder validates it. On European-market BMWs, position 9 is an ordinary vehicle-descriptor character with no check-digit math behind it. Either way, the check digit tells you nothing about the car’s equipment.
What is the difference between option 2TB and 205?
2TB is the Sport automatic transmission with sport shift programming and steering-wheel paddle shifters; 205 is the standard Steptronic automatic without them. A 2TB car feels noticeably sharper and holds gears in manual mode, and buyers consistently prefer it — check which code the decoder shows before you pay a sport-transmission price.
Can a seller fake option codes?
The codes themselves cannot be faked — they come from BMW’s production records tied to the VIN. What sellers can do is mislabel the car: “M Sport” without ZMP, “premium sound” without 688, “fully loaded” on a base car. That is exactly why you decode the build sheet first and cross-check the equipment in person, as described in our used 3 Series buying guide.
