SeisDepth · User Documentation

TWT → Depth Conversion
for Seismic Profiles

A complete reference for SeisDepth — a browser-based tool that converts seismic two-way travel time to depth using layered interval velocity models, the Dix RMS equation, and real-time uncertainty propagation. No installation required.

Browser-based No install required Open equations Dix (1955) Iterative depth model

Introduction

Seismic reflection surveys image the Earth's subsurface in the time domain. Every seismic section you see displays two-way travel time (TWT) on the vertical axis — the time it takes an acoustic pulse to travel from the surface to a rock boundary and return. While the time domain is useful for mapping structural geometry, it cannot be directly compared to depth-referenced information such as well logs, formation tops, fluid contacts, or pressure data.

Converting seismic data from TWT to true subsurface depth requires a velocity model — a description of how fast acoustic waves travel through each geological layer between the surface and the target. SeisDepth provides a fast, transparent, browser-based environment for building these models and performing the conversion.

Unlike black-box commercial software, every calculation in SeisDepth is grounded in published equations and visible to the user. This documentation explains both what the tool does and the geophysical theory behind each step.

ℹ️
Who is SeisDepth for?

Petroleum geologists, seismic interpreters, exploration geophysicists, and geoscience students who need rapid, auditable TWT–depth conversion without commercial software licences or workstation installations.

Key Features

🗂️
Layered Velocity Models
Define multi-layer geological sequences with individual interval velocity, top TWT, and uncertainty for every formation.
Dix Equation Calculator
Convert seismic Vrms picks to interval velocities using the Dix equation in one click, or import picks from CSV.
🪨
Lithology Presets
Apply one-click velocity presets for seawater, clay, coal, shale, sandstone, and salt from published P-wave compilations.
📊
Dual-Domain Visualization
View your model in the time and depth domains simultaneously, with a TWT–depth function curve exportable as PNG.
📐
Uncertainty Propagation
Set per-layer velocity uncertainty (±%) and obtain cumulative depth error bounds for every converted horizon in real time.
💾
CSV & JSON I/O
Import Vrms picks from CSV, export complete models as JSON, and save named models for rapid scenario switching.

Core Concepts & Theory

This section explains the geophysical theory underlying every calculation SeisDepth performs. Understanding these concepts allows you to build accurate models and correctly interpret the outputs — including their limitations.

Two-Way Travel Time (TWT)

When a seismic source fires, it generates an acoustic pulse that travels downward through the Earth. At each geological boundary where the acoustic impedance changes, part of the wave is reflected back to the surface and recorded by receivers. The total elapsed time from the shot to the return of that reflected arrival is the two-way travel time.

TWT — quick reference
SymbolTWT (or t₂)
Unitmilliseconds (ms)
Directionincreases downward from 0 ms at the surface
One-way timet₁ = TWT / 2
Exploration rangetypically 0 – 6000 ms (shallow – deep)
Input to SeisDepthTop TWT (ms) for each layer boundary

The TWT is related to depth by the velocity of the subsurface layers. Faster layers (e.g., carbonates, salt) compress a large depth interval into a short TWT interval; slower layers (e.g., unconsolidated sediments) do the opposite. This non-linear TWT–depth relationship is precisely what the velocity model defines and what SeisDepth converts.

RMS Velocity (Vrms)

Seismic velocity analysis of CMP (common midpoint) gathers determines the velocity that best corrects the normal moveout (NMO) of each reflection event — that is, the velocity that makes a curved reflection appear flat when the offset between shot and receiver is varied. This is called the NMO velocity or, more precisely in the context of layered media, the root mean square velocity (Vrms).

Vrms at a given reflector is not the velocity of any single layer. It is a weighted average that "smears" the velocity information from all layers above that reflector into a single number:

RMS Velocity — Formal Definition
$$V_{rms,n}^{\;} = \sqrt{\;\frac{\displaystyle\sum_{i=1}^{n} V_{int,i}^{\;2}\;\Delta t_i}{\displaystyle\sum_{i=1}^{n} \Delta t_i}\;}$$
Variables
Vrms,nRMS velocity to the base of layer n (m/s)
Vint,iInterval velocity of layer i (m/s)
ΔtiOne-way travel time within layer i = (TWTi − TWTi−1) / 2 (s)
nTotal number of layers above the reflector
Vrms is the quantity obtained directly from seismic velocity analysis. It is not the velocity of any individual rock but a composite average dominated by fast, thick layers.

Because Vrms averages over the whole column, it increases monotonically with depth for a normally compacting sequence. It is the input to the Dix equation, which "un-averages" Vrms into the individual layer velocities needed for depth conversion.

Interval Velocity (Vint)

The interval velocity is the true seismic P-wave velocity within a specific geological layer — the actual speed at which acoustic energy travels through that rock between two bounding reflectors. It is the fundamental quantity for depth conversion.

Three ways to obtain interval velocities, in order of increasing accuracy:

  1. Lithology presets — representative published values; useful for reconnaissance models
  2. Dix equation — derived from seismic Vrms picks; typical accuracy ±5–15%
  3. Borehole measurements — check-shots or VSP surveys; typical accuracy ±1–3%

The Dix Equation

The Dix equation, published by C. H. Dix in 1955, is the standard method for converting seismic RMS velocity picks into layer interval velocities. It is derived by inverting the definition of Vrms for the innermost layer:

