Home / Science / Engineering / Petroleum engineering / Pressure buildup analyserTool #688

Pressure buildup test analysis: Horner plot, MDH, permeability, skin, p* and Bourdet derivative

Paste or open shut-in pressures from a buildup test and get permeability, skin, p*, the pressure drop from skin and the radius of investigation from a Horner or MDH straight line (picked automatically or by you), with a log-log Bourdet derivative plot to spot wellbore storage, radial flow and boundaries.

Keep it one tap away for everyday use.

Bookmark Pressure buildup analyser?

Press Ctrl + D now. Your browser opens its own bookmark box, where you choose the name and folder.

  1. Pressures
  2. Line
  3. k and skin
  4. Derivative
Nothing is uploadedWorks offline once open

Buildup data

Two columns: hours since shut-in and the bottomhole pressure. A row at Δt = 0 gives the flowing pressure at shut-in. A header row is skipped. The example is made up from the line-source solution (35 md, skin +3, a sealing fault 350 ft away).

Well and fluid

tp is usually cumulative production since the last stabilisation ÷ rate (× 24 for hours). ct = so·co + sw·cw + cf.

Straight line

Auto picks the longest stretch where the Bourdet derivative is flat (within 10 %): radial flow. Type a range to override it, for example after wellbore storage ends. MDH suits short shut-ins (Δt much smaller than tp). Bigger L smooths a noisy derivative but blurs its shape.

Results

Log-log plot: a flat derivative is radial flow (its level gives k·h); a unit slope at early time is wellbore storage; a derivative that doubles and flattens again suggests one sealing fault; a falling derivative suggests constant pressure support or a gas cap. Field units; equations for a single-phase oil well in an infinite-acting, homogeneous reservoir. For study and planning, not a substitute for professional judgement.

Download

What it does

When a producing oil well is shut in, the bottomhole pressure rises back towards the reservoir pressure. How fast it rises tells you how permeable the rock is, whether the near-wellbore zone is damaged or stimulated (skin), and what the average reservoir pressure is heading for. This tool does the classic pressure buildup analysis:

  • The Horner plot (pressure against log of (tp + Δt)/Δt) and the MDH plot (pressure against log Δt), with a semi-log straight line through the radial-flow points, picked automatically or over a range you choose.
  • From the slope m: permeability-thickness kh = 162.6 qBµ/m and permeability k.
  • Skin s = 1.1513 [(p1hr − pwf)/m − log(k/φµct rw²) + 3.2275], the pressure drop due to skin 0.869 m s and the flow efficiency.
  • p*, the Horner line extrapolated to infinite shut-in time, and the radius of investigation 0.029 √(kΔt/φµct).
  • The Bourdet derivative on a log-log plot, the standard diagnostic for wellbore storage, radial flow and boundaries.

How to use it

  1. Paste or open your data: shut-in time in hours and pressure in psia. Include the row at Δt = 0 (the flowing pressure just before shut-in), or type pwf.
  2. Enter the well and fluid data: the stabilised rate before shut-in, the producing time tp, Bo, viscosity, net thickness, porosity, total compressibility and wellbore radius.
  3. Look at the log-log plot first. Radial flow is where the derivative is flat. The automatic choice takes the longest flat stretch; type “Line from” and “to” to choose it yourself.
  4. Switch between Horner and MDH; MDH is fine when the shut-in is short compared with tp, but it gives no p*.

Worked example

The made-up example is built from the line-source solution for a well with k = 35 md and skin +3, 350 ft from a sealing fault (q = 250 STB/d, tp = 480 h, Bo 1.2, µ 0.9 cP, h 40 ft, φ 0.18, ct 1.2 × 10⁻⁵ 1/psi, rw 0.35 ft), with a little noise. The derivative is flat at about 13.6 psi from the start until about 10 hours, then rises as the fault is felt, heading for double that level.

