{"id":24950,"date":"2026-10-22T02:20:04","date_gmt":"2026-10-22T02:20:04","guid":{"rendered":"https:\/\/www.mechstream.com\/?p=24950"},"modified":"2026-10-22T02:20:09","modified_gmt":"2026-10-22T02:20:09","slug":"hb-%e2%86%94-hrc-%e2%86%94-hv-hardness-conversion-calculator","status":"publish","type":"post","link":"https:\/\/www.mechstream.com\/ar\/hb-%e2%86%94-hrc-%e2%86%94-hv-hardness-conversion-calculator\/","title":{"rendered":"HB \u2194 HRC \u2194 HV Hardness Conversion Calculator"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">The HB \u2194 HRC \u2194 HV Hardness Conversion Calculator is a practical online tool designed to help engineers, manufacturers, and quality control professionals estimate hardness values between Brinell (HB), Rockwell C (HRC), and Vickers (HV) scales. Whether you need to convert HB to HRC, HRC to HV, or HV to HB, this calculator provides quick, reference-based estimates for metalworking, material testing, and heat treatment applications. Simplify hardness comparisons, improve material evaluation, and support informed engineering decisions with this easy-to-use hardness conversion tool. Results are approximate and may vary depending on material properties and testing conditions.<\/p>\n\n\n\n<!-- HB \u2194 HRC \u2194 HV Hardness Conversion Calculator (calculator only) - WordPress Custom HTML \/ Elementor HTML snippet. All CSS is scoped to #hcc-calculator. Vanilla JS, no external libraries, no external requests. -->\n<div id=\"hcc-calculator\" class=\"hcc-root\" data-hcc-widget=\"hardness-conversion\">\n<style>\n#hcc-calculator,#hcc-calculator *,#hcc-calculator *::before,#hcc-calculator *::after{box-sizing:border-box}\n#hcc-calculator{\n  --hcc-bg:#f5f6f8;--hcc-card:#ffffff;--hcc-navy:#0b2545;--hcc-text:#1c2430;--hcc-muted:#566173;--hcc-soft:#7a8494;\n  --hcc-line:#d3d8e0;--hcc-line-soft:#e6e9ef;--hcc-accent:#1463d8;--hcc-accent-dark:#0e4cab;--hcc-accent-soft:#eaf2fd;--hcc-accent-line:#c6dbf8;\n  --hcc-ok:#0a7c42;--hcc-ok-soft:#e6f4ec;--hcc-warn:#8a5a00;--hcc-warn-soft:#fff6e0;--hcc-warn-line:#f1dca6;--hcc-err:#c4291c;--hcc-err-soft:#fdecea;\n  width:100%;max-width:980px;margin:24px auto;padding:32px;background:var(--hcc-bg);color:var(--hcc-text);\n  border-radius:22px;font-family:-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,\"Helvetica Neue\",Arial,sans-serif;\n  font-size:16px;line-height:1.55;-webkit-font-smoothing:antialiased;text-align:left;overflow-wrap:break-word\n}\n#hcc-calculator p,#hcc-calculator ul,#hcc-calculator ol,#hcc-calculator li,#hcc-calculator h2,#hcc-calculator h3,#hcc-calculator table,#hcc-calculator th,#hcc-calculator td,#hcc-calculator details,#hcc-calculator summary,#hcc-calculator dl,#hcc-calculator dt,#hcc-calculator dd,#hcc-calculator fieldset{margin:0;padding:0;border:0;background:none;text-transform:none;letter-spacing:normal;font-family:inherit;color:inherit;box-shadow:none}\n#hcc-calculator [hidden],#hcc-calculator .hcc-hide{display:none!important}\n#hcc-calculator .hcc-sr{position:absolute!important;width:1px!important;height:1px!important;overflow:hidden!important;clip:rect(0 0 0 0)!important;white-space:nowrap!important}\n#hcc-calculator .hcc-stack{display:grid;grid-template-columns:minmax(0,1fr);gap:18px}\n#hcc-calculator .hcc-card{background:var(--hcc-card);border:1px solid var(--hcc-line-soft);border-radius:18px;padding:24px;box-shadow:0 1px 3px rgba(11,37,69,.06);min-width:0}\n#hcc-calculator .hcc-card-title{font-size:1.1rem;font-weight:650;line-height:1.25;color:var(--hcc-navy);margin:0 0 4px;display:flex;align-items:center;gap:10px}\n#hcc-calculator .hcc-step{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;flex:0 0 24px;border-radius:50%;background:var(--hcc-accent-soft);color:var(--hcc-accent);font-size:.8rem;font-weight:700}\n#hcc-calculator .hcc-card-note{color:var(--hcc-muted);font-size:.9rem;margin-bottom:18px}\n#hcc-calculator .hcc-fields{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}\n#hcc-calculator .hcc-field{min-width:0}\n#hcc-calculator .hcc-label{display:block;font-size:.9rem;font-weight:600;color:var(--hcc-navy);margin:0 0 6px}\n#hcc-calculator .hcc-hint{display:block;color:var(--hcc-soft);font-size:.8rem;margin-top:5px}\n#hcc-calculator .hcc-error{display:block;color:var(--hcc-err);font-size:.82rem;margin-top:5px}\n#hcc-calculator .hcc-error:empty{display:none}\n#hcc-calculator input[type=number],#hcc-calculator select{\n  -webkit-appearance:none;appearance:none;width:100%;min-height:48px;height:auto;max-width:none;margin:0;padding:10px 14px;font:inherit;font-size:16px;line-height:1.3;\n  color:var(--hcc-text);background-color:#fff;border:1px solid var(--hcc-line);border-radius:12px;box-shadow:none;outline:none;transition:border-color .15s,box-shadow .15s\n}\n#hcc-calculator input[type=number]{-moz-appearance:textfield;font-variant-numeric:tabular-nums}\n#hcc-calculator select{padding-right:34px;background-image:linear-gradient(45deg,transparent 50%,#5f6b7d 50%),linear-gradient(135deg,#5f6b7d 50%,transparent 50%);background-position:calc(100% - 18px) 21px,calc(100% - 13px) 21px;background-size:5px 5px,5px 5px;background-repeat:no-repeat;cursor:pointer}\n#hcc-calculator input[type=number]:focus,#hcc-calculator select:focus{border-color:var(--hcc-accent);box-shadow:0 0 0 4px rgba(20,99,216,.18)}\n#hcc-calculator .hcc-invalid{border-color:var(--hcc-err)!important;box-shadow:0 0 0 3px rgba(196,41,28,.12)!important}\n#hcc-calculator .hcc-actions{display:flex!important;flex-wrap:wrap;gap:10px;margin-top:18px;align-items:center}\n#hcc-calculator .hcc-btn{-webkit-appearance:none;appearance:none;display:inline-flex!important;align-items:center;justify-content:center;gap:6px;min-height:46px;width:auto;margin:0;padding:10px 20px;border-radius:999px;border:1px solid var(--hcc-line);background:#fff;color:var(--hcc-navy);font:inherit;font-size:.95rem;font-weight:600;line-height:1.2;cursor:pointer;text-decoration:none;text-transform:none;letter-spacing:normal;box-shadow:none;float:none;transition:background .15s,border-color .15s,color .15s}\n#hcc-calculator .hcc-btn:hover{background:#f2f5f9;border-color:#bfc7d3;color:var(--hcc-navy)}\n#hcc-calculator .hcc-btn-primary{background:var(--hcc-accent);border-color:var(--hcc-accent);color:#fff;min-width:150px}\n#hcc-calculator .hcc-btn-primary:hover{background:var(--hcc-accent-dark);border-color:var(--hcc-accent-dark);color:#fff}\n#hcc-calculator .hcc-btn:focus-visible{outline:3px solid rgba(20,99,216,.35);outline-offset:2px}\n#hcc-calculator .hcc-btn[disabled]{opacity:.5;cursor:not-allowed}\n#hcc-calculator .hcc-notice{margin-top:16px;padding:12px 14px;border-radius:12px;font-size:.9rem;background:var(--hcc-warn-soft);border:1px solid var(--hcc-warn-line);color:#5c3d00}\n#hcc-calculator .hcc-notice.hcc-is-err{background:var(--hcc-err-soft);border-color:#f3c5c0;color:#8d1d13}\n#hcc-calculator .hcc-notice:empty{display:none}\n#hcc-calculator .hcc-dataset{margin-top:16px;background:#f8f9fb;border:1px solid var(--hcc-line-soft);border-radius:14px;padding:12px 14px;font-size:.86rem;color:var(--hcc-muted)}\n#hcc-calculator .hcc-dataset dl{display:grid;grid-template-columns:auto minmax(0,1fr);gap:4px 12px}\n#hcc-calculator .hcc-dataset dt{font-weight:600;color:var(--hcc-navy)}\n#hcc-calculator .hcc-dataset dd{overflow-wrap:anywhere}\n#hcc-calculator .hcc-results{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}\n#hcc-calculator .hcc-res{position:relative;background:#fff;border:1px solid var(--hcc-line-soft);border-radius:16px;padding:16px 18px 18px;min-width:0;display:flex;flex-direction:column;gap:4px}\n#hcc-calculator .hcc-res.hcc-is-input{background:var(--hcc-accent-soft);border:2px solid var(--hcc-accent);padding:15px 17px 17px}\n#hcc-calculator .hcc-res.hcc-is-na{background:#fafbfc}\n#hcc-calculator .hcc-res-top{display:flex;justify-content:space-between;align-items:flex-start;gap:8px}\n#hcc-calculator .hcc-res-name{font-size:.88rem;font-weight:600;color:var(--hcc-navy);line-height:1.3}\n#hcc-calculator .hcc-abbr{flex:0 0 auto;font-size:.74rem;font-weight:700;padding:2px 8px;border-radius:6px;background:#eef1f5;color:var(--hcc-navy);letter-spacing:.02em}\n#hcc-calculator .hcc-is-input .hcc-abbr{background:var(--hcc-accent);color:#fff}\n#hcc-calculator .hcc-res-val{font-size:clamp(2rem,4.6vw,2.6rem);font-weight:700;letter-spacing:-.02em;line-height:1.1;margin-top:6px;font-variant-numeric:tabular-nums;color:var(--hcc-navy);overflow-wrap:anywhere}\n#hcc-calculator .hcc-res-val small{font-size:.42em;font-weight:600;color:var(--hcc-muted);letter-spacing:0;margin-left:5px}\n#hcc-calculator .hcc-is-na .hcc-res-val{color:#a3abb7}\n#hcc-calculator .hcc-badges{display:flex;flex-wrap:wrap;gap:6px;margin-top:4px}\n#hcc-calculator .hcc-badge{display:inline-block;padding:2px 9px;border-radius:999px;font-size:.72rem;font-weight:700;letter-spacing:.02em;line-height:1.6}\n#hcc-calculator .hcc-badge-input{background:var(--hcc-accent);color:#fff}\n#hcc-calculator .hcc-badge-est{background:var(--hcc-ok-soft);color:var(--hcc-ok)}\n#hcc-calculator .hcc-badge-na{background:#eceff3;color:#5a6474}\n#hcc-calculator .hcc-badge-warn{background:#fdebb8;color:var(--hcc-warn)}\n#hcc-calculator .hcc-badge-wait{background:#eceff3;color:#6b7585}\n#hcc-calculator .hcc-res-note{font-size:.8rem;color:var(--hcc-muted);margin-top:4px}\n#hcc-calculator .hcc-res-note:empty{display:none}\n#hcc-calculator .hcc-disclaimer{margin-top:16px;font-size:.84rem;color:var(--hcc-muted);border-left:3px solid var(--hcc-line);padding:2px 0 2px 12px}\n#hcc-calculator .hcc-source{margin-top:10px;font-size:.82rem;color:var(--hcc-muted)}\n#hcc-calculator .hcc-source strong{color:var(--hcc-navy)}\n@media (max-width:820px){\n  #hcc-calculator .hcc-fields{grid-template-columns:repeat(2,minmax(0,1fr))}\n  #hcc-calculator .hcc-fields .hcc-field-value{grid-column:1 \/ -1}\n  #hcc-calculator .hcc-results{grid-template-columns:minmax(0,1fr)}\n}\n@media (max-width:600px){\n  #hcc-calculator{padding:18px 16px;border-radius:16px;margin:12px auto}\n  #hcc-calculator .hcc-card{padding:18px 16px;border-radius:16px}\n  #hcc-calculator .hcc-fields{grid-template-columns:minmax(0,1fr)}\n  #hcc-calculator .hcc-btn{flex:1 1 calc(50% - 5px);padding:10px 12px;white-space:nowrap}\n  #hcc-calculator .hcc-btn-primary{flex:1 1 100%}\n}\n@media (prefers-reduced-motion:reduce){#hcc-calculator *{transition:none!important}}\n<\/style>\n<div class=\"hcc-stack\">\n<form class=\"hcc-form hcc-card\" novalidate onsubmit=\"return false;\" aria-labelledby=\"hcc-h-in\">\n<div class=\"hcc-card-title\" id=\"hcc-h-in\"><span class=\"hcc-step\" aria-hidden=\"true\">1<\/span>Enter a Hardness Value<\/div>\n<p class=\"hcc-card-note\">Pick the material and the scale you measured, then enter the value and click Calculate.<\/p>\n<div class=\"hcc-fields\">\n<div class=\"hcc-field\">\n<label class=\"hcc-label\" for=\"hcc-material\">Material Type<\/label>\n<select id=\"hcc-material\" name=\"material\">\n<option value=\"carbon\" selected>Carbon Steel<\/option>\n<option value=\"alloy\">Alloy Steel<\/option>\n<option value=\"stainless\">Stainless Steel<\/option>\n<option value=\"tool\">Tool Steel<\/option>\n<option value=\"other\">Other Metals<\/option>\n<\/select>\n<\/div>\n<div class=\"hcc-field\">\n<label class=\"hcc-label\" for=\"hcc-from\">Convert From<\/label>\n<select id=\"hcc-from\" name=\"from\">\n<option value=\"HB\">Brinell Hardness (HB \/ HBW)<\/option>\n<option value=\"HRC\" selected>Rockwell Hardness C (HRC)<\/option>\n<option value=\"HV\">Vickers Hardness (HV)<\/option>\n<\/select>\n<\/div>\n<div class=\"hcc-field hcc-field-value\">\n<label class=\"hcc-label\" for=\"hcc-value\">Hardness Value <span id=\"hcc-value-unit\">(HRC)<\/span><\/label>\n<input id=\"hcc-value\" name=\"value\" type=\"number\" inputmode=\"decimal\" step=\"any\" min=\"0\" placeholder=\"e.g. 45\" autocomplete=\"off\" aria-describedby=\"hcc-value-hint hcc-value-err\">\n<span class=\"hcc-hint\" id=\"hcc-value-hint\">Reference range: &#8212;<\/span>\n<span class=\"hcc-error\" id=\"hcc-value-err\" role=\"alert\"><\/span>\n<\/div>\n<\/div>\n<div class=\"hcc-actions\">\n<button type=\"button\" class=\"hcc-btn hcc-btn-primary\" id=\"hcc-convert\">Calculate<\/button>\n<button type=\"button\" class=\"hcc-btn\" id=\"hcc-swap\" aria-label=\"Swap input scale to the next hardness scale\">&#8644; Swap Scale<\/button>\n<button type=\"button\" class=\"hcc-btn\" id=\"hcc-copy\" aria-label=\"Copy conversion results to clipboard\">Copy Results<\/button>\n<button type=\"button\" class=\"hcc-btn\" id=\"hcc-reset\" aria-label=\"Reset calculator\">Reset<\/button>\n<\/div>\n<p class=\"hcc-sr\" id=\"hcc-live\" aria-live=\"polite\"><\/p>\n<p class=\"hcc-notice\" id=\"hcc-notice\" role=\"status\" aria-live=\"polite\"><\/p>\n<div class=\"hcc-dataset\" aria-live=\"polite\">\n<dl>\n<dt>Reference dataset<\/dt><dd id=\"hcc-ds-name\">&#8212;<\/dd>\n<dt>Material group<\/dt><dd id=\"hcc-ds-group\">&#8212;<\/dd>\n<dt>Limitations<\/dt><dd id=\"hcc-ds-limits\">&#8212;<\/dd>\n<\/dl>\n<\/div>\n<\/form>\n<section class=\"hcc-card hcc-hide\" id=\"hcc-results-card\" aria-labelledby=\"hcc-h-res\" tabindex=\"-1\" style=\"display:none\" hidden>\n<div class=\"hcc-card-title\" id=\"hcc-h-res\"><span class=\"hcc-step\" aria-hidden=\"true\">2<\/span>Conversion Results<\/div>\n<p class=\"hcc-card-note\">The highlighted card is your input. The other two are estimated equivalents from the reference table. Results update as you change the inputs.<\/p>\n<div class=\"hcc-results\" id=\"hcc-results\" aria-live=\"polite\">\n<div class=\"hcc-res\" data-scale=\"HB\"><div class=\"hcc-res-top\"><span class=\"hcc-res-name\">Brinell Hardness<\/span><span class=\"hcc-abbr\">HB \/ HBW<\/span><\/div><div class=\"hcc-res-val\">&#8212;<\/div><div class=\"hcc-badges\"><\/div><p class=\"hcc-res-note\"><\/p><\/div>\n<div class=\"hcc-res\" data-scale=\"HRC\"><div class=\"hcc-res-top\"><span class=\"hcc-res-name\">Rockwell Hardness C<\/span><span class=\"hcc-abbr\">HRC<\/span><\/div><div class=\"hcc-res-val\">&#8212;<\/div><div class=\"hcc-badges\"><\/div><p class=\"hcc-res-note\"><\/p><\/div>\n<div class=\"hcc-res\" data-scale=\"HV\"><div class=\"hcc-res-top\"><span class=\"hcc-res-name\">Vickers Hardness<\/span><span class=\"hcc-abbr\">HV<\/span><\/div><div class=\"hcc-res-val\">&#8212;<\/div><div class=\"hcc-badges\"><\/div><p class=\"hcc-res-note\"><\/p><\/div>\n<\/div>\n<p class=\"hcc-disclaimer\">Hardness conversion values are approximate and depend on material composition, heat treatment, testing conditions, and the applicable conversion standard. Results should be used for reference only and should not replace direct hardness testing or certified material inspection.<\/p>\n<p class=\"hcc-source\" id=\"hcc-source\"><\/p>\n<\/section>\n<\/div>\n<script>\n(function () {\n  \"use strict\";\n  var root = document.getElementById(\"hcc-calculator\");\n  if (!root) { return; }\n  if (root.getAttribute(\"data-hcc-init\") === \"1\") { return; } \/* prevent duplicate initialization *\/\n  root.setAttribute(\"data-hcc-init\", \"1\");\n  \/* ===================== REFERENCE DATA =====================\n     Each dataset is a lookup table of rows: [HRC, HV, HBW, informational]\n       HBW = Brinell, 10 mm tungsten carbide ball, 3000 kgf. null = no value in the source table.\n       informational = 1 when the source prints the Brinell value in parentheses\n       (beyond the normal Brinell range, given for information only).\n     ASTM E140 Table 1 (non-austenitic steels, Rockwell C range). Values cross-checked against a\n     published reproduction (Struers \"Hardness Conversion Table for Non-Austenitic Steels\", citing ASTM E140).\n     Before production use, confirm every row against your licensed copy of the current ASTM E140 edition.\n     To add a dataset (e.g. from ISO 18265), add an entry here and point a material at it. Never add estimated values. *\/\n  var DATASETS = {\n    e140t1: {\n      name: \"ASTM E140, Table 1 \u2013 Approximate hardness conversion numbers for non-austenitic steels (Rockwell C range)\",\n      shortName: \"ASTM E140 Table 1 (non-austenitic steels)\",\n      limits: \"Homogeneous non-austenitic steels (e.g. as-forged, annealed, normalized, or quenched and tempered). Not for austenitic steels, cold-worked or case-hardened\/surface-treated material. Brinell values are HBW (10 mm carbide ball, 3000 kgf); HBW above 650 is outside the ISO 6506 range and given for information only. No extrapolation outside 20\u201368 HRC.\",\n      rows: [\n        [68,940,null,0],[67,900,null,0],[66,865,null,0],[65,832,739,1],[64,800,722,1],[63,772,705,1],[62,746,688,1],\n        [61,720,670,1],[60,697,654,1],[59,674,634,0],[58,653,615,0],[57,633,595,0],[56,613,577,0],[55,595,560,0],\n        [54,577,543,0],[53,560,525,0],[52,544,512,0],[51,528,496,0],[50,513,481,0],[49,498,469,0],[48,484,455,0],\n        [47,471,443,0],[46,458,432,0],[45,446,421,0],[44,434,409,0],[43,423,400,0],[42,412,390,0],[41,402,381,0],\n        [40,392,371,0],[39,382,362,0],[38,372,353,0],[37,363,344,0],[36,354,336,0],[35,345,327,0],[34,336,319,0],\n        [33,327,311,0],[32,318,301,0],[31,310,294,0],[30,302,286,0],[29,294,279,0],[28,286,271,0],[27,279,264,0],\n        [26,272,258,0],[25,266,253,0],[24,260,247,0],[23,254,243,0],[22,248,237,0],[21,243,231,0],[20,238,226,0]\n      ]\n    }\n  };\n  \/* Material -> dataset mapping. dataset:null means no verified dataset: conversion is shown as unavailable. *\/\n  var MATERIALS = {\n    carbon: { label: \"Carbon Steel\", dataset: \"e140t1\", group: \"Carbon steel (non-austenitic)\" },\n    alloy: { label: \"Alloy Steel\", dataset: \"e140t1\", group: \"Low\/medium alloy steel (non-austenitic)\" },\n    tool: { label: \"Tool Steel\", dataset: \"e140t1\", group: \"Tool steel (non-austenitic, homogeneous condition)\" },\n    stainless: { label: \"Stainless Steel\", dataset: null, group: \"Stainless steel\",\n      reason: \"No verified conversion dataset is loaded for stainless steel. Austenitic grades (e.g. 304, 316) do not follow the steel table. For martensitic or ferritic grades, confirm applicability in ASTM E140 or ISO 18265 before converting.\" },\n    other: { label: \"Other Metals\", dataset: null, group: \"Other metals\",\n      reason: \"No verified conversion dataset is loaded for other metals. Aluminium, copper, nickel alloys and cast irons each need their own table.\" }\n  };\n  \/* Column index and display settings for each scale *\/\n  var SCALES = {\n    HB: { col: 2, name: \"Brinell Hardness\", abbr: \"HBW\", unitLabel: \"HB \/ HBW\", dec: 0, ph: \"e.g. 421\" },\n    HRC: { col: 0, name: \"Rockwell Hardness C\", abbr: \"HRC\", unitLabel: \"HRC\", dec: 1, ph: \"e.g. 45\" },\n    HV: { col: 1, name: \"Vickers Hardness\", abbr: \"HV\", unitLabel: \"HV\", dec: 0, ph: \"e.g. 446\" }\n  };\n  var ORDER = [\"HB\", \"HRC\", \"HV\"];\n  \/* ===================== CONVERSION ENGINE ===================== *\/\n  \/* Reference points that have a value on the source scale, sorted ascending by that value. *\/\n  function points(ds, col) {\n    var out = [];\n    for (var i = 0; i < ds.rows.length; i++) { if (ds.rows[i][col] !== null) { out.push(ds.rows[i]); } }\n    out.sort(function (a, b) { return a[col] - b[col]; });\n    return out;\n  }\n  function rangeOf(ds, col) { var p = points(ds, col); return { min: p[0][col], max: p[p.length - 1][col] }; }\n  \/* Linear interpolation: Y = Y1 + (X - X1) * (Y2 - Y1) \/ (X2 - X1) *\/\n  function lerp(x, x1, x2, y1, y2) { return y1 + (x - x1) * (y2 - y1) \/ (x2 - x1); }\n  \/* Convert x on the source column to all columns.\n     Only interpolates between two ADJACENT reference rows; if either row lacks the target value,\n     that target is unavailable (no bridging across gaps, no extrapolation). *\/\n  function convert(ds, col, x) {\n    var p = points(ds, col), n = p.length;\n    var lo = p[0][col], hi = p[n - 1][col];\n    if (x < lo) { return { ok: false, why: \"below\", min: lo, max: hi }; }\n    if (x > hi) { return { ok: false, why: \"above\", min: lo, max: hi }; }\n    var res = { ok: true, values: [null, null, null], info: false, exact: false };\n    for (var i = 0; i < n; i++) {\n      if (p[i][col] === x) {\n        res.exact = true;\n        res.values = [p[i][0], p[i][1], p[i][2]];\n        res.info = p[i][3] === 1;\n        return res;\n      }\n    }\n    for (var j = 0; j < n - 1; j++) {\n      var a = p[j], b = p[j + 1];\n      if (x > a[col]) { if (x < b[col]) {\n        for (var c = 0; c < 3; c++) {\n          if (c === col) { res.values[c] = x; }\n          else if (a[c] === null || b[c] === null) { res.values[c] = null; }\n          else { res.values[c] = lerp(x, a[col], b[col], a[c], b[c]); }\n        }\n        res.info = (a[3] === 1 || b[3] === 1);\n        return res;\n      } }\n    }\n    return { ok: false, why: \"above\", min: lo, max: hi };\n  }\n  \/* ===================== HELPERS ===================== *\/\n  function $(s) { return root.querySelector(s); }\n  function fmt(v, dec) {\n    if (v === null || v === undefined || !isFinite(v)) { return \"\u2014\"; }\n    var r = Number(v.toFixed(dec)); if (r === 0) { r = 0; }\n    return r.toLocaleString(\"en-US\", { minimumFractionDigits: dec, maximumFractionDigits: dec });\n  }\n  function fmtInput(v) { return String(Number(v.toPrecision(10))); }\n  function readValue() {\n    var s = String(el.value.value).trim();\n    if (s === \"\") { return null; }\n    var v = Number(s);\n    return isFinite(v) ? v : NaN;\n  }\n  function mk(tag, cls, text) { var n = document.createElement(tag); if (cls) { n.className = cls; } if (text !== undefined) { n.textContent = text; } return n; }\n  var el = {\n    material: $(\"#hcc-material\"), from: $(\"#hcc-from\"), value: $(\"#hcc-value\"), unit: $(\"#hcc-value-unit\"),\n    hint: $(\"#hcc-value-hint\"), err: $(\"#hcc-value-err\"), notice: $(\"#hcc-notice\"), live: $(\"#hcc-live\"),\n    resultsCard: $(\"#hcc-results-card\"), convert: $(\"#hcc-convert\"), swap: $(\"#hcc-swap\"), copy: $(\"#hcc-copy\"), reset: $(\"#hcc-reset\"),\n    dsName: $(\"#hcc-ds-name\"), dsGroup: $(\"#hcc-ds-group\"), dsLimits: $(\"#hcc-ds-limits\"),\n    source: $(\"#hcc-source\"), cards: {}\n  };\n  for (var k = 0; k < ORDER.length; k++) { el.cards[ORDER[k]] = root.querySelector('.hcc-res[data-scale=\"' + ORDER[k] + '\"]'); }\n  var state = { tried: false, last: null };\n  \/* ===================== RENDERING ===================== *\/\n  function setCard(key, opt) {\n    var card = el.cards[key], sc = SCALES[key];\n    card.classList.toggle(\"hcc-is-input\", !!opt.input);\n    card.classList.toggle(\"hcc-is-na\", opt.status === \"na\");\n    var val = card.querySelector(\".hcc-res-val\");\n    val.textContent = opt.text;\n    if (opt.text !== \"\u2014\") { if (opt.status !== \"na\") { val.appendChild(mk(\"small\", \"\", sc.abbr)); } }\n    var badges = card.querySelector(\".hcc-badges\");\n    badges.textContent = \"\";\n    var map = { input: [\"hcc-badge-input\", \"Input Value\"], est: [\"hcc-badge-est\", \"Estimated Equivalent\"], na: [\"hcc-badge-na\", \"Conversion Unavailable\"], wait: [\"hcc-badge-wait\", opt.input ? \"Input Value\" : \"Awaiting input\"] };\n    var b = map[opt.status]; badges.appendChild(mk(\"span\", \"hcc-badge \" + b[0], b[1]));\n    if (opt.warn) { badges.appendChild(mk(\"span\", \"hcc-badge hcc-badge-warn\", opt.warn)); }\n    card.querySelector(\".hcc-res-note\").textContent = opt.note || \"\";\n  }\n  \/* Show\/hide that survives theme CSS: class + hidden attribute + inline !important *\/\n  function setVisible(node, on) {\n    if (on) { node.classList.remove(\"hcc-hide\"); node.removeAttribute(\"hidden\"); node.style.removeProperty(\"display\"); }\n    else { node.classList.add(\"hcc-hide\"); node.setAttribute(\"hidden\", \"\"); node.style.setProperty(\"display\", \"none\", \"important\"); }\n  }\n  \/* Calculate button: validate, then reveal the results section. After that, results update live. *\/\n  function calculate() {\n    state.tried = true;\n    if (run(true)) {\n      setVisible(el.resultsCard, true);\n      if (el.resultsCard.scrollIntoView) { el.resultsCard.scrollIntoView({ behavior: \"smooth\", block: \"nearest\" }); }\n    } else { el.value.focus(); }\n  }\n  function setNotice(msg, isErr) { el.notice.textContent = msg || \"\"; el.notice.classList.toggle(\"hcc-is-err\", !!isErr); }\n  function setFieldErr(msg) {\n    el.err.textContent = msg || \"\";\n    if (msg) { el.value.classList.add(\"hcc-invalid\"); el.value.setAttribute(\"aria-invalid\", \"true\"); }\n    else { el.value.classList.remove(\"hcc-invalid\"); el.value.removeAttribute(\"aria-invalid\"); }\n  }\n  function renderMeta() {\n    var mat = MATERIALS[el.material.value], from = el.from.value, sc = SCALES[from];\n    el.unit.textContent = \"(\" + sc.unitLabel + \")\";\n    el.value.setAttribute(\"placeholder\", sc.ph);\n    el.dsGroup.textContent = mat.group;\n    if (mat.dataset) {\n      var ds = DATASETS[mat.dataset], r = rangeOf(ds, sc.col);\n      el.hint.textContent = \"Reference range for this material: \" + r.min + \"\u2013\" + r.max + \" \" + sc.abbr + \".\";\n      el.dsName.textContent = ds.name;\n      el.dsLimits.textContent = ds.limits;\n      el.source.textContent = \"\";\n      el.source.appendChild(mk(\"strong\", \"\", \"Source: \"));\n      el.source.appendChild(document.createTextNode(ds.shortName + \", applied to \" + mat.group.toLowerCase() + \". Values between table rows are linearly interpolated between adjacent reference points; HRC is shown to 0.1, HV and HBW to whole numbers, matching the table's precision.\"));\n    } else {\n      el.hint.textContent = \"No verified reference range for this material.\";\n      el.dsName.textContent = \"None \u2013 no verified dataset loaded\";\n      el.dsLimits.textContent = mat.reason;\n      el.source.textContent = \"\";\n      el.source.appendChild(mk(\"strong\", \"\", \"Source: \"));\n      el.source.appendChild(document.createTextNode(\"No conversion dataset is applied for \" + mat.label.toLowerCase() + \".\"));\n    }\n  }\n  function blankCards(from, inputText, note) {\n    for (var i = 0; i < ORDER.length; i++) {\n      var key = ORDER[i];\n      if (key === from) { setCard(key, { input: true, status: inputText ? \"input\" : \"wait\", text: inputText || \"\u2014\", note: note || \"\" }); }\n      else { setCard(key, { status: inputText ? \"na\" : \"wait\", text: \"\u2014\", note: \"\" }); }\n    }\n  }\n  \/* ===================== MAIN ===================== *\/\n  function run(showErrors) {\n    renderMeta();\n    state.last = null;\n    var mat = MATERIALS[el.material.value], from = el.from.value, sc = SCALES[from];\n    var x = readValue();\n    setNotice(\"\");\n    if (x === null) {\n      setFieldErr(showErrors ? \"Enter a hardness value.\" : \"\");\n      blankCards(from);\n      return false;\n    }\n    if (isNaN(x)) { setFieldErr(\"Enter a valid number.\"); blankCards(from); return false; }\n    if (x <= 0) { setFieldErr(\"Hardness must be a positive number.\"); blankCards(from); return false; }\n    setFieldErr(\"\");\n    var inText = fmtInput(x);\n    if (!mat.dataset) {\n      blankCards(from, inText, \"\");\n      for (var i = 0; i < ORDER.length; i++) { if (ORDER[i] !== from) { el.cards[ORDER[i]].querySelector(\".hcc-res-note\").textContent = \"No verified dataset for \" + mat.label.toLowerCase() + \".\"; } }\n      setNotice(\"A reliable conversion is unavailable for \" + mat.label + \". \" + mat.reason, false);\n      return true;\n    }\n    var ds = DATASETS[mat.dataset], res = convert(ds, sc.col, x);\n    if (res.ok) { if (res.values[2] === null) { res.info = false; } } \/* informational flag only matters when a Brinell value exists *\/\n    if (!res.ok) {\n      var msg;\n      if (from === \"HRC\") {\n        msg = res.why === \"below\" ? \"Values below 20 HRC are outside the Rockwell C application range. Test on Rockwell B (HRB), Brinell or Vickers instead \u2013 HRB must not be entered as HRC.\" : \"Values above \" + res.max + \" HRC are outside the reference table. No extrapolation is performed.\";\n      } else {\n        msg = res.why === \"below\" ? \"Below the \" + res.min + \" \" + sc.abbr + \" lower limit of this table (\u2248 20 HRC). Softer steels are covered by the Rockwell B section of ASTM E140, which this calculator does not include.\" : \"Above the \" + res.max + \" \" + sc.abbr + \" upper limit of this table. No extrapolation is performed.\";\n      }\n      blankCards(from, inText, \"Outside reference range (\" + res.min + \"\u2013\" + res.max + \" \" + sc.abbr + \").\");\n      for (var q = 0; q < ORDER.length; q++) { if (ORDER[q] !== from) { el.cards[ORDER[q]].querySelector(\".hcc-res-note\").textContent = \"Input outside the table range.\"; } }\n      setNotice(msg, false);\n      return true;\n    }\n    \/* Valid conversion *\/\n    for (var j = 0; j < ORDER.length; j++) {\n      var key = ORDER[j], s = SCALES[key], v = res.values[s.col], hbInfo = key === \"HB\" ? res.info : false;\n      if (key === from) {\n        setCard(key, { input: true, status: \"input\", text: inText, warn: hbInfo ? \"Informational range\" : \"\", note: hbInfo ? \"HBW above about 650 is beyond the normal Brinell range; the source table gives these values for information only.\" : \"\" });\n      } else if (v === null) {\n        var why = key === \"HB\" ? \"The reference table has no Brinell value above 65 HRC (832 HV).\" : \"No reference value on this scale for the input.\";\n        setCard(key, { status: \"na\", text: \"\u2014\", note: why });\n      } else {\n        setCard(key, { status: \"est\", text: fmt(v, s.dec), warn: hbInfo ? \"Informational range\" : \"\", note: hbInfo ? \"Shown in parentheses in the source table (beyond the normal Brinell range) \u2013 for information only.\" : (key === \"HB\" ? \"HBW, 10 mm carbide ball, 3000 kgf.\" : \"\") });\n      }\n    }\n    if (res.info) { setNotice(\"This hardness lies in the range where the source table gives Brinell values for information only (above about 650 HBW). Rockwell C or Vickers testing is more appropriate here.\", false); }\n    state.last = { res: res, mat: mat, ds: ds, from: from, x: x };\n    return true;\n  }\n  \/* ===================== ACTIONS ===================== *\/\n  function copyText() {\n    var mat = MATERIALS[el.material.value], from = el.from.value, x = readValue();\n    if (x === null || isNaN(x)) { return null; }\n    var lines = [\"Hardness conversion (approximate)\", \"Material: \" + mat.label];\n    lines.push(\"Dataset: \" + (mat.dataset ? DATASETS[mat.dataset].shortName : \"none (no verified dataset)\"));\n    lines.push(\"Input: \" + fmtInput(x) + \" \" + SCALES[from].abbr);\n    for (var i = 0; i < ORDER.length; i++) {\n      var key = ORDER[i], s = SCALES[key];\n      if (key === from) { continue; }\n      var t = \"unavailable\";\n      if (state.last) { var v = state.last.res.values[s.col]; if (v !== null) { t = \"\u2248 \" + fmt(v, s.dec) + \" \" + s.abbr + (key === \"HB\" ? (state.last.res.info ? \" (HBW 10\/3000, informational)\" : \" (HBW 10\/3000)\") : \"\"); } }\n      lines.push(s.name + \": \" + t);\n    }\n    lines.push(\"Values are approximate; verify by direct hardness testing.\");\n    return lines.join(\"\\n\");\n  }\n  function flash(btn, txt) {\n    var orig = btn.getAttribute(\"data-label\") || btn.textContent;\n    btn.setAttribute(\"data-label\", orig);\n    btn.textContent = txt; el.live.textContent = txt;\n    setTimeout(function () { btn.textContent = orig; }, 1800);\n  }\n  function doCopy() {\n    var txt = copyText();\n    if (!txt) { calculate(); return; }\n    function fallback() {\n      var ta = document.createElement(\"textarea\");\n      ta.value = txt; ta.setAttribute(\"readonly\", \"\"); ta.style.position = \"fixed\"; ta.style.top = \"-1000px\"; ta.style.opacity = \"0\";\n      document.body.appendChild(ta); ta.select();\n      var ok = false; try { ok = document.execCommand(\"copy\"); } catch (e) { ok = false; }\n      document.body.removeChild(ta);\n      flash(el.copy, ok ? \"Copied\" : \"Copy failed\");\n    }\n    if (navigator.clipboard ? window.isSecureContext : false) {\n      navigator.clipboard.writeText(txt).then(function () { flash(el.copy, \"Copied\"); }, fallback);\n    } else { fallback(); }\n  }\n  \/* Swap: move to the next scale. Carry the value over only when a converted value exists on the new scale. *\/\n  function doSwap() {\n    var from = el.from.value, idx = ORDER.indexOf(from), next = ORDER[(idx + 1) % ORDER.length];\n    var carry = null;\n    if (state.last) { var v = state.last.res.values[SCALES[next].col]; if (v !== null) { carry = Number(v.toFixed(SCALES[next].dec)); } }\n    el.from.value = next;\n    el.value.value = carry === null ? \"\" : String(carry);\n    run(state.tried);\n    el.live.textContent = \"Input scale changed to \" + SCALES[next].name + (carry === null ? \"; value cleared.\" : \"; value carried over as \" + carry + \" \" + SCALES[next].abbr + \".\");\n  }\n  function doReset() {\n    el.material.value = \"carbon\"; el.from.value = \"HRC\"; el.value.value = \"\";\n    state.tried = false; run(false);\n    setVisible(el.resultsCard, false);\n    el.live.textContent = \"Calculator reset.\";\n    el.value.focus();\n  }\n  \/* ===================== EVENTS ===================== *\/\n  el.value.addEventListener(\"input\", function () { run(state.tried); });\n  el.value.addEventListener(\"keydown\", function (e) {\n    if (e.key === \"-\" || e.key === \"+\" || e.key === \"e\" || e.key === \"E\") { e.preventDefault(); }\n    if (e.key === \"Enter\") { e.preventDefault(); calculate(); }\n  });\n  el.material.addEventListener(\"change\", function () { run(state.tried); });\n  el.from.addEventListener(\"change\", function () { run(state.tried); });\n  el.convert.addEventListener(\"click\", calculate);\n  el.swap.addEventListener(\"click\", doSwap);\n  el.copy.addEventListener(\"click\", doCopy);\n  el.reset.addEventListener(\"click\", doReset);\n  setVisible(el.resultsCard, false);\n  run(false);\n})();\n<\/script>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>The HB \u2194 HRC \u2194 HV Hardness Conversion Calculator is a practical online tool designed to help engineers, manufacturers, and quality control professionals estimate hardness&#8230;<\/p>","protected":false},"author":2,"featured_media":24951,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"pmpro_default_level":"","_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_post_was_ever_published":false},"categories":[8647],"tags":[8737,8745,8747,8746,8743],"class_list":["post-24950","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-materials-science-and-properties","tag-brinell-hardness","tag-hardness-conversion","tag-hb-to-hrc","tag-hrc-to-hv","tag-vickers-hardness","pmpro-has-access"],"acf":[],"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"https:\/\/www.mechstream.com\/wp-content\/uploads\/2026\/10\/HB-\u2194-HRC-\u2194-HV-Hardness-Conversion-Calculator.png","_links":{"self":[{"href":"https:\/\/www.mechstream.com\/ar\/wp-json\/wp\/v2\/posts\/24950","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.mechstream.com\/ar\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.mechstream.com\/ar\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.mechstream.com\/ar\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.mechstream.com\/ar\/wp-json\/wp\/v2\/comments?post=24950"}],"version-history":[{"count":0,"href":"https:\/\/www.mechstream.com\/ar\/wp-json\/wp\/v2\/posts\/24950\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.mechstream.com\/ar\/wp-json\/wp\/v2\/media\/24951"}],"wp:attachment":[{"href":"https:\/\/www.mechstream.com\/ar\/wp-json\/wp\/v2\/media?parent=24950"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.mechstream.com\/ar\/wp-json\/wp\/v2\/categories?post=24950"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.mechstream.com\/ar\/wp-json\/wp\/v2\/tags?post=24950"}],"curies":[{"name":"\u0648\u0648\u0631\u062f\u0628\u0631\u064a\u0633","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}