Dix (1955) — Interval Velocity from RMS Picks
$$V_{int,i} = \sqrt{\;\frac{V_{rms,i}^{\;2}\;t_i \;-\; V_{rms,i-1}^{\;2}\;t_{i-1}}{t_i \;-\; t_{i-1}}\;}$$
Variables
Vint,iInterval velocity of layer i — the result (m/s)
Vrms,iRMS velocity at the base of layer i (m/s) — picked from velocity analysis
Vrms,i−1RMS velocity at the top of layer i (m/s) — picked from velocity analysis
tiTwo-way travel time at the base of layer i, converted to seconds: TWTi (ms) / 1000
ti−1Two-way travel time at the top of layer i, converted to seconds: TWTi−1 (ms) / 1000
Unit note: SeisDepth accepts TWT in ms. Internally it divides by 1000 to convert to seconds before applying this formula, as Vrms is in m/s and velocity × time (in seconds) = distance (in metres).

Derivation intuition

If you write out the RMS velocity definition for \(n\) layers and for \(n-1\) layers and subtract, you isolate the contribution of layer \(n\). Taking the square root recovers \(V_{int,n}\). The logic is identical to how you find the speed of one segment of a journey from average speeds recorded at different checkpoints.

Worked example — one Dix step

Given Vrms = 1650 m/s at TWT = 800 ms and Vrms = 2100 m/s at TWT = 1600 ms:

Worked example — Dix step (800 → 1600 ms)
$$V_{int} = \sqrt{\frac{2100^2 \times 1.6 \;-\; 1650^2 \times 0.8}{1.6 \;-\; 0.8}} = \sqrt{\frac{7{,}056{,}000 \;-\; 2{,}178{,}000}{0.8}} = \sqrt{\frac{4{,}878{,}000}{0.8}} = \sqrt{6{,}097{,}500} \approx 2469 \text{ m/s}$$
This matches the Coal layer velocity shown in the SeisDepth default model.
⚠️
Dix equation assumptions

The Dix equation strictly requires horizontal, laterally homogeneous, isotropic layers. It breaks down in areas of structural dip, lateral velocity gradients, anisotropy (e.g., shale with VTI symmetry), or near the flanks of salt bodies. In structurally complex areas, full waveform inversion or tomographic velocity model building is required. Always validate Dix-derived velocities against borehole data.

Depth Conversion Formula

Once interval velocities are established, depth is computed iteratively from the surface downward through the layer stack. SeisDepth applies the standard one-way depth formula at each layer boundary:

Iterative Depth Conversion — SeisDepth Core Formula
$$z_i = z_{i-1} \;+\; V_{int,i} \cdot \frac{TWT_i - TWT_{i-1}}{2 \times 1000}$$
Variables
ziDepth at the base of layer i (metres, measured from surface)
zi−1Depth at the top of layer i (metres) — accumulated from all shallower layers
Vint,iInterval velocity of layer i (m/s)
TWTiTwo-way travel time at the base of layer i (ms)
TWTi−1Two-way travel time at the top of layer i (ms)
2 × 1000Factor of 2 converts two-way to one-way time; 1000 converts ms to seconds
The combined constant 2000 converts milliseconds of two-way time to seconds of one-way time in a single division. Multiplying by V in m/s then yields depth in metres.

Step-by-step derivation of the constant

TWT is in ms. One-way time (s) = TWT (ms) ÷ 1000 ÷ 2 = TWT ÷ 2000.
Distance = velocity × time, so layer thickness (m) = Vint (m/s) × one-way time (s).
Therefore: Δzi = Vint,i × (TWTi − TWTi−1) / 2000.
And cumulative depth: zi = zi−1 + Δzi.

Worked example — depth at a shale top

Layer: Shale, TWT top = 800 ms, TWT base = 1600 ms, Vint = 3385 m/s. Previous cumulative depth zprev = 660 m.

Worked example — depth at 1600 ms TWT
$$\Delta z = 3385 \times \frac{1600 - 800}{2000} = 3385 \times 0.4 = 1354.0 \text{ m}$$ $$z = 660.0 + 1354.0 = 2014.0 \text{ m}$$
This shale layer is 1354 m thick, and its base lies at 2014 m below the surface — matching SeisDepth's computed output for the default model.

Layer Thickness

Layer thickness is the change in depth between the top and base of a layer. It follows directly from the depth conversion formula:

Layer Thickness
$$\Delta z_i = V_{int,i} \cdot \frac{\Delta TWT_i}{2000}$$
Variables
ΔziTrue vertical thickness of layer i (metres)
Vint,iInterval velocity of layer i (m/s)
ΔTWTiTWT interval spanned by layer i = TWTi − TWTi−1 (ms)
2000Combined constant: factor of 2 (two-way) × 1000 (ms → s)
This is the thickness of the layer as it would appear on a well log or in a depth-converted seismic section. It equals the depth at the base minus the depth at the top of that layer.

Uncertainty Propagation

Every velocity estimate carries uncertainty — from noise in the seismic velocity analysis, lateral variability in the rock, and the inherent resolution limits of the NMO method. SeisDepth propagates this uncertainty through the full depth column using linear error propagation:

Absolute Depth Uncertainty at Layer i Base — Linear Propagation
$$\Delta z_{i}^{total} \;\approx\; \sum_{k=1}^{i} \;\Delta z_k \cdot \frac{\delta V_k}{V_k}$$
Variables
ΔztotaliTotal absolute depth uncertainty at the base of layer i (metres) — shown as ±(m) in the output table
ΔzkThickness of layer k = Vint,k × ΔTWTk / 2000 (metres)
δVk / VkFractional velocity uncertainty of layer k = ±V(%) / 100 (dimensionless)
This is a first-order linear approximation. It assumes the uncertainty in each layer's velocity is independent of other layers and is small relative to the velocity itself. The result is the cumulative effect of all layer uncertainties stacked from the surface to depth i.

