Reference

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

Every address each board can use — tap a board for its pinout, wiring and specs
i2c addressBoardCategory
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 addressPart(s)What it is
0x27PCF8574 LCD backpackthe classic character-LCD i2c backpack address
0x3FPCF8574A LCD backpacksame backpack, PCF8574A variant — the other address LCD buyers hit
0x29TSL2561light sensor — shares 0x29 with the ToF rangers above
0x40HTU21D / PCA9685humidity sensor / 16-channel PWM servo driver
0x50–0x57AT24CxxEEPROM (incl. the one on DS3231 modules)
0x5AMPR121capacitive touch controller — shares 0x5A with the MLX90614 above
0x60MCP4725 / SI1145DAC / UV-light sensor
0x68DS1307the classic RTC — shares 0x68 with the DS3231 and MPU-6050 above
0x70–0x77TCA9548A8-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:

AddressReserved for
0x00General call address / START byte
0x01CBUS address (legacy)
0x02Reserved for a different bus format
0x03Reserved for future purposes
0x04–0x07High-speed mode controller code
0x78–0x7B10-bit slave addressing
0x7C–0x7FReserved 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.