I2C Pull-Up & Rise Time Calculator
Use this I2C Pull-Up & Rise Time Calculator to estimate the valid pull-up resistor range from bus capacitance, supply voltage, low-level sink capability and I2C speed mode. Check the actual RC rise time, pull-up current and whether your selected resistor meets the chosen timing limit.
Selected Pull-Up Position
-
What Is an I2C Pull-Up & Rise Time Calculator?
An I2C Pull-Up & Rise Time Calculator helps choose pull-up resistor values for the open-drain SDA and SCL lines used by an I2C bus. Unlike a push-pull output, an I2C device normally drives the line LOW but relies on a resistor to return the signal HIGH.
The resistor must therefore satisfy two opposing requirements. A resistor that is too large produces a slow RC rise time, while a resistor that is too small forces devices to sink excessive current whenever the bus is LOW.
This calculator estimates both limits and checks a selected resistor against the resulting electrical window.
I2C Pull-Up Resistor Maximum Formula
For an RC-charged I2C line, the commonly used 30%-to-70% rise-time approximation is:
Solving for the maximum resistor:
A larger resistor produces a longer rise time for the same bus capacitance.
I2C Pull-Up Resistor Minimum Formula
The pull-up cannot be arbitrarily small because a device pulling the line LOW must sink the resistor current.
For a 3.3 V system using VOL = 0.4 V and 3 mA sink current:
I2C Rise Time Formula
Once a pull-up resistor is selected, its approximate rise time can be estimated directly:
For a 2.2 kΩ resistor and 100 pF bus:
Example: 3.3 V, 100 pF, Fast-Mode I2C
Assume:
Minimum pull-up:
Maximum pull-up:
A 2.2 kΩ resistor lies inside that electrical range.
Why I2C Needs Pull-Up Resistors
I2C SDA and SCL are normally open-drain or open-collector signals. Devices can actively pull the line LOW, but they do not actively drive it HIGH in ordinary I2C operation.
The external pull-up resistor restores the HIGH level when every connected device releases the line. This architecture allows multiple devices to share the same wires without push-pull output contention.
Bus Capacitance and I2C Rise Time
The pull-up resistor charges the distributed capacitance of the I2C bus. Higher capacitance means the voltage rises more slowly for a given resistor.
Device Inputs
Every connected I2C device contributes some input and package capacitance.
PCB Traces
Longer or wider routing can contribute additional distributed capacitance.
Cables
Off-board cabling can add substantial capacitance compared with short PCB traces.
Level Shifters
Bidirectional translators and protection components can alter the effective bus loading.
Typical I2C Rise-Time Limits
The maximum permitted rise time depends on the selected I2C operating mode. This calculator includes commonly used planning presets.
| I2C Mode | Nominal Bus Speed | Rise-Time Preset |
|---|---|---|
| Standard-mode | Up to 100 kbit/s | 1000 ns |
| Fast-mode | Up to 400 kbit/s | 300 ns |
| Fast-mode Plus | Up to 1 Mbit/s | 120 ns |
Use the custom mode when your device or bus specification requires a different rise-time limit.
Why 4.7 kΩ Is Common on I2C
A 4.7 kΩ pull-up is common because it often works well for moderate-voltage, low-to-medium-capacitance Standard-mode buses. It is not, however, a universal I2C resistor value.
At higher capacitance or faster bus speeds, 4.7 kΩ can be too weak and produce an excessively slow rising edge. On a lightly loaded low-speed bus, a smaller resistor may simply waste current without offering meaningful benefit.
I2C Pull-Up Current
When a device pulls the line LOW, current flows from the supply through the pull-up resistor into that device.
At a nonzero LOW voltage:
For 3.3 V, VOL = 0.4 V and Rp = 2.2 kΩ:
Why Smaller I2C Pull-Ups Rise Faster
The RC time constant is:
Reducing Rp lowers the RC time constant, so the bus voltage climbs toward VDD more rapidly after a device releases the line.
The tradeoff is increased LOW-state current. This is why I2C design requires both a lower and upper resistance limit rather than simply choosing the smallest resistor available.
I2C Pull-Up Resistor Range
A practical resistor should satisfy:
If the calculated minimum exceeds the maximum, the assumed combination of bus capacitance, required rise time and allowed sink current has no valid resistor solution under the simplified model.
In that situation you may need to reduce capacitance, use devices with higher permitted sink current, lower the bus speed or redesign the interconnect.
Separate Pull-Ups for SDA and SCL
Most I2C buses use one pull-up resistor on SDA and another on SCL. They are often the same value, but they do not have to be identical if the effective capacitance or timing requirements differ.
For critical designs, measure or estimate the capacitance of each line separately and validate both.
I2C Level Shifters and Pull-Ups
Bidirectional I2C level translators often require pull-up resistors on both voltage domains. The effective rise behavior then depends on the translator architecture and the capacitance present on each side.
Do not automatically treat both sides as one simple RC network unless the level-shifter datasheet supports that model.
Common I2C Pull-Up Mistakes
Always Choosing 4.7 kΩ
One resistor value cannot suit every bus capacitance, voltage and speed.
Ignoring Bus Capacitance
Capacitance directly controls RC rise time.
Using Very Small Pull-Ups
Strong pull-ups can exceed device sink-current capability.
Ignoring VOL
The minimum resistor should consider the device’s LOW-level voltage at the allowed sink current.
Using Frequency Alone
I2C specifications constrain rise time, not simply a resistor value for each clock frequency.
Ignoring Level Shifters
Translators can significantly change bus capacitance and rising-edge behavior.
I2C Pull-Up & Rise Time Calculator FAQs
How do I calculate an I2C pull-up resistor?
What is the I2C rise-time formula?
What is the maximum I2C pull-up resistor formula?
What is the minimum I2C pull-up resistor formula?
Why does I2C require pull-up resistors?
Is 4.7 kΩ always correct for I2C?
What happens if the I2C pull-up resistor is too large?
What happens if the I2C pull-up resistor is too small?
How does bus capacitance affect I2C?
What is the rise-time limit for 100 kHz I2C?
What is the rise-time limit for 400 kHz I2C?
What is the rise-time limit for 1 MHz I2C?
How do I estimate I2C pull-up current?
What is the RC time constant of an I2C line?
Can SDA and SCL use different resistor values?
Can I calculate I2C pull-ups accurately without knowing capacitance?
Does this calculator replace oscilloscope verification?
Calculate I2C Pull-Up Resistance and Rise Time
Enter supply voltage, bus capacitance, I2C speed and sink-current limits to calculate the electrical pull-up resistor window and verify the rise time of your selected resistor.