Expanded form — showing each layer's contribution

Expanded Uncertainty Expression
$$\Delta z_i^{total} = \frac{\delta V_1}{V_1}\cdot\Delta z_1 \;+\; \frac{\delta V_2}{V_2}\cdot\Delta z_2 \;+\; \cdots \;+\; \frac{\delta V_i}{V_i}\cdot\Delta z_i$$
Each term is the fractional velocity uncertainty of that layer multiplied by its contribution to the total depth. Thick, fast layers with high uncertainty dominate the error budget.

Percentage depth error

Depth Error as a Percentage
$$\text{Error}\,(\%) = \frac{\Delta z_i^{total}}{z_i} \times 100$$
This is the value shown in the Error % column of the Converted Horizons Table.

Worked example — uncertainty to base of shale

Layer 1: Seawater, Δz = 0 m (top layer), δV/V = 0%. Layer 2: Clay (unconsolidated), Δz = 660 m, δV/V = 8%. Layer 3: Shale, Δz = 987.6 m, δV/V = 8%.

Worked example — cumulative uncertainty to base of shale at 1647.6 m
$$\Delta z^{total} = (0 \times 0) \;+\; (0.08 \times 660.0) \;+\; (0.08 \times 987.6)$$ $$= 0 \;+\; 52.8 \;+\; 79.0 \;=\; 131.8 \text{ m}$$ $$\text{Error}\,(\%) = \frac{131.8}{1647.6} \times 100 \approx 8.0\%$$
This matches the ±131.8 m shown in SeisDepth's Converted Horizons Table for the default model.

Complete Formula Summary

All equations used by SeisDepth, consolidated for reference:

SeisDepth — All Equations at a Glance
One-way travel time
t₁ = TWT / 2
RMS velocity
(definition)
rms,n = Σ(V²int,i · Δtᵢ) / Σ(Δtᵢ)
Dix equation
Vint from Vrms
Vint,i = √[ (V²rms,i·tᵢ − V²rms,i−1·tᵢ₋₁) / (tᵢ − tᵢ₋₁) ]
Layer thickness
(ms → metres)
Δzᵢ = Vint,i · ΔTWTᵢ / 2000
Cumulative depth
(iterative)
zᵢ = zᵢ₋₁ + Vint,i · (TWTᵢ − TWTᵢ₋₁) / 2000
Depth uncertainty
(linear propagation)
Δztotali = Σ [ Δzₖ · (δVₖ / Vₖ) ] for k = 1 to i
Depth error (%)
Error(%) = (Δztotali / zᵢ) × 100
Units convention
TWT in ms · Velocity in m/s · Depth in m

Interface Overview

The SeisDepth interface is organized into four functional areas that update in real time as you modify the velocity model.

SeisDepth · Panel Layout
① Velocity Model Panel
Layer rows: Top TWT (ms) · V (m/s) · ±V (%)
Lithology preset selector per layer
Add / remove layers · Dix calculator
② Display Controls
Max TWT range (ms) · Layer labels toggle
Reference lines toggle · Profile labels toggle
Export TWT–Depth function as PNG
③a Time Domain
Layers vs. TWT (ms)
Increases downward
Color-coded by lithology
③b Depth Domain
Layers vs. depth (m)
Converted via velocity model
Same color coding
③c TWT–Depth Function
Cumulative depth curve
Depth plotted at each TWT step
Exportable as PNG
④ Converted Horizons Table
Layer name · Top TWT (ms) · Vint (m/s) · Thickness (m) · Depth (m) · ±Error (m) · Error (%)

Global Toolbar

ButtonAction
Import CSVLoad TWT / Vrms pairs from a comma-separated file into the Dix calculator text area
Export JSONSave the complete velocity model, all layer settings, and display parameters to a JSON file
Import JSONRestore a previously exported model from a JSON file, replacing the current model
My modelsSave, recall, or delete named models stored in the current browser session for rapid scenario switching

Building a Velocity Model

A SeisDepth velocity model is an ordered stack of geological layers from the surface downward. Each layer is defined by the TWT at which it begins (its top reflector), its interval velocity, and an optional velocity uncertainty.

1

Plan your layer boundaries

Identify the seismic reflections (horizons) you wish to convert. Each boundary between layers corresponds to a picked reflection. For a standard offshore petroleum section this typically includes the sea surface, seafloor, shallow sediments, regional shales, and a target reservoir or carbonate unit.

2

Configure the surface layer (TWT = 0 ms)

The first row always starts at TWT = 0 ms. For offshore surveys this is the water column (seawater, V ≈ 1500 m/s). Click Apply lithology preset… to auto-populate, or type the velocity directly. Set ±V = 0% for seawater if the value is measured acoustically.

3

Add deeper layers in TWT order

Click Add to append a new layer. Enter its Top TWT (ms) — the two-way travel time of its upper boundary as picked on the seismic section. Enter the V (m/s) interval velocity and the ±V (%) uncertainty. Repeat for all layers, always maintaining increasing TWT order.

4

Verify the Converted Horizons Table

The table updates in real time. Check that depths are geologically plausible, layer thicknesses make sense, and the ±Error column reflects your confidence in each velocity. The Max depth indicator updates as you adjust Max TWT.

5

Export and archive

