Choose the BME280 if you only need reliable temperature, humidity and barometric pressure — it is simple, extremely low power and still one of the best choices for ESP32 weather stations and battery sensors. Choose the BME688 for a new indoor-air-quality project because it adds a heated gas sensor, VOC/IAQ measurements and Bosch’s BSEC2/AI gas-processing features. The older BME680 sits between them, but Bosch now marks it “not recommended for new designs”, so it mainly makes sense when you already own one or are maintaining an existing project.

BME280, BME680 and BME688 at a glance
These three Bosch sensors look similar and are often sold on almost identical breakout boards, but they are intended for different jobs.
The BME280 is a 3-in-1 environmental sensor:
- Temperature
- Relative humidity
- Barometric pressure
The BME680 and BME688 are 4-in-1 environmental sensors:
- Temperature
- Relative humidity
- Barometric pressure
- Gas / air-quality sensing
The BME688 is essentially the more capable evolution of the BME680, adding improved gas-analysis capabilities, application-specific gas scanning and support for Bosch’s BME AI-Studio.
| Feature | BME280 | BME680 | BME688 |
|---|---|---|---|
| Temperature | Yes | Yes | Yes |
| Humidity | Yes | Yes | Yes |
| Pressure | Yes | Yes | Yes |
| Gas resistance | No | Yes | Yes |
| VOC / IAQ | No | Yes, with BSEC | Yes, with BSEC2 |
| Gas classification | No | Limited | Yes |
| BME AI-Studio | No | No | Yes |
| Specific VSC detection | No | No | Yes |
| I²C | Yes | Yes | Yes |
| SPI | Yes | Yes | Yes |
| Best for | Weather/environment | Existing IAQ projects | New IAQ/gas projects |
BME280: the simple environmental sensor
The BME280 is the easiest sensor of the three to understand.
It measures:
- temperature
- humidity
- atmospheric pressure
There is no gas sensor and no heater.
Bosch specifies a pressure operating range of 300–1100 hPa and a temperature operating range of -40°C to +85°C. Typical humidity accuracy is ±3% RH, and the humidity response time is approximately 1 second.
Its low power consumption is one of its strongest advantages.
At a 1 Hz update rate Bosch specifies approximately:
Temperature + Humidity:
1.8 µA
Temperature + Pressure:
2.8 µA
Temperature + Humidity + Pressure:
3.6 µA
Sleep current is around:
0.1 µA
That makes the BME280 especially attractive for an ESP32 that spends most of its time in deep sleep.
Why the BME280 is still so popular
For a typical weather or room sensor, a gas sensor may provide no useful benefit.
If the goal is simply:
Temperature: 22.4°C
Humidity: 47%
Pressure: 1014 hPa
the BME280 already does everything required.
It is particularly suitable for:
- ESP32 weather stations
- Home Assistant room sensors
- outdoor sensor nodes
- battery-powered projects
- altitude/barometric experiments
- greenhouse monitoring
- HVAC monitoring
ESPHome supports the BME280 directly over either I²C or SPI, and normally runs it in forced mode: take a measurement, then return the sensor to sleep until the next update.
BME680: BME280 plus gas sensing
The BME680 adds a metal-oxide gas sensor to the temperature, humidity and pressure sensors.
Bosch describes it as a four-in-one environmental sensor capable of measuring:
- barometric pressure
- temperature
- relative humidity
- air quality
The gas element responds to a broad range of gases, particularly volatile organic compounds, or VOCs.
That means a BME680 can react to environmental changes caused by things such as:
- cooking
- cleaning products
- alcohol
- fragrances
- solvents
- human occupancy
- poor ventilation
But it is important to understand what the sensor is actually measuring.
The BME680 does not identify individual gases directly
The raw gas measurement from a BME680 is essentially gas resistance.
The resistance of the heated sensing element changes in response to the chemical composition of the surrounding air.
A raw value might look like:
Gas resistance:
126 kΩ
That number alone does not mean:
126 kΩ = bad air
or:
126 kΩ = 500 ppm VOC
To make the gas measurement more useful, Bosch provides its BSEC environmental-processing software, which analyses the gas response together with temperature and humidity history to produce values such as an Indoor Air Quality index. ESPHome’s BSEC2 integration supports both BME680 and BME688.
BME688: the more capable gas sensor
The BME688 retains the environmental sensing functions of the BME680 but adds more advanced gas-analysis capabilities.
Bosch describes it as its first gas sensor with AI capabilities and says it can respond to VOCs, volatile sulfur compounds and gases including carbon monoxide and hydrogen at very low concentrations.
Compared with BME680, Bosch specifically adds:
- application-specific gas scanning
- specific VSC detection
- BME AI-Studio support
This is the main reason to choose a BME688 rather than simply buying another BME680.
What does the “AI” in BME688 actually mean?
The BME688 does not contain a magical neural network that automatically tells you:
Coffee detected
or:
Paint fumes detected
straight out of the box.
The interesting feature is its ability to run gas-scanning heater profiles and work with Bosch’s BME AI-Studio.
Different gases produce different responses as the sensor’s heater is driven through different temperature profiles.
A developer can collect training data and create a classifier for a particular application.
Bosch describes the BME688 as having adjustable gas sensitivity/selectivity and supports application-specific gas recognition through BME AI-Studio.
Potential experimental applications include:
- distinguishing different VOC mixtures
- detecting spoiled food signatures
- detecting sulfur compounds
- identifying specific environmental changes
- classifying odours
- monitoring air-quality patterns
It is therefore much more than simply “a newer BME280.”
BME688 does not measure real COâ‚‚
This point is extremely important.
With BSEC2, a BME680 or BME688 can expose:
COâ‚‚ equivalent
often written as:
eCOâ‚‚
This is not a direct COâ‚‚ measurement.
ESPHome explicitly explains that BSEC derives its estimated COâ‚‚ value using a correlation between VOC behaviour and COâ‚‚ in human breath.
So:
BME688 CO2 Equivalent = 850 ppm
does not mean the sensor has directly measured the room at 850 ppm COâ‚‚.
For real COâ‚‚ measurement, use a dedicated optical COâ‚‚ sensor such as:
- SCD30
- SCD40
- SCD41
The BME688 is primarily a VOC/gas sensor, not a substitute for an NDIR or photoacoustic COâ‚‚ sensor.
BME680 vs BME688 gas capability
For basic Home Assistant air-quality monitoring, both can provide:
- gas resistance
- IAQ
- estimated COâ‚‚
- estimated breath VOC
- temperature
- humidity
- pressure
when used with BSEC2.
The BME688 becomes more interesting if the application requires:
- gas scanning
- trained classifications
- BME AI-Studio
- specific gas-response experiments
Bosch currently markets BME688 as the more advanced device and now marks the BME680 as not recommended for new designs.
For a new 2026 project, there is therefore little reason to intentionally choose a BME680 over a similarly priced BME688.
Temperature and humidity performance
The humidity specification is surprisingly similar between the three.
Bosch specifies typical humidity accuracy around:
BME280: ±3% RH
BME680: ±3% RH
BME688: ±3% RH
The major difference is response time.
The BME280 humidity element has a specified response of around 1 second, while Bosch gives approximately 8 seconds for the BME680 and BME688 humidity sensor.
For ordinary Home Assistant climate monitoring, that difference is rarely important.
Pressure performance
All three include a proper barometric pressure sensor.
Bosch specifies:
BME280 pressure RMS noise:
0.2 Pa
BME680 / BME688:
0.12 Pa
and all three have a pressure sensitivity error around ±0.25% in Bosch’s published technical data.
This makes any of them useful for:
- weather trends
- barometric pressure
- approximate altitude
- atmospheric monitoring
If gas sensing is unnecessary, however, there is little reason to buy a BME688 merely for pressure.
Power consumption
This is where the BME280 has a major advantage for simple environmental sensing.
BME280 measuring temperature, humidity and pressure at 1 Hz consumes only around:
3.6 µA average.
BME680 and BME688 are similarly efficient when only measuring temperature, humidity and pressure:
BME680:
~3.7 µA at 1 Hz
BME688:
~3.7 µA at 1 Hz
But once the heated gas element is used, consumption increases significantly.
Bosch gives BME688 figures of approximately:
ULP air-quality mode:
90 µA
Low-power air-quality mode:
0.9 mA
Standard gas-scan mode:
3.9 mA
That makes a major difference in battery projects.
Best choice for an ESP32 deep-sleep sensor
If the project wakes every few minutes, reads temperature/humidity/pressure, transmits the data and goes back to sleep:
BME280 wins.
The gas heater in the BME680/BME688 needs measurement history and controlled heating cycles to provide meaningful air-quality information.
Switching the entire sensor completely off between widely spaced measurements can reduce the usefulness of the gas-processing algorithms.
ESPHome’s BSEC2 integration provides two standard gas sampling modes:
LP:
every 3 seconds
ULP:
every 5 minutes
and also saves BSEC calibration state periodically so the algorithm does not always have to start from zero after reboot.
For a battery weather sensor, the simpler BME280 therefore makes much more sense.
ESPHome with BME280
A basic ESPHome configuration is very simple.
For a classic ESP32 DevKit:
i2c:
sda: GPIO21
scl: GPIO22
sensor:
- platform: bme280_i2c
temperature:
name: "Room Temperature"
pressure:
name: "Room Pressure"
humidity:
name: "Room Humidity"
address: 0x76
update_interval: 60s
Current ESPHome uses the bme280_i2c platform for I²C and bme280_spi for SPI. Supported I²C addresses are 0x76 and 0x77.
Once connected through the ESPHome integration, the three readings appear directly in Home Assistant.
ESPHome with BME680 or BME688
ESPHome provides a BSEC2 integration for both BME680 and BME688.
For a BME688:
i2c:
sda: GPIO21
scl: GPIO22
bme68x_bsec2_i2c:
address: 0x76
model: bme688
operating_age: 28d
sample_rate: LP
sensor:
- platform: bme68x_bsec2
temperature:
name: "Room Temperature"
humidity:
name: "Room Humidity"
pressure:
name: "Room Pressure"
gas_resistance:
name: "Gas Resistance"
iaq:
name: "Indoor Air Quality"
iaq_accuracy:
name: "IAQ Accuracy"
co2_equivalent:
name: "CO2 Equivalent"
breath_voc_equivalent:
name: "Breath VOC Equivalent"
ESPHome’s current BSEC2 component supports both models and exposes temperature, humidity, pressure, gas resistance, IAQ, static IAQ, IAQ accuracy, COâ‚‚-equivalent and breath-VOC-equivalent values.
IAQ values explained
BSEC2 produces an Indoor Air Quality index from 0 to 500.
ESPHome documents the interpretation as:
| IAQ | Air quality |
|---|---|
| 0–50 | Excellent |
| 51–100 | Good |
| 101–150 | Lightly polluted |
| 151–200 | Moderately polluted |
| 201–250 | Heavily polluted |
| 251–350 | Severely polluted |
| >351 | Extremely polluted |
This is usually much easier to use in Home Assistant than displaying raw gas resistance alone.
For example:
IAQ 42
→ Excellent
IAQ 87
→ Good
IAQ 185
→ Moderately polluted
BSEC needs time to calibrate
Do not expect the IAQ value to be perfect immediately after first boot.
ESPHome exposes the BSEC2 calibration state as:
- Stabilizing
- Uncertain
- Calibrating
- Calibrated
ESPHome notes that the initial stabilizing period typically lasts around five minutes, after which the algorithm continues building its environmental history.
For useful air-quality monitoring, leave the device operating under normal room conditions rather than repeatedly power-cycling it during testing.
BSEC2 has an important licence condition
BSEC2 is Bosch proprietary software.
ESPHome requires users to accept the BSEC licence when enabling the component, and its documentation notes that the licence prohibits distribution of compiled firmware binaries containing BSEC2.
This generally isn’t a problem for someone compiling firmware for their own ESPHome node.
It becomes more important if firmware is being distributed publicly or included in a commercial product.
The gas heater can affect temperature readings
The BME680 and BME688 contain a heater for the gas sensor.
That heat, together with heat generated by the ESP32 and voltage regulator, can make the measured temperature higher than the true room temperature if the PCB is badly designed or enclosed without airflow.
ESPHome’s BSEC2 integration therefore provides a configurable temperature_offset, and also compensates the corresponding humidity reading when the offset is applied.
Good physical placement still matters more than software correction.
Keep the sensor:
- away from the ESP32 module
- away from regulators
- away from direct sunlight
- exposed to natural room airflow
- away from other warm components
BME280 can also read warm on ESP32 boards
The same placement rule applies to the BME280.
Even without a gas heater, mounting it immediately beside a warm ESP32 can cause the sensor to read the temperature of the electronics rather than the temperature of the room.
For an accurate Home Assistant climate sensor, put the BME sensor on:
- the edge of the PCB
- a small separate breakout
- a short cable
- a ventilated section of the enclosure
Sensor positioning can easily make a larger difference than the theoretical differences between these three devices.
BME280 vs BME680
Choose BME280 if the requirement is:
Temperature
Humidity
Pressure
Choose BME680 only if gas resistance / IAQ is also required and a BME680 is already available.
For a completely new design, Bosch’s own current product catalogue says BME680 is not recommended for new designs.
That makes the comparison quite straightforward in 2026.
BME680 vs BME688
For basic environmental measurements, they are very similar.
Both offer:
- temperature
- humidity
- pressure
- gas resistance
- I²C/SPI
The BME688 adds the more advanced gas-scanning architecture, VSC-related capability and BME AI-Studio ecosystem.
If prices are close:
buy the BME688.
The BME680 mainly makes sense for existing projects or exceptionally cheap modules.
BME280 vs BME688
This is the decision most new ESP32 projects really need to make.
Choose BME280 for:
- weather stations
- outdoor sensors
- barometric pressure
- simple Home Assistant climate nodes
- battery operation
- deep-sleep projects
- temperature/humidity monitoring
Choose BME688 for:
- indoor air quality
- VOC detection
- IAQ dashboards
- gas-response experiments
- odour classification
- BME AI-Studio projects
- more advanced environmental monitoring
The BME688 is more capable, but capability is not automatically useful.
If the gas measurements will never be used, the BME280 is simpler and more power-efficient.
Best sensor for Home Assistant
For a normal Home Assistant room climate sensor:
BME280
It provides the three values most homes actually need and has extremely mature ESPHome support.
For a Home Assistant air-quality node:
BME688
It can add:
- IAQ
- gas resistance
- bVOC equivalent
- COâ‚‚ equivalent
through BSEC2.
Remember that COâ‚‚-equivalent is an estimate and not an actual COâ‚‚ measurement.
Best sensor for a weather station
Winner: BME280
Weather stations primarily need:
- atmospheric pressure
- humidity
- temperature
A gas heater provides little useful benefit outdoors and adds complexity and power consumption.
BME280’s 0.1 µA sleep current and low measurement current make it particularly well suited to remote sensor nodes.
Best sensor for indoor air quality
Winner: BME688
Its main reason for existing is gas/air-quality measurement.
Bosch gives it support for VOCs, VSCs, application-specific gas scanning and AI-Studio-driven classification.
For a serious air-quality station, however, consider combining it with dedicated sensors.
For example:
BME688
→ VOC / IAQ
SCD41
→ real CO₂
PMS5003
→ PM2.5 / PM10
That combination measures three fundamentally different types of indoor air-quality information rather than trying to infer everything from one sensor.
Best sensor for battery power
Winner: BME280
BME688 can operate efficiently, but meaningful gas sensing requires powering its heater periodically.
For a project where battery life is the priority and temperature/humidity/pressure are sufficient, the BME280 is the simpler and more efficient choice.
Best sensor for experimenting
Winner: BME688
If the goal is learning rather than simply collecting temperature measurements, the BME688 provides considerably more to explore:
- raw gas resistance
- heater profiles
- BSEC2
- IAQ
- bVOC equivalents
- gas scanning
- BME AI-Studio
- trained gas classifications
It is a much more interesting sensor for advanced ESP32 experimentation.
One more 2026 consideration: BME690 exists
BME688 is no longer the very newest Bosch gas sensor.
Bosch’s current product catalogue also lists the BME690, describing it as a further development of the BME688 with improved robustness, particularly in environments exposed to high condensation.
That does not make the BME688 obsolete — it remains widely used and supported — but it is worth knowing when designing a new commercial product.
For the three sensors compared in this article, however, the buying decision remains simple.
Final recommendation
If the project only needs:
Temperature
Humidity
Pressure
buy the BME280.
It is cheaper, simpler and extremely low power.
If an existing design already contains a:
BME680
there is no reason to replace it purely for ordinary IAQ monitoring.
But for a new gas/air-quality project, choose:
BME688
rather than BME680, especially because Bosch itself now labels BME680 as not recommended for new designs.
The easiest way to remember the family is:
BME280 = weather and climate
BME680 = older air-quality version
BME688 = advanced air quality + gas scanning
And if the project needs real COâ‚‚, none of them is the right sensor — add an SCD30/SCD40/SCD41 instead. BSEC’s COâ‚‚ output is an estimated equivalent derived from VOC behaviour rather than a direct COâ‚‚ measurement.


