Skip to content
Reference
13 min read
October 17, 2026

BME280 vs BMP280: Differences, Accuracy and Which One to Buy

One sensor measures humidity, the other does not, and many modules sold as BME280 are secretly the other one. Datasheet-based differences, how to read the chip ID, wiring, Arduino and ESP32 code, and a clear buying verdict.

Put a BME280 and a BMP280 next to each other and they are hard to tell apart. Same breakout footprint, same four-wire I2C connection, the same two possible addresses, and nearly the same name. The difference is one measurement: the BME280 also senses relative humidity. That single extra sensor changes the price, the accuracy discussion, the chip ID your code sees, and, because the parts look alike, the odds that the module in your hand is the part on the listing.

This guide compares the two using Bosch's own datasheets. It covers what the humidity sensor really adds (including why one degree of self-heating can cost as much humidity accuracy as the datasheet allows in total), what the pressure and temperature sensors share, how to read the chip ID to find out which part you actually bought, the wiring and code for Arduino and ESP32, and which one to pick for a weather station, an altimeter or a battery logger. It also covers a sourcing fact that matters if you plan to build more than a hobby unit: Bosch no longer recommends the BMP280 for new designs.

The short answer: buy the BME280 if you want humidity, or if you are not sure you will want it later. Buy the BMP280 only if you want pressure and temperature alone and you are certain it is genuine, because pressure and temperature performance is identical between the two. Whichever you buy, read the chip ID register before you trust the label.

Image pending: A BME280 module and a BMP280 module side by side: the boards look almost identical, and only the chip ID and the humidity reading tell them apart

The Quick Answer

You needPickWhy
Temperature, humidity and pressureBME280The only one of the two that measures humidity
A weather station, room monitor or greenhouse loggerBME280Humidity is half the data
Pressure and altitude only (altimeter, drone vario, floor detection)BMP280 or a newer Bosch pressure sensorSame pressure accuracy and noise as the BME280, without humidity you do not need
A product you will manufactureBME280, or a current Bosch pressure sensorBosch does not recommend the BMP280 for new designs
A cheap module from an unknown sellerTest the chip ID firstMany modules listed as BME280 carry a BMP280

The One Real Difference

Both are Bosch Sensortec digital sensors with I2C and SPI interfaces, a 1.71 to 3.6 V supply and the same pressure range of 300 to 1100 hPa. Bosch made the BME280 register compatible with the BMP280 for pressure and temperature, which is why the two share so much. Here is how the datasheets compare:

SpecBME280BMP280
MeasuresPressure, temperature, humidityPressure, temperature
Chip ID (register 0xD0)0x600x58 (0x56 or 0x57 on early samples)
Package2.5 × 2.5 × 0.93 mm2.0 × 2.5 × 0.95 mm
Absolute pressure accuracy±1.0 hPa (0 to 65 °C)±1.0 hPa (0 to 65 °C)
Relative pressure accuracy±0.12 hPa (about ±1 m)±0.12 hPa (about ±1 m)
Temperature accuracy±0.5 °C at 25 °C, ±1.0 °C at 0 to 65 °CSame
Humidity0 to 100 %RH, ±3 %RH, 1 s responseNot available
Supply (VDD / VDDIO)1.71 to 3.6 V / 1.2 to 3.6 V1.71 to 3.6 V
Current at 1 Hz, pressure and temperature2.8 µA2.74 µA
Current at 1 Hz with humidity3.6 µANot applicable
Sleep current0.1 µA0.1 µA
I2C address0x76 or 0x770x76 or 0x77
InterfacesI2C up to 3.4 MHz, SPI up to 10 MHzSame
LifecycleListed as active by distributorsBosch: not recommended for new designs

Look at the rows: pressure, temperature and power are essentially the same. Everything that makes the BME280 a different part is in the humidity rows, the chip ID and the lifecycle line. Paying for a BME280 does not buy better pressure or temperature performance; it buys humidity.

Image pending: What each Bosch environmental sensor measures: BMP280 (pressure and temperature), BME280 (adds humidity), BME680 (adds gas) and the newer pressure-only parts

What the Humidity Sensor Adds, and What It Does Not