Use Export JSON to save the model for future sessions. Use Export PNG to capture the TWT–Depth function plot for technical reports. Use My models to name and store the model for quick recall within this session.

ℹ️
Layer ordering is critical

Layers must be entered in strictly increasing TWT order. Depth conversion is computed iteratively from the shallowest to the deepest layer. An out-of-order entry produces a negative depth increment for that layer and incorrect cumulative depths for everything below it.

Lithology Presets

SeisDepth provides one-click velocity presets for common geological materials. Selecting a preset from the Apply lithology preset… dropdown fills the velocity field for that layer with a representative published P-wave velocity.

PresetV in SeisDepth (m/s)Published range (m/s)Primary controls
Seawater15001470 – 1540Temperature, salinity, depth (pressure)
Clay (unconsolidated)16501000 – 2500Water content, burial depth, consolidation
Coal24692000 – 3000Coal rank, fracture porosity, cleat orientation
Shale33852000 – 4500Burial depth, compaction, organic content, diagenesis
Sandstone40562000 – 6000Porosity, cementation, pore fluid, burial depth
Salt (halite)44424400 – 4600Temperature (narrow range; lab-constrained)
⚠️
Presets are starting points, not calibrations

These values represent midpoints of published ranges. Real formations vary enormously — shale velocity alone can range from 2000 to 4500 m/s depending on depth and diagenesis. For any prospect or drilling decision, calibrate your velocity model against nearby well data (check-shots, VSP, or interval velocities from sonic logs).

Dix Calculator

The Dix calculator converts seismic Vrms picks (pairs of TWT and RMS velocity) into layer interval velocities using the Dix equation. This eliminates the need to look up or guess interval velocities when velocity analysis data are available.

Input Format

Enter picks as comma-separated pairs — one TWT–Vrms pair per line — starting at TWT = 0 ms:

# Format: TWT (ms), Vrms (m/s)
# One pick per line. The first line must be TWT = 0.
0,1500
800,1650
1600,2100
2400,2600
3400,3100
4600,3500

This format matches the output of most seismic processing packages (e.g., velocity function ASCII files from Petrel, Kingdom, Hampson–Russell, or OpendTect).

Step-by-Step Usage

1

Enter or import Vrms picks

Paste TWT–Vrms pairs directly into the calculator text area, or click Import CSV from the toolbar to load them from a file.

2

Click "Compute interval velocities"

SeisDepth applies the Dix equation to each consecutive pair of picks, computing Vint for every layer interval defined by those picks.

3

Review the computed Vint values

Verify that derived interval velocities are geologically plausible (roughly 1400–7000 m/s for sedimentary sequences). Values outside this range suggest either noisy velocity picks, cycle-skipping in the velocity analysis, or insufficient picks across a high-velocity layer (which inflates the apparent interval velocity of the adjacent layer).

4

Review and adjust in the Velocity Model panel

Computed Vint values populate the layer table. Assign ±V (%) uncertainty to each layer before running the full depth conversion.

⚠️
Avoiding imaginary interval velocities

If Vrms decreases with depth — physically impossible in a normally compacting sequence — the expression inside the Dix square root becomes negative and the calculation fails. This indicates either a data-entry error (transposed Vrms values) or genuine velocity analysis noise. Correct the offending picks before proceeding.

Display Controls

The display panel governs the visualization of your model in the time and depth domains and controls the exported figure.

ControlDefaultDescription
Max TWT (ms) 8000 ms Sets the vertical extent of the Time Domain and Depth Domain panels. Increase to show deeper stratigraphy; decrease to zoom in on shallower intervals. The Max depth value in metres is shown in real time directly below this control.
Reference lines On Toggles horizontal depth gridlines on the TWT–Depth function plot, making it easier to read off depth values at specific TWT positions.
Profile layer labels On Toggles lithology name and interval velocity annotations displayed within each layer band on the Time Domain and Depth Domain panels.
TWT–Depth function labels On Toggles numeric depth annotations at each TWT step on the function curve panel.
Export PNG (TWT–Depth function) Downloads the TWT–Depth function chart as a PNG image. Suitable for insertion into well prognosis documents, seismic interpretation reports, or technical presentations.
ℹ️
Max depth indicator

The depth corresponding to the current Max TWT setting is shown in real time as Max depth: X m. This value changes whenever you adjust the TWT range or modify any layer velocity, making it a useful sanity check on your model's total depth extent.

Uncertainty Analysis

Velocity uncertainty is specified per layer via the ±V (%) field. SeisDepth propagates these values through the cumulative depth computation and reports absolute depth uncertainty (±m) and percentage error for every horizon in the Converted Horizons Table.

Recommended Uncertainty Values

ScenarioRecommended ±V (%)Rationale
Seawater — acoustic profiling0 – 1%Directly measurable; negligible uncertainty
Salt (halite) — lab-constrained2 – 4%Narrow published range; temperature is the only variable
Shallow layers with check-shot calibration2 – 5%Well data reduce uncertainty below seismic-only estimates
Standard seismic velocity analysis (uncalibrated)5 – 10%Typical velocity analysis uncertainty without borehole control
Sub-salt or very deep layers10 – 20%Poor seismic illumination; low velocity resolution; no well control

Reading the Converted Horizons Table

ColumnFormula usedMeaning
TWT (ms)Top TWT of each layer as entered by the user
V (m/s)Interval velocity of that layer
Thickness (m)V · ΔTWT / 2000True vertical thickness of the layer in metres
Depth (m)zi = zi−1 + ΔziCumulative depth from the surface to the top of this layer
±(m)Σ Δzk · δVk/VkAbsolute depth uncertainty propagated from all shallower layers
Error %Δztotal / z × 100Depth uncertainty as a percentage of the estimated depth
💡
The value of borehole calibration

