Widgets

Propipe Flange Finder

Select diameter, class and schedule to display welding neck flange data, blind flange data, stud bolts and nuts. All values are shown in mm and kg.

Pipe Dimensions Catalogue

ASME B36.10 style pipe dimensions from 2″ to 48″ for oil & gas applications

Note: This widget is a dimensional catalogue for carbon/alloy steel pipe. OD stays constant for each NPS, while wall thickness, inside diameter and weight vary by schedule.
#propipe-pressure-widget-v2 { --red: #dc2626; --red-light: #ef4444; --red-dark: #7f1d1d; --bg: #fff7f7; --card: #ffffff; --text: #111827; --muted: #6b7280; --border: rgba(127, 29, 29, 0.12); --soft-red: rgba(220, 38, 38, 0.08); --soft-red-strong: rgba(220, 38, 38, 0.14); font-family: Arial, sans-serif; color: var(--text); background: radial-gradient(circle at top left, #fee2e2 0, #fff7f7 38%, #ffffff 80%); padding: 28px; border-radius: 28px; box-sizing: border-box; } #propipe-pressure-widget-v2 * { box-sizing: border-box; } #propipe-pressure-widget-v2 .pp-shell { max-width: 1180px; margin: 0 auto; } #propipe-pressure-widget-v2 .pp-hero { position: relative; overflow: hidden; background: linear-gradient(135deg, #b91c1c, #dc2626 48%, #7f1d1d); color: white; border-radius: 32px; padding: 32px; margin-bottom: 24px; box-shadow: 0 24px 60px rgba(127, 29, 29, 0.28); } #propipe-pressure-widget-v2 .pp-hero:before { content: ""; position: absolute; right: -60px; top: -70px; width: 260px; height: 260px; border-radius: 999px; background: rgba(255, 255, 255, 0.16); filter: blur(32px); } #propipe-pressure-widget-v2 .pp-hero-inner { position: relative; z-index: 1; display: flex; align-items: flex-start; justify-content: space-between; gap: 24px; } #propipe-pressure-widget-v2 .pp-eyebrow { display: inline-flex; align-items: center; gap: 8px; padding: 7px 12px; border-radius: 999px; background: rgba(255, 255, 255, 0.16); border: 1px solid rgba(255, 255, 255, 0.24); font-size: 11px; font-weight: 800; letter-spacing: 0.16em; text-transform: uppercase; margin-bottom: 14px; } #propipe-pressure-widget-v2 .pp-dot { width: 8px; height: 8px; border-radius: 999px; background: #ffffff; box-shadow: 0 0 16px rgba(255, 255, 255, 0.9); } #propipe-pressure-widget-v2 h2, #propipe-pressure-widget-v2 h3, #propipe-pressure-widget-v2 p { margin-top: 0; } #propipe-pressure-widget-v2 .pp-kicker { color: #fee2e2; font-size: 14px; font-weight: 700; margin-bottom: 6px; } #propipe-pressure-widget-v2 .pp-title { color: #ffffff; font-size: clamp(28px, 4vw, 42px); line-height: 1.05; margin: 0 0 14px; max-width: 760px; font-weight: 800; letter-spacing: -0.04em; } #propipe-pressure-widget-v2 .pp-description { color: #fee2e2; max-width: 760px; margin: 0; line-height: 1.6; font-size: 15px; } #propipe-pressure-widget-v2 .pp-print-btn, #propipe-pressure-widget-v2 .pp-toggle-btn { border: 0; cursor: pointer; font-family: inherit; } #propipe-pressure-widget-v2 .pp-print-btn { background: #ffffff; color: var(--red); font-weight: 800; padding: 13px 20px; border-radius: 18px; white-space: nowrap; box-shadow: 0 18px 34px rgba(127, 29, 29, 0.22); } #propipe-pressure-widget-v2 .pp-layout { display: grid; grid-template-columns: minmax(0, 1.2fr) minmax(320px, 0.8fr); gap: 24px; } #propipe-pressure-widget-v2 .pp-stack { display: grid; gap: 24px; } #propipe-pressure-widget-v2 .pp-card { background: var(--card); border: 1px solid var(--border); border-radius: 28px; padding: 24px; box-shadow: 0 18px 45px rgba(127, 29, 29, 0.09); } #propipe-pressure-widget-v2 .pp-card-head, #propipe-pressure-widget-v2 .pp-status-row { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; margin-bottom: 20px; } #propipe-pressure-widget-v2 .pp-card-title { color: var(--text); font-size: 19px; font-weight: 800; letter-spacing: -0.02em; margin: 0; } #propipe-pressure-widget-v2 .pp-pill { display: inline-flex; border: 1px solid rgba(220, 38, 38, 0.2); background: var(--soft-red); color: var(--red-dark); border-radius: 999px; padding: 6px 12px; font-size: 12px; font-weight: 800; white-space: nowrap; } #propipe-pressure-widget-v2 .pp-grid-3 { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; } #propipe-pressure-widget-v2 .pp-grid-2 { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; } #propipe-pressure-widget-v2 .pp-field { display: grid; gap: 8px; } #propipe-pressure-widget-v2 label { color: #374151; font-size: 13px; font-weight: 700; } #propipe-pressure-widget-v2 input, #propipe-pressure-widget-v2 select { width: 100%; height: 42px; border-radius: 14px; border: 1px solid rgba(127, 29, 29, 0.16); background: #ffffff; color: var(--text); padding: 0 12px; font: inherit; font-size: 14px; outline: none; transition: border 0.2s ease, box-shadow 0.2s ease; } #propipe-pressure-widget-v2 input:focus, #propipe-pressure-widget-v2 select:focus { border-color: var(--red); box-shadow: 0 0 0 4px rgba(220, 38, 38, 0.14); } #propipe-pressure-widget-v2 input:disabled { opacity: 0.6; background: #f3f4f6; } #propipe-pressure-widget-v2 .pp-help { color: var(--muted); font-size: 12px; margin: 0; } #propipe-pressure-widget-v2 .pp-inline-grid { display: grid; grid-template-columns: 1fr 96px; gap: 8px; } #propipe-pressure-widget-v2 .pp-temp-grid { display: grid; grid-template-columns: 96px 1fr; gap: 8px; } #propipe-pressure-widget-v2 .pp-toggle-btn { background: var(--soft-red); color: var(--red-dark); border-radius: 999px; padding: 8px 12px; font-size: 13px; font-weight: 800; } #propipe-pressure-widget-v2 .pp-advanced { margin-top: 22px; padding: 18px; border-radius: 24px; border: 1px solid rgba(220, 38, 38, 0.16); background: var(--soft-red); } #propipe-pressure-widget-v2 .pp-advanced-title { margin: 0 0 16px; color: var(--text); font-size: 16px; font-weight: 800; } #propipe-pressure-widget-v2 .pp-subtitle { color: var(--muted); margin: 4px 0 0; font-size: 14px; } #propipe-pressure-widget-v2 .pp-status { display: inline-flex; align-items: center; justify-content: center; min-width: 92px; border-radius: 999px; color: #ffffff; padding: 7px 12px; font-size: 12px; font-weight: 900; } #propipe-pressure-widget-v2 .pp-status.ok { background: #10b981; } #propipe-pressure-widget-v2 .pp-status.fail { background: var(--red); } #propipe-pressure-widget-v2 .pp-result-main { display: grid; gap: 12px; margin-bottom: 16px; } #propipe-pressure-widget-v2 .pp-result-box { border-radius: 26px; padding: 20px; border: 1px solid rgba(220, 38, 38, 0.18); } #propipe-pressure-widget-v2 .pp-result-box.primary { color: #ffffff; background: linear-gradient(135deg, #dc2626, #991b1b); box-shadow: 0 18px 36px rgba(127, 29, 29, 0.24); } #propipe-pressure-widget-v2 .pp-result-box.secondary { background: var(--soft-red-strong); color: var(--text); } #propipe-pressure-widget-v2 .pp-result-label { font-size: 14px; margin: 0 0 6px; opacity: 0.82; } #propipe-pressure-widget-v2 .pp-result-value { font-size: 40px; line-height: 1; font-weight: 900; letter-spacing: -0.03em; margin: 0; } #propipe-pressure-widget-v2 .pp-result-value.small { font-size: 30px; } #propipe-pressure-widget-v2 .pp-metrics { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; } #propipe-pressure-widget-v2 .pp-metric { border: 1px solid rgba(127, 29, 29, 0.12); background: #fffafa; border-radius: 18px; padding: 14px; } #propipe-pressure-widget-v2 .pp-metric-label { color: #9ca3af; font-size: 11px; font-weight: 800; letter-spacing: 0.08em; text-transform: uppercase; margin: 0 0 6px; } #propipe-pressure-widget-v2 .pp-metric-value { color: var(--text); font-size: 15px; font-weight: 900; margin: 0; } #propipe-pressure-widget-v2 .pp-positive { color: #059669; } #propipe-pressure-widget-v2 .pp-negative { color: var(--red); } #propipe-pressure-widget-v2 .pp-warning { display: none; margin-top: 16px; border: 1px solid rgba(245, 158, 11, 0.28); background: rgba(245, 158, 11, 0.1); color: #92400e; border-radius: 18px; padding: 16px; font-size: 13px; line-height: 1.5; } #propipe-pressure-widget-v2 .pp-warning strong { display: block; margin-bottom: 8px; } #propipe-pressure-widget-v2 .pp-warning ul { margin: 0; padding-left: 18px; } #propipe-pressure-widget-v2 .pp-basis-box { border-radius: 20px; background: #fffafa; border: 1px solid rgba(127, 29, 29, 0.12); padding: 16px; color: #4b5563; font-size: 14px; line-height: 1.55; margin-bottom: 12px; } #propipe-pressure-widget-v2 .pp-basis-box p { margin: 0 0 6px; } #propipe-pressure-widget-v2 .pp-basis-box p:last-child { margin-bottom: 0; } #propipe-pressure-widget-v2 .pp-basis-box strong { color: var(--text); } #propipe-pressure-widget-v2 .pp-note { color: var(--muted); font-size: 12px; line-height: 1.55; margin: 0; } @media (max-width: 980px) { #propipe-pressure-widget-v2 .pp-layout { grid-template-columns: 1fr; } } @media (max-width: 720px) { #propipe-pressure-widget-v2 { padding: 18px; } #propipe-pressure-widget-v2 .pp-hero-inner, #propipe-pressure-widget-v2 .pp-card-head, #propipe-pressure-widget-v2 .pp-status-row { flex-direction: column; } #propipe-pressure-widget-v2 .pp-grid-3, #propipe-pressure-widget-v2 .pp-grid-2, #propipe-pressure-widget-v2 .pp-metrics { grid-template-columns: 1fr; } }
Propipe Engineering Widget