The BME280's humidity sensor covers 0 to 100 %RH with a 1 second response time and a resolution of 0.008 %RH. Bosch specifies the accuracy as ±3 %RH, but read the conditions: that figure applies from 20 to 80 %RH at 25 °C and includes ±1 %RH of hysteresis. Outside that window the error grows. Long-term stability is listed at 0.5 %RH per year, and the sensor is specified for non-condensing air, so rain, spray and dew are outside what it is designed for.

Two details catch hobby builds out:

It reports the chip's temperature, not the room's. Bosch notes that the internal temperature depends on the PCB temperature, self-heating and ambient temperature, and is typically above ambient. The humidity reading is compensated with that value, so a warm board hurts both readings.

Heat does not only raise the temperature; it lowers relative humidity. Relative humidity is a ratio against the saturation vapour pressure of air, which climbs quickly with temperature, so warmer air at the sensor reads drier than the room. A worked example using the Magnus approximation, for a room at 20 °C and 50 %RH:

Sensor is warmer than the room byHumidity it reports
0 °C50 %RH
+1 °Cabout 47 %RH
+2 °Cabout 44 %RH
+3 °Cabout 42 %RH
+5 °Cabout 37 %RH

One degree of self-heating costs about as much humidity accuracy as the datasheet's entire ±3 %RH tolerance. That is why a BME280 mounted next to an ESP32's radio, a voltage regulator or a battery charger reads warm and dry even though the sensor is working perfectly. Mount it away from heat sources, give it airflow, and do not read it more often than you need to. Bosch's own weather-monitoring preset takes one forced reading per minute.

Two more handling notes from the datasheet: the sensor is light-sensitive, so avoid strong light on the chip, and after exposure outside its limits (reflow soldering is the usual case) the humidity element may need reconditioning to restore its calibration.

Image pending: Humidity error from sensor self-heating: reported %RH against how many degrees the BME280 sits above room temperature, for a room at 20 °C and 50 %RH

What They Share: Pressure, Temperature and Altitude

Pressure and temperature performance is the same on both parts, which is the whole point of the register compatibility.

  • Absolute pressure accuracy is ±1.0 hPa from 0 to 65 °C (±1.7 hPa from −20 to 0 °C).
  • Relative accuracy is ±0.12 hPa between 700 and 900 hPa at 25 to 40 °C, which Bosch equates to about ±1 m of altitude.
  • Temperature accuracy is ±0.5 °C at 25 °C and ±1.0 °C from 0 to 65 °C.
  • Offset temperature coefficient is ±1.5 Pa/K, about ±12.6 cm of apparent altitude per degree.
  • Noise is 1.3 Pa at full bandwidth and 0.2 Pa (about 1.7 cm) with the filter enabled.
  • Long-term drift of pressure is up to ±1 hPa per year.

For altitude, the difference between absolute and relative matters. Using Bosch's own relation (0.12 hPa is about 1 m), an absolute error of ±1 hPa is roughly ±8 m of height near sea level, and weather systems shift sea-level pressure by several hPa on top of that. So neither sensor gives a trustworthy height above sea level out of the box. What both do very well is measure change: climbing a staircase, a drone's vertical speed, a floor change in a building. For usable absolute altitude, set the sea-level pressure in your code from a nearby weather report, or zero the reading at a known height.

Image pending: Pressure against altitude: a 1 hPa error is roughly 8 m near sea level, while the ±0.12 hPa relative accuracy corresponds to about 1 m

Check What You Actually Bought

