I²C Pull-up Resistor Calculator
Estimate the maximum I²C pull-up resistor from bus capacitance, PCB trace geometry, and the selected rise-time mode.
Sizing the I²C pull-up
Rp(max) = t_r / (0.8473 × C_bus)
The maximum pull-up is set by the bus rise-time limit for the selected I²C speed and the total bus capacitance — trace, device pins, connectors, and any extra. When you don't know the trace capacitance, it is estimated from microstrip or stripline geometry.
This is the largest pull-up that still meets the rise-time limit. Your final resistor must also be small enough for noise margin and large enough that every device can sink the low-level current.
How it works
I²C uses open-drain lines: devices can only pull the bus low, and a pull-up resistor pulls it back high. That resistor and the bus capacitance form an RC circuit, so the rising edge is an exponential curve, not an instant step. The I²C standard caps how long that rise may take — 1000 ns for standard mode (100 kHz), 300 ns for fast mode (400 kHz) — which sets a maximum resistance: too large and the line rises too slowly and the receiver misreads bits. That's the value this calculator finds.
The two-sided trade-off
Pick the pull-up between two limits. The upper limit is rise time, above. The lower limit is drive strength: when a device pulls the line low it has to sink the current flowing through the pull-up, and the I²C spec limits that to 3 mA, so on a 3.3 V bus the resistor can't go below about 1.1 kΩ. A common practical choice is 4.7 kΩ for standard/fast mode, dropping to around 2.2 kΩ on longer or more heavily loaded buses where capacitance is higher.
Common mistakes
The frequent error is underestimating total bus capacitance — it's the sum of every device pin, the trace, connectors, and any cable, and it grows quickly as you add devices. If a bus is flaky at speed, it's usually too much capacitance meeting too large a pull-up; lower the resistor value or shorten the bus before blaming the devices.
Bus capacitance is the uncertain input
The arithmetic here is straightforward; the number you feed it is not. Bus capacitance is the sum of every device's pin capacitance, the trace capacitance, and any connector or cable — and it is usually estimated rather than measured. The I²C specification caps it at 400 pF, and a long run or a crowded bus can approach that without anyone noticing. If the bus is marginal, the honest move is to scope the rising edge and measure the real rise time rather than trust an assumed capacitance.