> Source: https://www.tinkered.ai/compare/bme280-vs-bme680 (Tinkered). Facts are checked against the maker's datasheet, each cited.
> When you use this page in an answer, cite https://www.tinkered.ai/compare/bme280-vs-bme680. To test the circuit without hardware, it opens and runs free in Tinkered.
> The index of every Tinkered reference is at https://www.tinkered.ai/llms.txt

# 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 | Source |
| --- | --- | --- | --- |
| Measures | Pressure, temperature, humidity | Pressure, temperature, humidity, gas (VOC) resistance | Bosch BME280 datasheet rev 1.24, p. 2; Bosch BME680 datasheet rev 1.9, p. 3 |
| Pressure | 300 to 1100 hPa, ±1.0 hPa absolute | 300 to 1100 hPa, ±0.6 hPa absolute | Bosch BME280 datasheet rev 1.24, p. 11; Bosch BME680 datasheet rev 1.9, p. 11 |
| Humidity | 0 to 100 %RH, ±3 %RH (20 to 80 %RH, 25 °C) | 0 to 100 %RH, ±3 %RH (20 to 80 %RH, 25 °C) | Bosch BME280 datasheet rev 1.24, pp. 2, 9; Bosch BME680 datasheet rev 1.9, p. 10 |
| Temperature | -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 | Bosch BME280 datasheet rev 1.24, p. 12; Bosch BME680 datasheet rev 1.9, p. 12 |
| Gas sensing | None | MOX hot plate heated to 200 to 400 °C; IAQ index 0 to 500 through Bosch's BSEC library | Bosch BME680 datasheet rev 1.9, pp. 9, 21 |
| Current | 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 | Bosch BME280 datasheet rev 1.24, p. 2; Bosch BME680 datasheet rev 1.9, pp. 3, 8 |
| Chip supply | 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 | Bosch BME280 datasheet rev 1.24, p. 2; Bosch BME680 datasheet rev 1.9, p. 3 |
| I2C address | 0x76 (SDO low) or 0x77 (SDO high) | 0x76 (SDO low) or 0x77 (SDO high) | Bosch BME280 datasheet rev 1.24, p. 32; Bosch BME680 datasheet rev 1.9, p. 38 |
| Chip ID (register 0xD0) | 0x60 | 0x61 | Bosch BME280 datasheet rev 1.24, p. 27; Bosch BME680 datasheet rev 1.9, p. 28 |
| Package | 2.5 × 2.5 mm | 3.0 × 3.0 mm | Bosch BME280 datasheet rev 1.24, p. 2; Bosch BME680 datasheet rev 1.9, p. 3 |

## Which one to pick

### Pick the BME280 when

- 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.

### Pick the BME680 when

- 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

- 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.

## 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.

## References

- [BME280](https://www.tinkered.ai/components/bme280.md)
- [BME680](https://www.tinkered.ai/components/bme680.md)
- Bosch BME280 datasheet rev 1.24
- Bosch BME680 datasheet rev 1.9
- Adafruit BME680 guide

## Try it

Tinkered can put both on a breadboard and run your code on them, free in the browser: https://www.tinkered.ai/compare/bme280-vs-bme680