The automatic line uses 30 points from 0.0126 to 10 h. The Horner slope is m = 31.32 psi/cycle, so kh = 1402 md·ft and k = 35.04 md. With pwf = 3846.71 psia and p1hr = 4083.21 psia, the skin is +3.006, a pressure drop of 81.81 psi from skin and a flow efficiency of 74.5 %. p* = 4167.21 psia; it is below the true initial 4200 psia because the fault has already lowered the pressure near the well. At 100 h the radius of investigation is 1231 ft.

Tips

  • Points before the derivative flattens are affected by wellbore storage and the near-well zone; points after it changes are affected by boundaries or other wells. Leave both out of the straight line.
  • A derivative level that disagrees with m/ln 10 (shown under “Derivative check”) means the line is not on radial flow.
  • Producing time: if the rate varied, use the Horner approximation tp = 24 × cumulative production ÷ last rate.

FAQ

Can I use it for gas wells? Not directly: gas needs pseudo-pressure. For a rough look at low-pressure gas, the equations here are not right.

Why no wellbore storage model or type-curve match? This tool covers the straight-line methods and the derivative diagnostic. Full model matching is a job for dedicated well-test software.

Is my test data uploaded? No. Everything runs in your browser and works offline.

Where the numbers come from

  • Horner, D. R. (1951), Pressure build-up in wells, Proceedings of the Third World Petroleum Congress; Miller, C. C., Dyes, A. B. and Hutchinson, C. A. (1950), Journal of Petroleum Technology 2(4): the semi-log buildup methods, with the standard oilfield-unit constants (162.6, 1.1513, 3.2275, 0.029) as given in petroleum engineering textbooks.
  • Bourdet, D., Ayoub, J. A. and Pirard, Y. M. (1989), Use of pressure derivative in well-test interpretation, SPE Formation Evaluation 4(2): the derivative and its smoothing window.
  • Example data made up by fibub from the line-source (exponential integral) solution with skin and an image well for a sealing fault; checked against an independent SciPy/NumPy script, no code copied.

Standard scientific values, such as constants, atomic weights and melting points, are facts found in every textbook; we name where ours were checked. If you are an author or publisher and want a value, a credit or a table changed or removed, tell us and we will act quickly.

Last updated 2026-11-09.

Related tools

Pump test analyser #126 Paste or open time–drawdown readings from a pumping test. Get transmissivity T and storativity S from a Theis curve fit and the Cooper-Jacob straight line (with a check that it applies), T from recovery data, and T and S from several observation wells. Log plots, PNG, PDF and Word downloads. Slug test analyser #127 Paste or open water level readings from a slug or bail test. Choose the fit window, get the basic time lag T0 and hydraulic conductivity K by Hvorslev, or Bouwer-Rice with your own ln(Re/R), with a filter pack correction, warnings and a semi-log plot. Decline curve analysis (Arps) #686 Paste or open a well's rate-time history, fit Arps exponential, hyperbolic and harmonic declines by least squares, and forecast to the economic limit with EUR, remaining reserves, an optional terminal decline, and plots on linear and log axes. Oil and gas PVT correlations #687 Estimate black-oil and natural gas properties from API gravity, gas gravity, GOR, temperature and pressure: Standing and Vasquez-Beggs bubble point, Rs and Bo, Beggs-Robinson viscosity, Z-factor by Dranchuk-Abou-Kassem or Hall-Yarborough with Sutton pseudo-criticals, Bg, gas density and Lee-Gonzalez-Eakin viscosity, with curves against pressure. 1D Schrödinger solver #923 Choose a textbook potential, type a formula or draw your own, and get the lowest energy levels and wavefunctions of the one-dimensional Schrödinger equation by the matrix (finite-difference) method, with the exact levels alongside for the box, harmonic oscillator, finite well, Morse, linear and Pöschl–Teller potentials. Adduct and neutral loss calculator #984 Type a formula or a neutral monoisotopic mass and get the m/z of 25 common electrospray adducts in positive and negative mode, the ions left after common neutral losses (water, ammonia, CO2, sugars, phosphate and your own), and match a list of observed m/z values within a ppm tolerance. With no molecule, it turns observed m/z values into candidate neutral masses.