BME280 vs BME680
The BME680 adds a heated metal-oxide gas sensor for VOCs to the climate channels of the BME280, and that heater is the cost: 9 to 13 mA while it runs against 3.6 µA for the BME280 sampling all three channels at 1 Hz (Bosch BME680 datasheet rev 1.9, p. 8; Bosch BME280 datasheet rev 1.24, p. 2). Humidity (±3 %RH) and temperature (±0.5 °C at 25 °C) are specified the same on both, and the BME680 reads absolute pressure to ±0.6 hPa against ±1.0 hPa (BME680 datasheet, pp. 10 to 12; BME280 datasheet, p. 11). Pick the BME280 for weather logging on a battery, the BME680 when you want an indoor air-quality trend.
Side by side
| BME280 | BME680 | |
|---|---|---|
| MeasuresBosch BME280 datasheet rev 1.24, p. 2; Bosch BME680 datasheet rev 1.9, p. 3 | Pressure, temperature, humidity | Pressure, temperature, humidity, gas (VOC) resistance |
| PressureBosch BME280 datasheet rev 1.24, p. 11; Bosch BME680 datasheet rev 1.9, p. 11 | 300 to 1100 hPa, ±1.0 hPa absolute | 300 to 1100 hPa, ±0.6 hPa absolute |
| HumidityBosch BME280 datasheet rev 1.24, pp. 2, 9; Bosch BME680 datasheet rev 1.9, p. 10 | 0 to 100 %RH, ±3 %RH (20 to 80 %RH, 25 °C) | 0 to 100 %RH, ±3 %RH (20 to 80 %RH, 25 °C) |
| TemperatureBosch BME280 datasheet rev 1.24, p. 12; Bosch BME680 datasheet rev 1.9, p. 12 | -40 to +85 °C, ±0.5 °C at 25 °C | -40 to +85 °C, ±0.5 °C at 25 °C, ±1.0 °C over 0 to 65 °C |
| Gas sensingBosch BME680 datasheet rev 1.9, pp. 9, 21 | None | MOX hot plate heated to 200 to 400 °C; IAQ index 0 to 500 through Bosch's BSEC library |
| CurrentBosch BME280 datasheet rev 1.24, p. 2; Bosch BME680 datasheet rev 1.9, pp. 3, 8 | 3.6 µA at 1 Hz (all three channels), 0.1 µA sleep | 3.7 µA at 1 Hz without gas, 9 to 13 mA with the heater at 320 °C, 0.15 µA sleep |
| Chip supplyBosch BME280 datasheet rev 1.24, p. 2; Bosch BME680 datasheet rev 1.9, p. 3 | VDD 1.71 V to 3.6 V, VDDIO 1.2 V to 3.6 V | VDD 1.71 V to 3.6 V, VDDIO 1.2 V to 3.6 V |
| I2C addressBosch BME280 datasheet rev 1.24, p. 32; Bosch BME680 datasheet rev 1.9, p. 38 | 0x76 (SDO low) or 0x77 (SDO high) | 0x76 (SDO low) or 0x77 (SDO high) |
| Chip ID (register 0xD0)Bosch BME280 datasheet rev 1.24, p. 27; Bosch BME680 datasheet rev 1.9, p. 28 | 0x60 | 0x61 |
| PackageBosch BME280 datasheet rev 1.24, p. 2; Bosch BME680 datasheet rev 1.9, p. 3 | 2.5 × 2.5 mm | 3.0 × 3.0 mm |
Which one to pick
- Battery weather nodes: 3.6 µA at 1 Hz for pressure, humidity and temperature (Bosch BME280 datasheet, p. 2), with no heater to feed.
- Climate logging where readings are needed at once, with no gas warm-up or burn-in.
- Simple code: one Adafruit_BME280 call per value, no air-quality library.
- Indoor air-quality monitors that track cooking, paint or solvent fumes through the gas resistance and Bosch's IAQ index (BME680 datasheet, p. 9).
- Mains or USB powered projects where 9 to 13 mA for the heater (p. 8) does not matter.
- Slightly tighter absolute pressure, ±0.6 hPa against ±1.0 hPa (BME680 datasheet, p. 11; BME280 datasheet, p. 11).
Swapping one for the other
What changes in the wiring and the code.
- Change the library: Adafruit_BME680 or Bosch's BSEC replace Adafruit_BME280. BME280 code does not drive the BME680's heater, and the chip IDs differ, 0x60 against 0x61 (BME280 datasheet, p. 27; BME680 datasheet, p. 28).
- Check the address: both chips use 0x76 with SDO low and 0x77 with SDO high, but the GY-BME280 module defaults to 0x76 and Adafruit's BME680 breakout to 0x77 (BME280 p. 32; BME680 p. 38).
- The I2C wiring stays four wires; on Adafruit's BME680 board SCK goes to SCL and SDI to SDA, and VIN takes 3 V to 5 V through its regulator (Adafruit BME680 guide, Pinouts).
- Budget the power: the BME680's heater draws 9 to 13 mA while it runs (BME680 datasheet, p. 8), so a coin-cell node built for a BME280 will not last.
- Allow warm-up for gas readings: Adafruit recommends a 48-hour burn-in on a new sensor and about 30 minutes per session before trusting gas trends.
BME280 or BME680: questions
Does the BME680 measure CO2?
No. Its gas channel returns a resistance in ohms that shifts with volatile organic compounds. Bosch's BSEC library turns it into an IAQ index from 0 to 500 (Bosch BME680 datasheet rev 1.9, p. 9); no channel measures CO2 directly. The BME280 has no gas channel at all.
Is the BME680 a drop-in replacement for the BME280?
For the wiring, yes: same supply range, same I2C addresses (BME280 datasheet, pp. 2, 32; BME680 datasheet, pp. 3, 38). For the code, no: it needs its own library, since the chip ID and the gas heater control differ.
Which is more accurate for temperature and humidity?
They are specified the same: ±3 %RH from 20 to 80 %RH and ±0.5 °C at 25 °C (BME280 datasheet, pp. 2, 12; BME680 datasheet, pp. 10, 12). Both read slightly warm from self-heating, and the BME680's gas heater adds to it, so sample slowly for room temperature.
Why do BME680 gas readings keep drifting?
The metal-oxide element runs hot, typically 200 to 400 °C (BME680 datasheet, p. 21), and its resistance settles slowly. Adafruit recommends a 48-hour burn-in and about 30 minutes per session; BSEC tracks the baseline for you.
Can I use either with an ESP32 or a 5 V Arduino?
Yes on the usual breakouts. Both chips run at 1.71 V to 3.6 V (BME280 datasheet, p. 2; BME680 datasheet, p. 3), and the Adafruit BME680 and the GY-BME280-5V boards add a regulator so VIN or VCC takes 5 V as well as 3.3 V; the 3.3 V GY-BME280 version has none and must stay on 3.3 V.
The two references
Checked on 2026-10-29 against 3 sources, the makers’ datasheets first.
This comparison as plain Markdown. /compare/bme280-vs-bme680.md