Reducing interval velocity uncertainty from ±10% to ±3% via check-shot calibration shrinks a ±300 m depth error at 3000 m to ±90 m. For any drilling decision, well-calibrated velocities are strongly preferred over seismic-only estimates. The ±300 m vs. ±90 m difference can determine whether a proposed well location is commercially viable.

Import & Export

CSV Import — Vrms Picks

CSV files loaded into the Dix calculator must contain exactly two columns: TWT in milliseconds and Vrms in m/s. A header row is optional and ignored if present.

# Optional header row (ignored by parser)
TWT (ms),Vrms (m/s)
0,1500
800,1650
1600,2100
2400,2600
3400,3100
4600,3500

JSON Export / Import — Complete Model State

The JSON format preserves the entire model: all layer names, top TWT values, velocities, uncertainties, and display settings. This is the recommended format for project archival and sharing.

{
  "layers": [
    {
      "topTWT": 0,
      "velocity": 1500,
      "uncertainty": 0,
      "name": "Seawater"
    },
    {
      "topTWT": 200,
      "velocity": 1650,
      "uncertainty": 8,
      "name": "Clay (unconsolidated)"
    },
    {
      "topTWT": 800,
      "velocity": 3385,
      "uncertainty": 8,
      "name": "Shale"
    },
    {
      "topTWT": 2400,
      "velocity": 4056,
      "uncertainty": 10,
      "name": "Sandstone"
    }
  ],
  "displayMaxTWT": 6000
}

My Models — Session Storage

The My models panel saves named models within the current browser session. This allows rapid switching between scenarios (low / mid / high velocity cases) without reloading files. Models in this panel are not persisted across browser sessions — always use Export JSON for permanent storage.

ℹ️
SEG-Y support

Direct SEG-Y file import and export is planned for a future SeisDepth release. Currently, velocity picks must be imported via CSV or entered manually. See Limitations & Roadmap.

Tutorial 1 — Offshore Sedimentary Basin

A complete walkthrough of TWT–depth conversion for a typical offshore clastic petroleum system with a sandstone reservoir target.

Scenario

You are interpreting 2D seismic data over an offshore shelf basin. Velocity analysis of a CMP supergather at the prospect location has produced the following Vrms picks. The target is a sandstone reservoir at approximately 2600 ms TWT.

TWT (ms)Vrms (m/s)Interpreted Horizon
01500Sea surface
2001500Seafloor
6001620Base unconsolidated clays
12001950Top compact shale
20002350Top mid-shale unit
26002700Top reservoir sandstone
32002950Base reservoir / deeper shale
1

Enter Vrms picks in the Dix calculator

Paste the TWT–Vrms pairs into the Dix calculator text area and click Compute interval velocities. SeisDepth will apply the Dix equation to each consecutive pair.

2

Verify the computed Vint values

The interval velocity of the reservoir sandstone interval (2000–2600 ms) should be significantly higher than the enclosing shales, consistent with a porous, cemented clastic reservoir. Check for any anomalously high or low values that might indicate velocity analysis noise.

3

Assign velocity uncertainty

Set ±V = 2% for seawater (measured). Set ±V = 3% for the seafloor clay (shallow, accessible). Set ±V = 8% for the shale units (standard velocity analysis). Set ±V = 10% for the reservoir sandstone — greater depth reduces velocity resolution.

4

Read the target depth from the Converted Horizons Table

The top reservoir sandstone at 2600 ms converts to approximately 3000–3200 m depth (central estimate ±10%). This is the depth prognosis to report for pre-drill well planning.

5

Apply the depth conversion formula manually to verify

For the reservoir layer (2000–2600 ms), with Vint ≈ 3445 m/s (from the Dix step at those picks) and depth to top of reservoir ≈ 1959 m:

Verification — Reservoir Top Depth
$$\Delta z_{reservoir} = 3445 \times \frac{2600 - 2000}{2000} = 3445 \times 0.30 = 1033.5 \text{ m}$$ $$z_{reservoir\,top} = 1959 \;+\; 1033.5 \;\approx\; 2993 \text{ m}$$ $$\Delta z_{total}^{\pm} \approx \sum_{k}\Delta z_k \cdot \frac{\delta V_k}{V_k} \;\approx\; \pm 299 \text{ m} \quad (\pm 10\%)$$
The reservoir top at 2600 ms TWT lies at approximately 2993 ± 299 m depth. This matches SeisDepth's table output for these input values.
6

Export model and figure

Click Export JSON to archive the model with your project data. Click Export PNG to save the TWT–Depth function chart for inclusion in the well prognosis or prospect summary document.

Tutorial 2 — Sub-salt Exploration Model

Salt bodies are one of the most challenging velocity modeling problems in exploration seismology. Their high P-wave velocity (≈4480 m/s) relative to surrounding sediments creates a strong velocity contrast that distorts seismic imaging and introduces large depth uncertainty in sub-salt targets.

Scenario

Regional seismic imaging shows a salt body (halite) between approximately 2000 and 3400 ms TWT. A structural closure is interpreted in the sub-salt section at ≈4200 ms. You need to estimate the target depth and its uncertainty before committing to a well location.

