I2C Pull-Up Resistor Calculator
Calculate the minimum and maximum I2C pull-up resistor for SDA and SCL from the supply voltage, bus speed mode and bus capacitance (NXP UM10204), plus a suggested standard value and its rise time.
How it works
R_p(min) = (V_DD − V_OL(max)) ÷ I_OL · R_p(max) = t_r ÷ (0.8473 × C_b) · V_OL = 0.4 V (0.2 × V_DD below 2 V) · I_OL = 3 mA (Standard / Fast), 20 mA (Fast-mode Plus) · t_r = 1000 ns / 300 ns / 120 ns
I²C lines are open-drain, so a pull-up resistor pulls SDA and SCL high and the devices pull them low. Too small a resistor makes the low level exceed 0.4 V because the driver can only sink 3 mA (20 mA in Fast-mode Plus); too large a resistor and the RC charge of the bus capacitance is too slow to meet the rise-time limit (the 0.8473 factor is ln(0.7/0.3), the 30%–70% rise). These limits come from the NXP I²C-bus specification UM10204. Any value between them works; lower values are faster but draw more current.
Worked example
A 3.3 V Fast-mode (400 kHz) bus with 200 pF: R_min = (3.3 − 0.4) ÷ 3 mA = 966.7 Ω and R_max = 300 ns ÷ (0.8473 × 200 pF) = 1.77 kΩ, so the pull-up range is 967 Ω – 1.77 kΩ. The suggested E12 value is 1.2 kΩ, giving a rise time of 203.4 ns and a low-level current of 2.75 mA.
Sources: NXP UM10204 — I²C-bus specification and user manual (section 7.1) · Texas Instruments SLVA689 — I2C Bus Pullup Resistor Calculation
Frequently asked questions
What pull-up resistor should I use for I2C?
It depends on voltage, speed and bus capacitance. 4.7 kΩ is a common default for 100 kHz on short buses; at 400 kHz with 100–200 pF you usually need 1–2.2 kΩ. Use the range here rather than a fixed rule.
Why does bus capacitance matter?
The pull-up charges the bus capacitance through an RC curve. Rise time is 0.8473 × R × C, so doubling the capacitance halves the largest resistor that still meets the rise-time limit.
Do I need pull-ups on both SDA and SCL?
Yes, one on each line, normally a single pair for the whole bus. Many breakout boards already include 4.7 kΩ or 10 kΩ pull-ups; several boards in parallel lower the effective resistance.
What if no resistor value fits?
The bus capacitance is too high for the chosen speed. Shorten wiring, remove devices, drop to a slower mode, use Fast-mode Plus drivers, or add a bus buffer or active pull-up such as an LTC4311 or P82B96.
Related calculators
This calculator is for educational purposes. Double-check important results before acting on them.