ASME Internal Pressure Check

Fitting / Flange Minimum Wall Thickness Calculator

Calculate minimum required wall thickness, corrosion allowance verification, utilization, available margin and maximum allowable pressure.

Project information

Client data

Design inputs

ASME B31.8ASME B31.4ASME B31.3Custom
FlangeReducerTee / branch connectionElbowCustom fitting
ASTM A105ASTM A234 WPBAPI 5L Gr. BAPI 5L X42API 5L X52Custom

Forged carbon steel

barN/mm²

Advanced factors

ManualAuto

Current T = 1.000

Verification result

ASME B31.8 · Flange

VERIFIED

Minimum wall thickness, tb

1.62 mm

Required thickness including corrosion allowance

1.62 mm

Margin

4.40 mm

Utilization

26.9%

MAOP

189.58 bar

dc / D

0.892

P converted

5.100 N/mm²

T factor

1.000

Input checks

    Calculation basis

    tb = (P × D) / (2 × S × F × E × T)

    Verification: tb + Ca ≤ Tb

    Pressure conversion: 1 bar = 0.1 N/mm²

    Project: - · Std PROPIPE · PLF-0430-00 · Rev. 0

    Description: 4" 300# LS Flange

    Material: ASTM A105

    Note: This widget reproduces the internal pressure wall-thickness check from the reference calculation sheet. Final engineering approval should confirm all code-specific factors, material allowables and project requirements.

    setTimeout(function () { var root = document.getElementById("propipe-pressure-widget-v2"); if (!root) return; var materials = { "ASTM A105": { yieldStrength: 250, note: "Forged carbon steel" }, "ASTM A234 WPB": { yieldStrength: 240, note: "Wrought carbon steel fitting" }, "API 5L Gr. B": { yieldStrength: 245, note: "Line pipe" }, "API 5L X42": { yieldStrength: 290, note: "Line pipe" }, "API 5L X52": { yieldStrength: 360, note: "Line pipe" }, "Custom": { yieldStrength: 250, note: "User defined" } }; var codeDefaults = { "ASME B31.8": { designFactor: 0.72, jointEfficiencyFactor: 1, temperatureFactor: 1 }, "ASME B31.4": { designFactor: 0.72, jointEfficiencyFactor: 1, temperatureFactor: 1 }, "ASME B31.3": { designFactor: 1, jointEfficiencyFactor: 1, temperatureFactor: 1 }, "Custom": { designFactor: 0.72, jointEfficiencyFactor: 1, temperatureFactor: 1 } }; function el(id) { return document.getElementById(id); } function value(id) { return el(id).value; } function num(id) { return Number(value(id)); } function fmt(number, digits) { return Number.isFinite(number) ? number.toFixed(digits) : "—"; } function setText(id, text) { if (el(id)) el(id).textContent = text; } function getTemperatureFactor(tempC) { var t = Number(tempC); if (!Number.isFinite(t)) return 1; if (t <= 120) return 1; if (t <= 150) return 0.967; if (t <= 180) return 0.933; if (t 0 ? (pressureNmm2 * outsideDiameter) / denominator : NaN; var requiredWithAllowance = minimumWall + corrosionAllowance; var margin = availableWall - requiredWithAllowance; var utilization = availableWall > 0 ? (requiredWithAllowance / availableWall) * 100 : NaN; var maopNmm2 = outsideDiameter > 0 ? (2 * strength * designFactor * jointEfficiency * tempFactor * Math.max(availableWall - corrosionAllowance, 0)) / outsideDiameter : NaN; var maopBar = maopNmm2 / 0.1; var isVerified = availableWall >= requiredWithAllowance; var diameterRatio = outsideDiameter > 0 ? internalDiameter / outsideDiameter : NaN; setText("pp2-current-temp-factor", fmt(tempFactor, 3)); setText("pp2-result-code", value("pp2-design-code")); setText("pp2-result-fitting", value("pp2-fitting-type")); setText("pp2-min-wall", fmt(minimumWall, 2)); setText("pp2-required-wall", fmt(requiredWithAllowance, 2)); setText("pp2-margin", fmt(margin, 2) + " mm"); setText("pp2-utilization", fmt(utilization, 1) + "%"); setText("pp2-maop", fmt(maopBar, 2) + " bar"); setText("pp2-ratio", fmt(diameterRatio, 3)); setText("pp2-pressure-converted", fmt(pressureNmm2, 3) + " N/mm²"); setText("pp2-temp-factor-result", fmt(tempFactor, 3)); setText("pp2-summary-client", value("pp2-client")); setText("pp2-summary-ref", value("pp2-propipe-reference")); setText("pp2-summary-drawing", value("pp2-drawing-number")); setText("pp2-summary-rev", value("pp2-revision")); setText("pp2-summary-description", value("pp2-description")); setText("pp2-summary-material", value("pp2-material")); var status = el("pp2-status"); status.textContent = isVerified ? "VERIFIED" : "NOT VERIFIED"; status.className = "pp-status " + (isVerified ? "ok" : "fail"); el("pp2-margin").className = "pp-metric-value " + (margin >= 0 ? "pp-positive" : "pp-negative"); el("pp2-utilization").className = "pp-metric-value " + (utilization <= 100 ? "pp-positive" : "pp-negative"); var warnings = []; if (pressureNmm2 <= 0) warnings.push("Design pressure must be greater than zero."); if (outsideDiameter <= 0) warnings.push("Main pipe outside diameter must be greater than zero."); if (strength <= 0) warnings.push("Specified yield strength must be greater than zero."); if (designFactor <= 0 || jointEfficiency <= 0 || tempFactor <= 0) warnings.push("F, E and T factors must be greater than zero."); if (availableWall outsideDiameter) warnings.push("Branch/internal diameter is larger than the main pipe outside diameter. Please verify inputs."); var warningBox = el("pp2-warning-box"); var warningList = el("pp2-warning-list"); warningList.innerHTML = ""; warnings.forEach(function (warning) { var li = document.createElement("li"); li.textContent = warning; warningList.appendChild(li); }); warningBox.style.display = warnings.length ? "block" : "none"; } el("pp2-design-code").onchange = function () { var defaults = codeDefaults[value("pp2-design-code")] || codeDefaults.Custom; el("pp2-design-factor").value = defaults.designFactor; el("pp2-joint-efficiency").value = defaults.jointEfficiencyFactor; el("pp2-temperature-factor").value = defaults.temperatureFactor; calculate(); }; el("pp2-material").onchange = function () { var selected = value("pp2-material"); var data = materials[selected] || materials.Custom; setText("pp2-material-note", data.note); if (selected !== "Custom") el("pp2-strength").value = data.yieldStrength; calculate(); }; el("pp2-toggle-advanced").onclick = function () { var panel = el("pp2-advanced-panel"); var isHidden = panel.style.display === "none"; panel.style.display = isHidden ? "block" : "none"; this.textContent = isHidden ? "Hide advanced" : "Show advanced"; }; el("pp2-print-report").onclick = function () { window.print(); }; var controls = root.querySelectorAll("input, select"); for (var i = 0; i < controls.length; i++) { controls[i].oninput = calculate; controls[i].onchange = calculate; } calculate(); }, 500);