LayerTop TWT (ms)Vint (m/s)±V (%)Rationale for uncertainty
Seawater015000Acoustic measurement; negligible error
Overburden shale (upper)20021008Standard velocity analysis accuracy
Pre-salt shale1200280010Deeper, less well-resolved by NMO
Salt (halite)200044803Lab-constrained; very narrow range
Sub-salt shale (poorly imaged)3400260018Very poor illumination below salt
Target sandstone4200380018No well control; maximum uncertainty
1

Build the model in SeisDepth

Enter each layer with its top TWT and interval velocity. For the salt layer, click Apply lithology preset… and select Salt (halite), then set ±V = 3%.

2

Observe the velocity contrast at salt boundaries

In the Time Domain and Depth Domain panels, note how the salt layer (4480 m/s) compresses a large depth interval into relatively few milliseconds of TWT. The Depth Domain panel reveals the true geometric extent of each unit.

3

Compute the sub-salt target depth

Apply the iterative depth formula for each layer. Below is the full calculation chain:

Full Depth Calculation Chain — Sub-salt Tutorial
$$z_1 \;(\text{Seafloor, TWT 200 ms}) = 1500 \times \frac{200}{2000} = 150 \text{ m}$$ $$z_2 \;(\text{Pre-salt shale top, TWT 1200 ms}) = 150 + 2100 \times \frac{1000}{2000} = 150 + 1050 = 1200 \text{ m}$$ $$z_3 \;(\text{Salt top, TWT 2000 ms}) = 1200 + 2800 \times \frac{800}{2000} = 1200 + 1120 = 2320 \text{ m}$$ $$z_4 \;(\text{Salt base, TWT 3400 ms}) = 2320 + 4480 \times \frac{1400}{2000} = 2320 + 3136 = 5456 \text{ m}$$ $$z_5 \;(\text{Sub-salt shale base, TWT 4200 ms}) = 5456 + 2600 \times \frac{800}{2000} = 5456 + 1040 = 6496 \text{ m}$$
The target top lies at approximately 6496 m depth. This extreme depth (typical of deep-water salt provinces) results from the high salt velocity compressing the sub-salt section.
Cumulative Uncertainty to Target Top (TWT = 4200 ms)
$$\Delta z^{total} = (0 \times 0.00) \;+\; (1050 \times 0.08) \;+\; (1120 \times 0.10) \;+\; (3136 \times 0.03) \;+\; (1040 \times 0.18)$$ $$= 0 \;+\; 84 \;+\; 112 \;+\; 94 \;+\; 187 \;=\; \mathbf{477 \text{ m}}$$ $$\text{Error}\,(\%) = \frac{477}{6496} \times 100 \approx 7.3\%$$
Despite the sub-salt shale having ±18% velocity uncertainty, the large thickness of well-constrained salt (±3%) at high velocity limits the overall percentage error. The absolute error (±477 m) is nevertheless substantial for a deepwater drilling decision.
4

Run a scenario comparison

Save this as Base case using My models. Create a Low velocity case by reducing sub-salt shale to 2200 m/s, and a High velocity case at 3000 m/s. Compare the resulting target depths to bracket the drilling depth uncertainty range: this is your P10/P50/P90 depth spread.

⚠️
Sub-salt velocity: the critical unknown

Seismic velocity analysis beneath salt bodies is severely limited by poor wavefield illumination and complex ray paths. The ±18% uncertainty used here is conservative. In practice, full waveform inversion (FWI) or dedicated sub-salt model building is required to constrain sub-salt velocities before any drilling commitment.

Tutorial 3 — Well-Calibrated Depth Conversion

When an offset well with check-shot or VSP data is available, the velocity model can be calibrated to dramatically reduce depth uncertainty. This tutorial demonstrates how to integrate borehole data into a SeisDepth model.

Scenario

An exploration well (Well-A) has penetrated the target formation and provides check-shot interval velocities. A seismic prospect (Prospect-B) lies 8 km along strike. You wish to depth-convert the prospect using the well-calibrated velocity model.

1

Extract check-shot interval velocities from Well-A

From the check-shot survey, read the interval velocity for each formation penetrated by the well. These are measured as the ratio of depth increment to one-way travel time increment between consecutive receivers — a direct physical measurement, not a processed estimate.

2

Enter well-derived Vint values in SeisDepth

Replace the Dix-derived or preset velocities with the check-shot interval velocities. Set ±V = 2–3% for calibrated layers, reflecting residual uncertainty from lateral velocity variation between the well and the prospect.

3

Verify the well depth tie

Check that the converted depth at Well-A matches the known formation tops from the well log exactly (or within 1–2%). Any systematic discrepancy is a well mis-tie and usually indicates lateral velocity change between the well and the CMP used for velocity analysis, or a timing error in the seismic-to-well tie.

4

Apply to Prospect-B and compare uncertainties

With calibrated velocities, the dominant remaining uncertainty is the lateral velocity change between the well and the prospect location — often modeled as a small percentage per kilometre of distance. Typical calibrated depth errors range from ±1–3% for well-tied models vs. ±8–10% for seismic-only models.

Uncertainty Improvement from Well Calibration
$$\text{Seismic-only depth error} \;\approx\; z_i \times \frac{\delta V_{seismic}}{V} = 3000 \times 0.10 = \pm 300 \text{ m}$$ $$\text{Well-calibrated depth error} \;\approx\; z_i \times \frac{\delta V_{calibrated}}{V} = 3000 \times 0.03 = \pm 90 \text{ m}$$
Well calibration reduces the depth uncertainty at a 3000 m target from ±300 m to ±90 m — a factor of 3.3 improvement. This can be the difference between a safely designed well trajectory and a significant geological surprise at the bit.
💡
Time–depth calibration (T–Z curve)

