A reservoir engineer pulling a fluid sample report needs one number before anything else in the PVT package makes sense: the bubble point pressure. Drop reservoir pressure below it during production and free gas breaks out of solution, oil relative permeability can decrease as free gas develops, and your well’s productivity index drops faster than a simple decline curve would predict.
When you don’t have a lab measured PVT report in hand, Standing’s correlation for bubble point pressure is a commonly used empirical way to estimate it from surface measurements you likely already have: solution gas oil ratio, gas gravity, oil API gravity, and reservoir temperature. This tutorial works the 1947 Standing equation by hand, then automates it in Python.
Table of Contents
Prerequisites
- Solution gas oil ratio Rs at bubble point (scf/STB), from a separator test or field estimate
- Gas specific gravity γg (air = 1.0)
- Stock tank oil API gravity
- Reservoir temperature (°F)
- Python 3.10+ or a hosted notebook such as Jupyter

Step 1: Gather bubble point pressure inputs
Standing’s correlation needs exactly four numbers, and getting any one of them from the wrong source is the most common source of error in this calculation. Rs should be the solution gas oil ratio at the bubble point (not an uncorrected producing GOR that may include free gas from a gas cap or another source). Gas gravity should be a weighted average value if the well has multiple separator stages. API gravity is measured on stock tank oil, not live reservoir oil. For this tutorial we’ll use Rs = 350 scf/STB, γg = 0.75, API = 30°, and reservoir temperature T = 160°F.

Step 2: Calculate bubble point pressure with Standing
Standing’s correlation, developed from 105 lab measured bubble point data points, gives:
Pb = 18.2 [ (Rs/γg)^0.83 × 10^a − 1.4 ]
a = 0.00091T − 0.0125·API
Work the exponent first, since it’s the term people most often get backwards:
a = 0.00091(160) − 0.0125(30) = 0.1456 − 0.375 = −0.2294
(Rs/γg)^0.83 × 10^a = (350/0.75)^0.83 × 10^(−0.2294) = 466.7^0.83 × 0.5895 ≈ 96.8
Pb = 18.2 × (96.8 − 1.4) ≈ 1,736 psia
This well’s oil reaches its bubble point at roughly 1,736 psia. If current reservoir pressure is above that, the well is still undersaturated and behaving as a single phase liquid system; once pressure falls below it, expect a rise in producing GOR and a corresponding drop in oil relative permeability.

Step 3: Automate bubble point pressure in Python
Wrap the equation in a function so you can run it across a well list or loop it into a pressure depletion sensitivity study:
def pb_standing(Rs, gas_sg, api, temp_f):
"""Standing (1947) bubble point pressure, psia.
Rs in scf/STB, gas_sg relative to air, api in degrees, temp_f in deg F.
Valid range: Rs 20-1,425 scf/STB, T 100-258F, API 16.5-63.8deg.
"""
a = 0.00091 * temp_f - 0.0125 * api
return 18.2 * ((Rs / gas_sg) ** 0.83 * 10 ** a - 1.4)
Rs, gas_sg, api, temp_f = 350.0, 0.75, 30.0, 160.0
print(f"Pb = {pb_standing(Rs, gas_sg, api, temp_f):.1f} psia")
# Pb = 1736.3 psia
The self contained Python function implements the stated bubble point pressure equation without an external petroleum package. Its result for the example is 1,736.2811 psia, rounded to 1,736.3 psia. Compare a second independent implementation or a trusted PVT calculation before using a correlation estimate in an operating or development decision.

Step 4: Test bubble point pressure sensitivity
Rs is usually the input with the most measurement uncertainty, since it depends on separator conditions and how carefully the field test was run. Sweep Rs across a plausible range while holding gas gravity, API, and temperature fixed, and plot the resulting Pb curve. This tells you how sensitive your bubble point estimate is to that one uncertain input, useful when deciding whether a full lab PVT study is worth the cost, or whether the correlation estimate is precise enough for the decision at hand.

Step 5: Verify bubble point pressure and limitations
A quick sanity check for any Pb correlation: it should rise monotonically with Rs (more dissolved gas means more pressure is needed to keep it in solution) and fall as gas gravity rises (a richer, heavier gas dissolves more readily). Confirm that shape before trusting a single point answer.

