I2C Pull-up Resistor Calculator

Calculate the minimum and maximum I2C pull-up resistor values for SDA and SCL lines. Accounts for VCC, bus speed (100 kHz / 400 kHz / 1 MHz), and total bus capacitance.

Bus Parameters

Supply Voltage (VCC)
I2C Speed Mode
Total Bus Capacitance100 pF
10 pF400 pF max

Typical values:

PCB trace ~1 pF/cm  ·  Device pin 5–15 pF

Cable (twisted pair) ~50 pF/m

Result

Recommended (nearest E24)

2.20 kΩ

3.00 mA static draw (both lines)

Valid resistor range2.20 kΩ
100 Ω1 kΩ10 kΩ100 kΩ

R_min

967 Ω

V_OL spec

R_max

3.54 kΩ

t_rise spec

Max t_rise (Fast · 400 kHz)300 ns
I2C bus cap limit400 pF

Bus topology

3.3VVCC2.20 kΩSDA2.20 kΩSCLSDASCLCb100 pFMCUopen-drainSensor0x48Device 2optionalt_rise

Quick reference — 3.3 V supply

SpeedCap (pF)R_minR_maxRecommended
Standard50967 Ω23.6 kΩ12.0 kΩ
Standard100967 Ω11.8 kΩ6.20 kΩ
Standard200967 Ω5.90 kΩ3.30 kΩ
Fast50967 Ω7.08 kΩ3.90 kΩ
Fast100967 Ω3.54 kΩ2.20 kΩ
Fast200967 Ω1.77 kΩ1.30 kΩ
Fast+50145 Ω2.83 kΩ1.50 kΩ
Fast+100145 Ω1.42 kΩ750 Ω
Fast+200145 Ω708 Ω430 Ω

How it works

I2C is an open-drain bus — devices only pull the lines low. External pull-up resistors pull SDA and SCL back to VCC when released. The resistor value is constrained from two sides:

  • Too low (too strong): The pull-up sources more current than the I2C output driver can sink while holding the line low. This violates the V_OL_max = 0.4 V spec.
  • Too high (too weak): The RC rise time (pull-up resistor × bus capacitance) exceeds the I2C spec’s maximum rise time for the speed mode.

Minimum pull-up (from V_OL spec)

R_min = (VCC - V_OL_max) / I_OL_max

For Standard and Fast mode: I_OL_max = 3 mA, V_OL_max = 0.4 V

At 3.3 V: R_min = (3.3 - 0.4) / 0.003 = 967 Ω → use 1 kΩ as minimum

At 5.0 V: R_min = (5.0 - 0.4) / 0.003 = 1533 Ω → use 1.5 kΩ as minimum

Fast+ mode (1 MHz) allows up to 20 mA sink current, so R_min drops to ~145 Ω at 3.3 V.

Maximum pull-up (from rise time spec)

t_rise = 0.8473 × R_p × C_b
R_max = t_rise_max / (0.8473 × C_b)
Speedt_rise_maxAt 100 pF
Standard (100 kHz)1000 ns11.8 kΩ
Fast (400 kHz)300 ns3.5 kΩ
Fast+ (1 MHz)120 ns1.4 kΩ

Bus capacitance

Every trace, pin, and connector adds capacitance. The I2C spec limits total bus capacitance to 400 pF. Typical values:

  • Short PCB trace (5 cm): ~5 pF
  • Each device’s SDA/SCL pin: 5–15 pF
  • 100 mm ribbon cable: ~10 pF
  • Long twisted pair (1 m): ~50 pF

A board with 4 sensors and 10 cm of trace per line: roughly 4 × 10 pF + 10 pF trace = 50 pF. Use the slider to dial in your estimate.

Common mistakes

Using 4.7 kΩ everywhere. 4.7 kΩ works fine for 100 kHz Standard mode with low capacitance, but fails at 400 kHz Fast mode with typical bus capacitance (>70 pF gives a rise time > 280 ns, right at the limit). Measure your bus speed on a scope before trusting textbook values.

Ignoring integrated pull-ups. Many MCUs (STM32, nRF52, ESP32) have configurable internal pull-up resistors on I2C pins. They are typically 40–50 kΩ — far too weak for Fast or Fast+ mode. Disable them and use external resistors.

Multiple pull-ups in parallel. If you have a baseboard with 4.7 kΩ pull-ups and plug in a module with its own 10 kΩ pull-ups, you get 3.2 kΩ effective. At Fast mode with 200 pF bus capacitance, this may push rise time to ~340 ns — over spec. Check what your modules bring to the bus.

Level shifting without considering the pull-up side. When bridging 3.3 V and 5 V I2C buses with a bidirectional MOSFET level shifter, each side needs its own pull-up to the correct VCC. The pull-up value must be calculated for each side independently.