In a fully calibrated workflow, check-shot data provide a direct T–Z (time–depth) function at the well location. This can be used to correct the seismic velocity model interval by interval, ensuring the depth conversion matches the well exactly. T–Z calibration support is on the SeisDepth development roadmap.

Lithology Reference Table

Published P-wave velocity ranges for common geological materials, compiled from standard geophysical references (Sheriff & Geldart, 1995; Schlumberger Log Interpretation Charts; Mavko et al., 2009).

MaterialVP Range (m/s)Representative VPPrimary controlling factors
Air330 – 340335Temperature; negligible pressure dependence near surface
Freshwater1430 – 15301480Temperature (strong), dissolved solids
Seawater1470 – 15401500Temperature, salinity, hydrostatic pressure
Ice3400 – 38003600Temperature, crystal fabric, brine inclusions
Peat / top soil300 – 700500Water content, organic matter, compaction
Sand (dry)200 – 1000600Grain size, packing density, moisture
Sand (water-saturated)1500 – 20001750Water saturation, depth, grain contacts
Clay (unconsolidated)1000 – 25001650Water content, burial depth, overburden
Shale2000 – 45003000Burial, compaction, organic content, diagenesis
Sandstone2000 – 60003500Porosity, cementation, pore fluid, burial depth
Limestone3500 – 65005000Porosity, dolomitization, fractures
Dolomite3500 – 70005500Porosity, crystal size, diagenesis
Anhydrite4500 – 65005500Composition; relatively uniform pure mineral
Salt (halite)4400 – 46004480Temperature (only major variable; narrow range)
Coal2000 – 30002500Coal rank, fracture porosity, cleat orientation
Granite5500 – 62005800Mineralogy, fracturing, alteration
Basalt5000 – 70006000Vesicularity, alteration, fracture density
Gabbro / Diabase6000 – 70006500Mafic mineral content, alteration
ℹ️
Sources

Sheriff, R. E., & Geldart, L. P. (1995). Exploration Seismology (2nd ed.). Cambridge University Press. · Mavko, G., Mukerji, T., & Dvorkin, J. (2009). The Rock Physics Handbook (2nd ed.). Cambridge University Press. · Schlumberger (2013). Log Interpretation Charts.

Limitations & Roadmap

⚠️
1D model — the most important limitation

SeisDepth is a strictly one-dimensional tool. It assumes horizontal, laterally homogeneous layers with no dip, no lateral velocity gradients, and no anisotropy. For structurally complex areas — beneath salt, near faults, on steep dips — a 3D velocity model and dedicated depth migration are required.

LimitationImpactCurrent workaround
1D layered model onlyNo lateral velocity variationBuild separate models for different structural domains
Isotropic velocities assumedNo VTI / HTI anisotropyApply Thomsen corrections externally before entry
Flat-layer assumptionNo dip correctionApply NMO dip corrections in processing before picking Vrms
No SEG-Y supportCannot read seismic files directlyImport Vrms picks as CSV from processing software
No 2D / 3D velocity gridsPoint model onlyBuild multiple models; interpolate depths in GIS software
Linear uncertainty propagationMay underestimate correlated errorsUse conservative (high) ±V values to compensate
Browser session storage onlyMy models not persistent across sessionsAlways use Export JSON for permanent storage

Planned Features (Roadmap)

FeatureStatusDescription
SEG-Y import / exportPlannedRead velocity picks and horizon TWT directly from SEG-Y files
Well log integrationPlannedUpload check-shot or sonic log data to calibrate interval velocities
T–Z calibration curvePlannedImport a borehole time–depth function for exact well-tie calibration
Lateral velocity gradientRoadmapModel linear velocity change with lateral distance for 2D transects
Monte Carlo uncertaintyRoadmapReplace linear propagation with full Monte Carlo depth uncertainty
P10 / P50 / P90 scenariosRoadmapSide-by-side comparison of low / mid / high velocity depth scenarios
VTI anisotropy correctionRoadmapApply Thomsen δ parameter correction for shale anisotropy

Glossary

