i2c address list
Every i2c address in one place — each board in our dataset by 7-bit address, the parts you'll meet constantly beyond it, and the reserved ranges nothing should occupy. If two devices claim the same address, the conflict guide has the fixes.
The basics
What is an i2c address?
Every chip on an i2c bus answers to its own 7-bit address. The controller opens each transaction by broadcasting an address on SDA; the one device that recognises it acknowledges and replies, while every other device ignores the rest of the exchange. That single mechanism is what lets one pair of wires — SDA and SCL — carry a temperature sensor, an OLED display, a real-time clock and a GPIO expander simultaneously.
Because the address is only 7 bits, the raw space runs 0x00–0x7F (128 slots). The spec carves reserved blocks off both ends, leaving 0x08–0x77 — 112 usable i2c addresses. In practice you'll see the same few dozen over and over, because chip vendors pick from a small pool — which is exactly why address collisions are the most common i2c roadblock.
The dataset
i2c address table: boards by address
| i2c address | Board | Category |
|---|---|---|
| 0x10 | TFmini Plus | Distance |
| 0x10 | VEML7700 | Light |
| 0x18 | LIS3DH selectable | Motion |
| 0x18 | MCP9808 selectable | Environmental |
| 0x19 | LIS3DH selectable | Motion |
| 0x19 | MCP9808 selectable | Environmental |
| 0x1A | MCP9808 selectable | Environmental |
| 0x1B | MCP9808 selectable | Environmental |
| 0x1C | MCP9808 selectable | Environmental |
| 0x1D | ADXL345 selectable | Motion |
| 0x1D | MCP9808 selectable | Environmental |
| 0x1E | HMC5883L | Motion |
| 0x1E | KX132 selectable | Motion |
| 0x1E | MCP9808 selectable | Environmental |
| 0x1F | KX132 selectable | Motion |
| 0x1F | MCP9808 selectable | Environmental |
| 0x20 | MCP23017 selectable | GPIO expander |
| 0x20 | PCF8574 selectable | GPIO expander |
| 0x20 | PCF8575 selectable | GPIO expander |
| 0x20 | XL9535 selectable | GPIO expander |
| 0x21 | MCP23017 selectable | GPIO expander |
| 0x21 | PCF8574 selectable | GPIO expander |
| 0x21 | PCF8575 selectable | GPIO expander |
| 0x21 | XL9535 selectable | GPIO expander |
| 0x22 | MCP23017 selectable | GPIO expander |
| 0x22 | PCF8574 selectable | GPIO expander |
| 0x22 | PCF8575 selectable | GPIO expander |
| 0x22 | XL9535 selectable | GPIO expander |
| 0x23 | BH1750 selectable | Light |
| 0x23 | MCP23017 selectable | GPIO expander |
| 0x23 | PCF8574 selectable | GPIO expander |
| 0x23 | PCF8575 selectable | GPIO expander |
| 0x23 | XL9535 selectable | GPIO expander |
| 0x24 | MCP23017 selectable | GPIO expander |
| 0x24 | PCF8574 selectable | GPIO expander |
| 0x24 | PCF8575 selectable | GPIO expander |
| 0x24 | XL9535 selectable | GPIO expander |
| 0x25 | MCP23017 selectable | GPIO expander |
| 0x25 | PCF8574 selectable | GPIO expander |
| 0x25 | PCF8575 selectable | GPIO expander |
| 0x25 | XL9535 selectable | GPIO expander |
| 0x26 | MCP23017 selectable | GPIO expander |
| 0x26 | PCF8574 selectable | GPIO expander |
| 0x26 | PCF8575 selectable | GPIO expander |
| 0x26 | XL9535 selectable | GPIO expander |
| 0x27 | MCP23017 selectable | GPIO expander |
| 0x27 | PCF8574 selectable | GPIO expander |
| 0x27 | PCF8575 selectable | GPIO expander |
| 0x27 | XL9535 selectable | GPIO expander |
| 0x29 | VL53L0X | Distance |
| 0x29 | VL53L1X | Distance |
| 0x33 | MLX90640 | Thermal imaging |
| 0x36 | MAX17048 | Power monitoring |
| 0x38 | AHT20 | Environmental |
| 0x39 | APDS-9960 | Gesture |
| 0x3C | 1.9inch Segment e-Paper selectable | Display |
| 0x3C | SH1106 OLED selectable | Display |
| 0x3C | SSD1306 OLED selectable | Display |
| 0x3D | 1.9inch Segment e-Paper selectable | Display |
| 0x3D | SH1106 OLED selectable | Display |
| 0x3D | SSD1306 OLED selectable | Display |
| 0x40 | INA219 selectable | Power monitoring |
| 0x40 | INA226 selectable | Power monitoring |
| 0x40 | INA260 selectable | Power monitoring |
| 0x40 | PCA9685 selectable | PWM / servo driver |
| 0x41 | INA219 selectable | Power monitoring |
| 0x41 | INA226 selectable | Power monitoring |
| 0x41 | INA260 selectable | Power monitoring |
| 0x41 | PCA9685 selectable | PWM / servo driver |
| 0x42 | INA219 selectable | Power monitoring |
| 0x42 | INA226 selectable | Power monitoring |
| 0x42 | INA260 selectable | Power monitoring |
| 0x42 | NEO-M8P-2 | Positioning |
| 0x42 | PCA9685 selectable | PWM / servo driver |
| 0x43 | INA219 selectable | Power monitoring |
| 0x43 | INA226 selectable | Power monitoring |
| 0x43 | INA260 selectable | Power monitoring |
| 0x43 | PCA9685 selectable | PWM / servo driver |
| 0x44 | INA219 selectable | Power monitoring |
| 0x44 | INA226 selectable | Power monitoring |
| 0x44 | INA260 selectable | Power monitoring |
| 0x44 | PCA9685 selectable | PWM / servo driver |
| 0x44 | SHT30 selectable | Environmental |
| 0x44 | SHT31 selectable | Environmental |
| 0x44 | SHT45 | Environmental |
| 0x45 | INA219 selectable | Power monitoring |
| 0x45 | INA226 selectable | Power monitoring |
| 0x45 | INA260 selectable | Power monitoring |
| 0x45 | PCA9685 selectable | PWM / servo driver |
| 0x45 | SHT30 selectable | Environmental |
| 0x45 | SHT31 selectable | Environmental |
| 0x46 | INA219 selectable | Power monitoring |
| 0x46 | INA226 selectable | Power monitoring |
| 0x46 | INA260 selectable | Power monitoring |
| 0x46 | PCA9685 selectable | PWM / servo driver |
| 0x47 | INA219 selectable | Power monitoring |
| 0x47 | INA226 selectable | Power monitoring |
| 0x47 | INA260 selectable | Power monitoring |
| 0x47 | PCA9685 selectable | PWM / servo driver |
| 0x48 | ADS1015 selectable | ADC |
| 0x48 | ADS1115 selectable | ADC |
| 0x48 | INA219 selectable | Power monitoring |
| 0x48 | INA226 selectable | Power monitoring |
| 0x48 | INA260 selectable | Power monitoring |
| 0x48 | PCA9685 selectable | PWM / servo driver |
| 0x48 | PCF8591 selectable | ADC |
| 0x49 | ADS1015 selectable | ADC |
| 0x49 | ADS1115 selectable | ADC |
| 0x49 | INA219 selectable | Power monitoring |
| 0x49 | INA226 selectable | Power monitoring |
| 0x49 | INA260 selectable | Power monitoring |
| 0x49 | PCA9685 selectable | PWM / servo driver |
| 0x49 | PCF8591 selectable | ADC |
| 0x4A | ADS1015 selectable | ADC |
| 0x4A | ADS1115 selectable | ADC |
| 0x4A | BNO080 selectable | Motion |
| 0x4A | INA219 selectable | Power monitoring |
| 0x4A | INA226 selectable | Power monitoring |
| 0x4A | INA260 selectable | Power monitoring |
| 0x4A | PCA9685 selectable | PWM / servo driver |
| 0x4A | PCF8591 selectable | ADC |
| 0x4B | ADS1015 selectable | ADC |
| 0x4B | ADS1115 selectable | ADC |
| 0x4B | BNO080 selectable | Motion |
| 0x4B | INA219 selectable | Power monitoring |
| 0x4B | INA226 selectable | Power monitoring |
| 0x4B | INA260 selectable | Power monitoring |
| 0x4B | PCA9685 selectable | PWM / servo driver |
| 0x4B | PCF8591 selectable | ADC |
| 0x4C | EMC2101 | Fan control |
| 0x4C | INA219 selectable | Power monitoring |
| 0x4C | INA226 selectable | Power monitoring |
| 0x4C | INA260 selectable | Power monitoring |
| 0x4C | PCA9685 selectable | PWM / servo driver |
| 0x4C | PCF8591 selectable | ADC |
| 0x4D | INA219 selectable | Power monitoring |
| 0x4D | INA226 selectable | Power monitoring |
| 0x4D | INA260 selectable | Power monitoring |
| 0x4D | PCA9685 selectable | PWM / servo driver |
| 0x4D | PCF8591 selectable | ADC |
| 0x4E | INA219 selectable | Power monitoring |
| 0x4E | INA226 selectable | Power monitoring |
| 0x4E | INA260 selectable | Power monitoring |
| 0x4E | PCA9685 selectable | PWM / servo driver |
| 0x4E | PCF8591 selectable | ADC |
| 0x4F | INA219 selectable | Power monitoring |
| 0x4F | INA226 selectable | Power monitoring |
| 0x4F | INA260 selectable | Power monitoring |
| 0x4F | PCA9685 selectable | PWM / servo driver |
| 0x4F | PCF8591 selectable | ADC |
| 0x52 | ENS160 selectable | Air quality |
| 0x53 | ADXL345 selectable | Motion |
| 0x53 | ENS160 selectable | Air quality |
| 0x58 | TPA2016D2 | Audio |
| 0x5A | DRV2605L | Haptics |
| 0x5A | MLX90614 | Environmental |
| 0x5C | BH1750 selectable | Light |
| 0x60 | Si5351A | Clock generator |
| 0x62 | SCD40 | Air quality |
| 0x62 | SCD41 | Air quality |
| 0x68 | AMG8833 selectable | Thermal imaging |
| 0x68 | DS3231 | Real-time clock |
| 0x68 | MPU-6050 selectable | Motion |
| 0x69 | AMG8833 selectable | Thermal imaging |
| 0x69 | MPU-6050 selectable | Motion |
| 0x6D | XGZP | Pressure |
| 0x70 | SEN0322 selectable | Air quality |
| 0x70 | TCA9546A selectable | Bus multiplexer |
| 0x71 | SEN0322 selectable | Air quality |
| 0x71 | TCA9546A selectable | Bus multiplexer |
| 0x72 | SEN0322 selectable | Air quality |
| 0x72 | TCA9546A selectable | Bus multiplexer |
| 0x73 | SEN0322 selectable | Air quality |
| 0x73 | TCA9546A selectable | Bus multiplexer |
| 0x74 | TCA9546A selectable | Bus multiplexer |
| 0x75 | TCA9546A selectable | Bus multiplexer |
| 0x76 | BME280 selectable | Environmental |
| 0x76 | BME680 selectable | Air quality |
| 0x76 | BMP280 selectable | Environmental |
| 0x76 | TCA9546A selectable | Bus multiplexer |
| 0x77 | BME280 selectable | Environmental |
| 0x77 | BME680 selectable | Air quality |
| 0x77 | BMP280 selectable | Environmental |
| 0x77 | TCA9546A selectable | Bus multiplexer |
"Selectable" means the chip has address pins or solder jumpers, so you can move it and run several of the same part on one bus. Parts without it have one fixed address — two of them need a multiplexer or a second bus.
Beyond the dataset
Other i2c addresses you'll run into
| i2c address | Part(s) | What it is |
|---|---|---|
| 0x27 | PCF8574 LCD backpack | the classic character-LCD i2c backpack address |
| 0x3F | PCF8574A LCD backpack | same backpack, PCF8574A variant — the other address LCD buyers hit |
| 0x29 | TSL2561 | light sensor — shares 0x29 with the ToF rangers above |
| 0x40 | HTU21D / PCA9685 | humidity sensor / 16-channel PWM servo driver |
| 0x50–0x57 | AT24Cxx | EEPROM (incl. the one on DS3231 modules) |
| 0x5A | MPR121 | capacitive touch controller — shares 0x5A with the MLX90614 above |
| 0x60 | MCP4725 / SI1145 | DAC / UV-light sensor |
| 0x68 | DS1307 | the classic RTC — shares 0x68 with the DS3231 and MPU-6050 above |
| 0x70–0x77 | TCA9548A | 8-channel i2c multiplexer (the conflict fixer) |
The 0x27-vs-0x3F pair catches out nearly every i2c LCD buyer: the backpack's chip decides which you get. A PCF8574 sits at 0x27, the PCF8574A variant at 0x3F — same board, same code, different address.
Off limits
Reserved i2c addresses
The i2c specification (NXP UM10204) reserves both ends of the range for special functions. No ordinary peripheral should live here — which is why a bus scanner only sweeps 0x08–0x77:
| Address | Reserved for |
|---|---|
| 0x00 | General call address / START byte |
| 0x01 | CBUS address (legacy) |
| 0x02 | Reserved for a different bus format |
| 0x03 | Reserved for future purposes |
| 0x04–0x07 | High-speed mode controller code |
| 0x78–0x7B | 10-bit slave addressing |
| 0x7C–0x7F | Reserved for future purposes |
The classic trap
7-bit vs 8-bit: why 0x76 shows up as 0xEC
This single confusion accounts for a huge share of "my i2c address is wrong" posts. An i2c transaction actually puts eight bits on the wire: the 7-bit address, then one read/write bit. Some datasheets document the address as that whole byte — the 8-bit form — while libraries and scanners use the 7-bit form.
The conversion is a single shift. A BME280 at 7-bit 0x76 appears as 0xEC when writing (0x76 << 1) and 0xED when reading (the same byte with the read bit set). All three numbers describe the same chip.
The rule of thumb: if a documented address is roughly double what your scanner reports, you're looking at the 8-bit form — shift it right one bit and move on. Every address on this page is the 7-bit form, matching what i2cdetect and the Arduino Wire library expect.
Find yours
How to find an i2c device's address
Don't guess — scan. The bus tells you exactly who's home in about a second:
# Raspberry Pi / any Linux box
sudo apt install i2c-tools
i2cdetect -y 1 On Arduino, ESP32 or a Pico, run a scanner sketch instead — the bus scanning guide has ready-to-paste code for Arduino, MicroPython and the Pi, plus how to read the output. Our free i2c tool goes a step further: it scans, then reads each chip's WHO_AM_I register to name the actual silicon — telling a BME280 from a BMP280, or a genuine HMC5883L from the QMC5883L clone.
An empty scan is a wiring problem, not an addressing one: work the 7-step troubleshooting checklist, and check that pull-up resistors are present.
Questions
i2c address FAQ
What is an i2c address?
An i2c address is a 7-bit number (0x08–0x77) that identifies each chip on the bus. The controller starts every transaction by sending an address; only the chip that recognises it responds, and the rest stay silent. That's how one pair of wires can run a dozen devices at once.
How do I find a device's i2c address?
Run a bus scan. On a Raspberry Pi or any Linux box: i2cdetect -y 1. On Arduino: run the classic i2c Scanner sketch, which tries every address and reports which ones acknowledge. Whatever it prints is the 7-bit address used on this page and by your library.
Why does the datasheet say 0xEC but my scanner says 0x76?
Some datasheets quote the 8-bit form, which is the 7-bit address shifted left one place with the read/write bit appended: 0x76 << 1 = 0xEC. Software libraries almost always want the 7-bit form. If a documented address looks like double what you expected, that's exactly why.
How many devices can share one i2c bus?
The 7-bit space allows 112 usable addresses (0x08–0x77 after the reserved ranges), but bus capacitance limits you long before that — a dozen breakouts is already a lot. Stronger pull-up resistors help; past that, an i2c multiplexer splits the load across channels.
What happens if two i2c devices have the same address?
They both answer at once and the replies collide, so you get garbage or nothing. Fix it by changing one device's address (jumper or address pin), putting one behind a TCA9548A multiplexer, or moving it to a second i2c bus.
Can I change a sensor's i2c address?
Often, yes. Most multi-address chips have address pins or solder jumpers that set the low bits — that's what the 'selectable' tag means in the table above. A minority (the VL53L0X, for example) can be reassigned in software at startup. Some parts have one fixed address and can't be changed at all.
What are the reserved i2c addresses?
The spec reserves 0x00–0x07 and 0x78–0x7F for special functions like the general call address, the high-speed mode controller code and 10-bit addressing. No ordinary device should sit there, which is why a bus scan only sweeps 0x08–0x77.