The humidity sensor makes the BME280 the more desirable part, and cheap listings know it. Modules sold as BME280 that turn out to carry a BMP280 are well documented (Gough's Tech Zone wrote up the confusion in 2018, and long Arduino forum threads describe the same thing). The giveaway is always the same: humidity is missing, zero or stuck.

Physical checks help but cannot settle it:

  • Package shape. The BME280 is a 2.5 × 2.5 mm square, 0.93 mm high. The BMP280 is a 2.0 × 2.5 mm rectangle, 0.95 mm high. Under a magnifier the difference is visible.
  • Laser marking. Bosch's datasheets describe a short code on a second line whose first character identifies the product: U for the BME280 and K for the BMP280. Forum reports of chips marked "KS" match the BMP280 code. The etching is tiny, and relabelled parts can lie.
  • Board colour and silkscreen prove nothing. Boards are often designed to take either part, and the printed name is the seller's choice.

The test that settles it is the chip ID. Register 0xD0 holds a fixed value that Bosch documents for each part. This sketch reads it at both possible addresses and works for either sensor:

C++
Chip IDPart
0x60BME280 (pressure, temperature, humidity)
0x58BMP280, mass-production parts
0x56 or 0x57BMP280, early samples
0x61BME680
0x55BMP180
0xFF or 0x00No usable response: check wiring and address

Libraries enforce this. Adafruit's BME280 library refuses to start unless the ID is 0x60, and its example sketch tells you that an ID in the 0x56 to 0x58 range means you have a BMP280. When you see "Could not find a valid BME280 sensor" together with 0x58, the wiring is fine: you have the wrong part for that library. Switch to the BMP280 library and accept that you do not have humidity, or return the module.

Image pending: Serial Monitor output of the chip-ID sketch: 0x60 for a genuine BME280, 0x58 for a BMP280, with the matching library errors

Wiring: Identical for Both

Both parts use the same pins, so the wiring does not change if you swap one for the other.

Module pinConnects to
VCC / VIN3.3 V
GNDGND
SCL / SCKBoard SCL
SDA / SDIBoard SDA
SDOGND for address 0x76, 3.3 V for 0x77
CSBLeave as the module ties it (high for I2C)
BoardSDASCL
Arduino Uno / NanoA4A5
ESP32GPIO 21GPIO 22
ESP8266 (NodeMCU)D2 (GPIO 4)D1 (GPIO 5)
Raspberry PiGPIO 2 (pin 3)GPIO 3 (pin 5)

Address defaults differ between boards: Adafruit's module defaults to 0x77, and many generic boards default to 0x76. Scanning with the chip-ID sketch above avoids guessing. SDO must not float, because the datasheet leaves the address undefined in that case. CSB must be high for I2C: if it is pulled low at power-up the chip locks into SPI mode until power is cycled. The I2C vs SPI guide explains both buses.

⚠️ Warning

These are 3.3 V chips. The supply pins are rated 1.71 to 3.6 V with an absolute maximum of 4.25 V, so connecting a bare sensor to 5 V can destroy it. Some breakouts add a regulator and level shifting for 5 V boards and many cheap ones do not. Check the listing, and on a 5 V Arduino use a module that says it is 5 V tolerant or add a level shifter.

Image pending: Wiring diagram: BME280 or BMP280 module to an ESP32 over I2C, with the SDO pin tied to GND for address 0x76

The Code

Install Adafruit BME280 Library, Adafruit BMP280 Library and Adafruit Unified Sensor from the Library Manager. The BME280 sketch below uses Bosch's weather-monitoring preset (forced mode, ×1 oversampling, filter off), which is gentle on power and keeps self-heating down:

C++

For a BMP280 the flow is the same with a different library and no humidity. This version uses higher oversampling and filtering for low-noise altitude readings:

C++

Power and Settings

At Bosch's weather-monitoring settings (one forced reading per minute) the BME280 draws a typical 0.16 µA and the BMP280 0.14 µA. At one reading per second, the BME280 draws 3.6 µA with humidity and 2.8 µA without, against 2.74 µA for the BMP280. In practice the sensor is never the battery problem: an awake ESP32 draws tens to hundreds of milliamps, so the sensor's current barely registers. The ESP32 deep sleep guide covers where the battery life really goes.

For altitude or fast response, switch to normal mode with the IIR filter. Bosch's indoor-navigation preset (×16 pressure oversampling, filter 16) reaches 0.2 Pa of noise, about 1.7 cm, at roughly 25 Hz, at the cost of about 633 µA on the BME280 and 650 µA on the BMP280.


Troubleshooting

SymptomLikely causeFix
"Could not find a valid BME280 sensor", ID 0x58You have a BMP280Use the BMP280 library, or return the module
Sensor not found, ID 0xFF or no responseWrong address, loose wiring, SDO floating, or no pull-upsRun the chip-ID sketch, check SDO, and check SDA and SCL
Humidity stuck at 0 % or 100 %A BMP280 passed off as a BME280, or a wet or damaged sensorCheck the chip ID; if it reads 0x60, allow the sensor to dry out
Temperature 1 to 3 °C high, humidity lowSelf-heating from nearby partsMove the sensor away from regulators and radios, and read less often
Altitude jumps by metresNormal pressure changes from weatherTreat altitude as relative, enable the IIR filter, and re-zero when needed
Module is hot or dead on 5 VA 3.3 V-only modulePower it from 3.3 V, or use a 5 V-tolerant breakout
Readings freeze after changing to SPI wiringCSB was pulled low at power-upPower-cycle with CSB high for I2C

Choosing by Project

ProjectPickWhy
Weather station or room monitorBME280Pressure, temperature and humidity in one part
Home Assistant temperature, humidity and pressure over MQTTBME280The full set of readings
Altimeter, drone vario, floor detectionBMP280 or a newer Bosch pressure sensorRelative pressure accuracy is the same, and humidity is wasted here
Battery logger on deep sleepEitherSensor current is negligible next to the microcontroller
Outdoor stationBME280 in a ventilated, shaded housingThe sensor is non-condensing and reads warm in sun
Anything you will sell or manufactureBME280, or a current Bosch pressure sensorBosch does not recommend the BMP280 for new designs

Beyond the pair. Bosch's community team says the BMP280 is not recommended for new designs and points to its newer BMP581 and BMP585 pressure sensors, and a distributor notice from November 2021 lists the BMP280 as not recommended for new designs, suggesting the BMP390. If you want better humidity accuracy than ±3 %RH, a dedicated humidity sensor such as Sensirion's SHT3x or SHT4x families is the usual step up. If you want air quality, Bosch's BME680 and its successor add a gas sensor to the same measurements.

Image pending: Decision flowchart: do you need humidity, is the part genuine, is it a one-off or a product, and which sensor to buy

Verdict

Buy the BME280 if you want humidity, if you are building a weather station, room monitor or greenhouse logger, or if you simply do not know yet. Pressure and temperature are as good as the BMP280's, and you get humidity as a bonus. It is still listed as active by distributors.

Buy the BMP280 only for pressure and altitude work, when it is the cheapest option and you have checked that it is genuine. For anything beyond a hobby unit, choose a current Bosch pressure sensor instead, since Bosch does not recommend the BMP280 for new designs.

Either way, read register 0xD0 the day the module arrives, mount the sensor away from heat, and set the sea-level pressure if you want a believable altitude.


Quick Answers to Common Questions

What is the difference between BME280 and BMP280? The BME280 measures humidity as well as pressure and temperature. The BMP280 measures only pressure and temperature. Their pressure and temperature specifications are the same.

Does the BMP280 measure humidity? No. If your "BMP280" shows a humidity value, it is a BME280 under a different label.

How do I tell which one I have? Read register 0xD0: 0x60 is a BME280, 0x58 (or 0x56 and 0x57 on early samples) is a BMP280.

Do they use the same I2C address? Yes, both use 0x76 or 0x77, set by the SDO pin.

Can I use a BME280 library on a BMP280? No. The BME280 library checks for 0x60 and rejects the BMP280. The two share a register layout for pressure and temperature, which is why a BMP280 library can often work with a BME280 for those two readings, but you need a library that lets you pass the chip ID.

Are they 5 V safe? The chips are 3.3 V parts with a 4.25 V absolute maximum. Only breakouts with a regulator and level shifting are 5 V safe, so check the module.

Is the BMP280 discontinued? Bosch says it is not recommended for new designs, though modules are still widely sold.

Which is better for altitude? Neither has an advantage: pressure accuracy, noise and drift are the same. For new designs, look at Bosch's newer pressure sensors.


Where to Go Next

If you are building a station, the I2C vs SPI guide explains the bus you just wired, and the ESP32 pinout guide shows the default SDA and SCL pins and which pins to avoid. For battery builds, continue with the ESP32 deep sleep guide.


Sources and Further Reading

The humidity-versus-self-heating table is calculated with the Magnus approximation for a room at 20 °C and 50 %RH, and the altitude conversions use the datasheet's relation of 0.12 hPa to about 1 m. Real behaviour depends on the board, airflow and sampling rate.

Signal In

Built from what makers search for

The lookups piling up in SolderHub's search bar every day shape what we publish next — new component pages, board guides, and firmware notes, sent out as they go live.

By subscribing you agree to our Privacy Policy. Unsubscribe anytime.