Two-Way Travel Time TWT
The total elapsed time for a seismic pulse to travel from a surface source to a subsurface reflector and back to a surface receiver. Measured in milliseconds (ms). Always exactly twice the one-way travel time. TWT increases downward on a seismic section and is the vertical axis of all seismic reflection data.
One-Way Travel Time t₁
The time for a seismic wave to travel from the surface to a reflector in a single direction. Equal to TWT / 2. Used internally by SeisDepth in all depth calculations (distance = velocity × one-way time).
RMS Velocity Vrms
Root mean square velocity — the effective velocity derived from seismic NMO velocity analysis. It represents a travel-time-weighted average of interval velocities from the surface to a given reflector. Vrms is picked from a velocity semblance panel and serves as the input to the Dix equation.
Interval Velocity Vint
The seismic P-wave velocity within a specific geological layer between two bounding reflectors. The true physical velocity of that rock. Cannot be measured directly from surface seismic data — it must be derived from Vrms using the Dix equation, or measured in a borehole via check-shots or VSP surveys.
Dix Equation
A formula published by C. H. Dix (1955) that converts pairs of RMS velocity picks at consecutive reflectors into the interval velocity of the layer between them. Assumes horizontal, laterally homogeneous, isotropic layers. The most widely used method for deriving interval velocities from surface seismic data.
Depth Conversion
The process of transforming seismic reflection data from the time domain (TWT in ms) to the depth domain (metres below surface), using a velocity model. Essential for comparing seismic interpretations with well data and for calculating true structural depths for drilling.
Normal Moveout NMO
The increase in reflection arrival time as the distance (offset) between seismic source and receiver increases. NMO correction flattens reflections in a CMP gather; the velocity that achieves this is the NMO velocity, approximately equal to Vrms for flat, shallow reflectors.
Check-shot Survey
A borehole seismic measurement in which a surface source is fired while receivers are positioned at known depths in the well. Provides direct one-way travel time measurements that yield accurate interval velocities and a reliable time–depth (T–Z) function for seismic calibration.
Vertical Seismic Profile VSP
A comprehensive borehole seismic acquisition method that records both downgoing and upgoing wavefields. Provides high-resolution velocity information around the wellbore and improved subsurface imaging near the well. More detailed than a check-shot survey.
Uncertainty Propagation
The mathematical process of carrying input measurement uncertainties through a series of calculations to estimate the resulting uncertainty in the output. In SeisDepth, velocity uncertainty at each layer accumulates through the cumulative depth sum, producing absolute depth error bounds (±m) and a percentage error for every converted horizon.
P-wave VP
A compressional seismic wave in which particle motion is parallel to the direction of wave propagation. P-waves travel faster than S-waves and are the primary wave type used in conventional seismic reflection exploration. All velocities in SeisDepth are P-wave velocities.
Seismic Horizon
A continuous seismic reflection visible on a seismic section, corresponding to a geological boundary (typically a lithological or fluid contact) at which acoustic impedance changes. Horizons are interpreted in TWT and converted to depth using a velocity model.
Velocity Semblance
A measure of the coherence of a seismic reflection across a range of offsets, computed as a function of velocity and TWT. Displayed as a semblance panel, it is used to pick Vrms values in seismic processing software. High semblance (bright colour) at a given velocity–TWT point indicates that velocity is the best NMO correction for that reflection.
SEG-Y
The standard file format for storing and exchanging seismic data, maintained by the Society of Exploration Geophysicists (SEG). Contains trace header metadata and amplitude samples. SEG-Y import/export support in SeisDepth is planned for a future release.
Acoustic Impedance
The product of a rock's density and its P-wave velocity (Z = ρ × VP). Seismic reflections arise at boundaries where acoustic impedance changes. A large impedance contrast produces a strong reflection; a small contrast produces a weak one.
Velocity Analysis / Velocity Picking
The process of determining Vrms values from seismic CMP gathers by identifying the velocity that best flattens each reflection event after NMO correction. The resulting set of TWT–Vrms pairs is the primary input to the SeisDepth Dix calculator.

About the Author

SeisDepth was conceived and developed by Yasir Shahzad as a practical open-access tool to support seismic-to-depth conversion workflows in academic and professional petroleum geoscience. It is entirely normal — and indeed recommended — practice in scientific software documentation to introduce the researcher behind the tool, as it establishes scientific credibility, research context, and a point of contact for the community.

Yasir Shahzad
Yasir Shahzad
PhD Researcher in Geology  ·  Petroleum Geoscientist
📍 Department of Earth Sciences, University of Coimbra, Portugal
11
Publications
7
Citations
220
Reads
MSc
Petroleum & Energy Eng.

Yasir Shahzad is a PhD student in Geology at the University of Coimbra (Portugal), where he is affiliated with the Department of Earth Sciences. He holds a Master of Engineering in Petroleum and Energy and brings extensive research experience in frontier basin exploration, seismic stratigraphy, and sub-volcanic petroleum systems. His doctoral research focuses on the deep offshore Indus Basin, where he applies 2D seismic reflection data to unravel Cretaceous stratigraphy, structural architecture, and hydrocarbon play systems beneath volcanic sequences. SeisDepth was created to support this line of work — providing a fast, transparent, and well-documented TWT-to-depth conversion tool grounded in the same equations used in professional seismic interpretation.

Research Expertise
Petroleum Geology Seismic Stratigraphy Sedimentary Basins Exploration Geology Structural Geology Reservoir Engineering Sedimentology Geological Mapping Tectonics Field Geology Offshore Basins Sub-volcanic Systems
Selected Publications
Upper Cretaceous Seismic Stratigraphy and Magma-Enhanced Petroleum System of the Offshore Indus Basin
Basin Research 2026 Shahzad Y., Pereira R., Pereira I., Pena Reis R.
Pioneering Depths: Unravelling Exploration for the Unconventional Resources in the Cretaceous Reservoirs in the Deep Offshore Indus Basin
Conference Paper 2024 Shahzad Y., Pereira R., Pereira I., Pena dos Reis R.
Play-Based Exploration of Unconventional Gas in the Pre-Deccan Cretaceous Sequence of the Offshore Indus Basin, Pakistan
Conference Paper 2023 Pereira R., Shahzad Y.
Hypothetical Approach to Estimate Recovery of Shale Gas in Lower Cretaceous Sember Formation of Lower Indus Basin, Pakistan
AAPG Bulletin 2015 Shahzad Y. et al.
🌊
Why SeisDepth was built
Yasir's research on the deep offshore Indus Basin requires frequent TWT–depth conversion of 2D seismic profiles across a complex, sub-volcanic petroleum system. SeisDepth was developed to make this process fast, transparent, and reproducible — with every equation visible and every uncertainty quantified. The tool reflects the same methodological rigour that underlies his published research in seismic stratigraphy and frontier basin exploration.