For this tutorial’s inputs you should reproduce Pb ≈ 1,736 psia. Standing’s correlation was developed from California crude oil systems and carries a reported average error around 4.8%, so treat it as a solid field estimate, not a lab grade replacement, stay within its validated range (Rs 20–1,425 scf/STB, temperature 100–258°F, API 16.5–63.8°) and don’t extrapolate it to fluids well outside that envelope, such as very light condensates or heavy, degassed crude. If you need tighter accuracy for a major capital decision, other correlations (Vasquez Beggs, Glaso, Lasater) exist for different crude types, and a lab measured constant composition expansion test remains the reference standard.
Once you know where bubble point sits relative to current reservoir pressure, pair this with our tutorial on building a Horner plot for pressure buildup analysis in Python to track how reservoir pressure is actually trending, and our nodal analysis in Python guide to see how a two phase system below Pb changes the well’s IPR curve. If you also need to forecast the well’s remaining rate and reserves, see our companion tutorial on automating Arps decline curve analysis in Python.
Bubble point pressure data quality and practical interpretation
Keep solution GOR separate from producing GOR. Solution gas oil ratio describes gas dissolved in the oil at specified conditions. A measured production ratio can include gas that was not dissolved in the sampled oil. Gas cap contribution, commingled intervals and separator conditions can change the relationship. Before estimating bubble point pressure, establish how the reported Rs was derived and whether it represents the relevant reservoir fluid.
Use the gas gravity required by the correlation. A separator gas sample, stock tank gas and a combined gas composition need not have the same specific gravity. Multiple separation stages require a consistent gas accounting method. Do not average stage gas gravities without their volume basis. Document the test procedure and apply appropriate corrections when a correlation definition requires them. An apparently precise input can otherwise produce a systematically biased bubble point pressure.
Check oil and temperature references. API gravity belongs to stock tank oil, while the temperature in the Standing expression is reservoir temperature in degrees Fahrenheit. Substituting Celsius directly in the empirical exponent changes the result. Convert explicitly before calculation. The coefficient values are tied to this unit system; they cannot be carried unchanged into an SI input routine.
Distinguish absolute and gauge pressure. The correlation returns bubble point pressure in psia. Compare it with reservoir and flowing pressures expressed consistently. A gauge pressure needs an appropriate atmospheric reference to become absolute pressure. Do not subtract atmospheric pressure inside the correlation or add it twice when preparing a report. State the pressure basis next to the result.
Understand what the estimate can establish. A calculated bubble point pressure is a fluid property estimate at the stated temperature and composition. It does not independently prove reservoir pressure, gas saturation or well deliverability. A reservoir can remain above Pb while local flowing pressure near the well drops below it. That distinction matters for choosing an inflow model and interpreting the onset of gas evolution near the wellbore.
Test input sensitivity with realistic ranges. Vary Rs, gas gravity, API and temperature independently to see which uncertainty drives bubble point pressure in your case. Then consider correlated inputs, because changing the composition may affect several properties together. A collection of independently extreme values can create an unrealistic fluid. Report a plausible scenario range instead of attaching too many decimals to the base result.
Use the equation shape as a code check. Within the positive domain of the stated expression, increasing Rs increases predicted bubble point pressure. Increasing gas gravity lowers the estimate when other inputs remain fixed. Increasing temperature raises it, while increasing API lowers it in this correlation. These are properties of the empirical formula with fixed inputs, not a universal statement about every composition change in a real reservoir fluid.
Treat historical accuracy as population specific. A reported error for a correlation development dataset is not a guaranteed error bound for your sample. Different crude families and separator histories may show bias even inside the published input ranges. Whitson’s PVT correlation reference identifies Standing among several available empirical correlations. Compare results against representative laboratory data when the decision requires stronger confidence.
Know when a laboratory study is needed. A high consequence development case, unusual composition or a large difference between plausible correlations can justify laboratory PVT characterization. A representative sample and a documented test procedure matter as much as the chosen equation. Bubble point pressure should be considered together with solution GOR, formation volume factor, viscosity and phase behavior rather than treated as an isolated number that validates the entire fluid model.
Keep a reproducible record. Save the input values, units, source of each measurement, correlation version and calculated result. Label the result as estimated or measured. Include the calculation date and any separator corrections. When the fluid composition or pressure interpretation changes, rerun the bubble point pressure assessment with the revised basis and retain the earlier result for comparison.