{"id":100015,"date":"2026-02-15T20:06:08","date_gmt":"2026-02-15T20:06:08","guid":{"rendered":"https:\/\/vibromera.eu\/?post_type=calculator&#038;p=100015"},"modified":"2026-07-11T18:40:17","modified_gmt":"2026-07-11T18:40:17","slug":"bearing-defect-frequencies","status":"publish","type":"calculator","link":"https:\/\/vibromera.eu\/cs\/calculators\/bearing-defect-frequencies\/","title":{"rendered":"Kalkula\u010dka frekvence vad lo\u017eisek | BPFO BPFI BSF FTF"},"content":{"rendered":"\r\n<script type=\"application\/ld+json\">\r\n{\"@context\":\"https:\/\/schema.org\",\"@type\":\"WebApplication\",\"name\":\"Bearing Defect Frequency Calculator\",\"alternateName\":[\"BPFO BPFI Calculator\",\"Bearing Fault Frequency Calculator\",\"Rolling Element Bearing Frequency Calculator\"],\"description\":\"Free online engineering calculator for bearing defect frequencies. Computes BPFO, BPFI, BSF, FTF and their harmonics from bearing geometry and shaft speed.\",\"url\":\"https:\/\/vibromera.eu\/calculators\/bearing-defect-frequencies\/\",\"applicationCategory\":\"Engineering Calculator\",\"operatingSystem\":\"Any (Web Browser)\",\"offers\":{\"@type\":\"Offer\",\"price\":\"0\",\"priceCurrency\":\"EUR\"},\"creator\":{\"@type\":\"Organization\",\"name\":\"Vibromera\",\"url\":\"https:\/\/vibromera.eu\/\"},\"datePublished\":\"2025-01-01\",\"dateModified\":\"2026-02-14\",\"inLanguage\":\"en\",\"isAccessibleForFree\":true,\"featureList\":[\"BPFO, BPFI, BSF, FTF calculation\",\"Harmonics (2\u00d7 and 3\u00d7)\",\"Example geometry presets\",\"Auto-calculation on input change\",\"URL parameter sharing\",\"Calculation history\"],\"keywords\":\"bearing defect frequency, BPFO, BPFI, BSF, FTF, vibration analysis, bearing diagnostics\"}\r\n<\/script>\r\n\r\n<script type=\"application\/ld+json\">\r\n{\"@context\":\"https:\/\/schema.org\",\"@type\":\"FAQPage\",\"mainEntity\":[\r\n{\"@type\":\"Question\",\"name\":\"What are bearing defect frequencies?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Bearing defect frequencies are characteristic vibration frequencies generated when a rolling element bearing has a localized defect on one of its components (outer race, inner race, rolling elements, or cage). Each component produces a unique frequency based on bearing geometry and shaft speed.\"}},\r\n{\"@type\":\"Question\",\"name\":\"How can an outer race fault appear in a spectrum?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"An outer-race defect can produce components near BPFO and its harmonics. FTF or other sidebands can also occur because load, slip, transfer path and modulation affect the spectrum. A frequency match alone does not prove a defect; confirm with envelope analysis, trends and inspection context.\"}},\r\n{\"@type\":\"Question\",\"name\":\"What is the difference between inner and outer race indicators?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Outer-race defects are investigated around BPFO; inner-race defects around BPFI. Shaft-speed modulation is common around BPFI, while BPFO can also show FTF or other sidebands. Interpret the pattern together with loading, measurement position and envelope spectrum.\"}},\r\n{\"@type\":\"Question\",\"name\":\"Why do harmonics matter in bearing analysis?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Harmonics and sidebands can strengthen a bearing-fault hypothesis, but their count is not a universal severity scale or remaining-life calculation. Evaluate amplitude trends, envelope spectra, noise floor, operating condition and corroborating measurements.\"}},\r\n{\"@type\":\"Question\",\"name\":\"Where can I find bearing geometry data?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Bearing geometry data (number of rolling elements, ball diameter, pitch diameter, contact angle) can be found in manufacturer catalogs from SKF, FAG\/Schaeffler, NSK, Timken, NTN, and others. Many manufacturers also provide online tools and databases. Some vibration analysis software includes built-in bearing databases.\"}}\r\n]}\r\n<\/script>\r\n\r\n<script type=\"application\/ld+json\">\r\n{\"@context\":\"https:\/\/schema.org\",\"@type\":\"BreadcrumbList\",\"itemListElement\":[\r\n{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/vibromera.eu\/\"},\r\n{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Calculators\",\"item\":\"https:\/\/vibromera.eu\/calculators\/\"},\r\n{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Bearing Defect Frequencies\",\"item\":\"https:\/\/vibromera.eu\/calculators\/bearing-defect-frequencies\/\"}\r\n]}\r\n<\/script>\r\n\r\n<link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\r\n\r\n<link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin>\r\n\r\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=DM+Sans:ital,opsz,wght@0,9..40,300;0,9..40,400;0,9..40,500;0,9..40,600;0,9..40,700;1,9..40,400&#038;family=JetBrains+Mono:wght@400;500;600&#038;family=Fraunces:opsz,wght@9..144,700;9..144,800&#038;display=swap\" rel=\"stylesheet\">\r\n\r\n<link rel=\"stylesheet\" href=\"https:\/\/cdn.jsdelivr.net\/npm\/katex@0.16.11\/dist\/katex.min.css\">\r\n\r\n<style>\r\n:root {\r\n    --vc-bg: #f4f1ec;\r\n    --vc-surface: #ffffff;\r\n    --vc-surface-alt: #f8f6f2;\r\n    --vc-ink: #1a1a1a;\r\n    --vc-ink-secondary: #5a5650;\r\n    --vc-ink-muted: #8a857e;\r\n    --vc-accent: #c85a2a;\r\n    --vc-accent-hover: #b04d22;\r\n    --vc-accent-light: #fdf0ea;\r\n    --vc-blue: #2a5c8c;\r\n    --vc-blue-light: #eaf1f8;\r\n    --vc-green: #2a7a4b;\r\n    --vc-green-light: #eaf8ef;\r\n    --vc-yellow: #a67c00;\r\n    --vc-yellow-light: #fef9e8;\r\n    --vc-red: #b91c1c;\r\n    --vc-red-light: #fef2f2;\r\n    --vc-border: #d9d4cc;\r\n    --vc-border-light: #e8e4dd;\r\n    --vc-shadow: 0 1px 3px rgba(26,26,26,0.06), 0 4px 12px rgba(26,26,26,0.04);\r\n    --vc-shadow-lg: 0 4px 12px rgba(26,26,26,0.08), 0 16px 40px rgba(26,26,26,0.06);\r\n    --vc-radius: 8px;\r\n    --vc-radius-lg: 12px;\r\n    --vc-font: 'DM Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;\r\n    --vc-mono: 'JetBrains Mono', 'Consolas', 'Monaco', monospace;\r\n    --vc-display: 'Fraunces', Georgia, serif;\r\n}\r\n\r\n.vc-calculator {\r\n    font-family: var(--vc-font);\r\n    font-size: 15px;\r\n    line-height: 1.65;\r\n    color: var(--vc-ink);\r\n    max-width: 960px;\r\n    margin: 0 auto;\r\n    padding: 20px 16px 40px;\r\n    -webkit-font-smoothing: antialiased;\r\n}\r\n.vc-calculator *, .vc-calculator *::before, .vc-calculator *::after { box-sizing: border-box; }\r\n\r\n\/* \u2500\u2500 HEADER \u2500\u2500 *\/\r\n.vc-header { text-align: center; padding: 48px 24px 40px; position: relative; }\r\n.vc-header::after { content:''; position:absolute; bottom:0; left:50%; transform:translateX(-50%); width:80px; height:3px; background:var(--vc-accent); border-radius:2px; }\r\n.vc-header-eyebrow { font-family:var(--vc-mono); font-size:11px; font-weight:500; letter-spacing:0.15em; text-transform:uppercase; color:var(--vc-accent); margin:0 0 12px; }\r\n.vc-header-title { font-family:var(--vc-display); font-size:clamp(24px,4vw,36px); font-weight:800; line-height:1.15; color:var(--vc-ink); margin:0 0 16px; letter-spacing:-0.02em; }\r\n.vc-header-subtitle { font-size:15px; color:var(--vc-ink-secondary); margin:0 auto 20px; max-width:600px; }\r\n.vc-badges { display:inline-flex; gap:8px; flex-wrap:wrap; justify-content:center; }\r\n.vc-badge { font-family:var(--vc-mono); font-size:11px; font-weight:500; padding:4px 10px; border-radius:4px; background:var(--vc-surface); border:1px solid var(--vc-border); color:var(--vc-ink-secondary); }\r\n\r\n\/* \u2500\u2500 CARD \u2500\u2500 *\/\r\n.vc-card { background:var(--vc-surface); border:1px solid var(--vc-border); border-radius:var(--vc-radius-lg); box-shadow:var(--vc-shadow); overflow:hidden; margin-top:32px; }\r\n\r\n\/* \u2500\u2500 UNIT TOGGLE \u2500\u2500 *\/\r\n.vc-unit-bar { display:flex; border-bottom:1px solid var(--vc-border-light); background:var(--vc-surface-alt); }\r\n.vc-unit-btn { flex:1; padding:12px; border:none; background:transparent; font-family:var(--vc-font); font-size:13px; font-weight:600; color:var(--vc-ink-muted); cursor:pointer; transition:all 0.2s; position:relative; }\r\n.vc-unit-btn:hover { color:var(--vc-ink-secondary); background:rgba(200,90,42,0.04); }\r\n.vc-unit-btn.vc-active { color:var(--vc-accent); background:var(--vc-surface); }\r\n.vc-unit-btn.vc-active::after { content:''; position:absolute; bottom:-1px; left:16px; right:16px; height:2px; background:var(--vc-accent); border-radius:1px 1px 0 0; }\r\n\r\n\/* \u2500\u2500 FORM \u2500\u2500 *\/\r\n.vc-form { padding:24px; }\r\n.vc-form-grid { display:grid; grid-template-columns:1fr 1fr; gap:18px; }\r\n@media(max-width:600px) { .vc-form-grid { grid-template-columns:1fr; } }\r\n.vc-field { display:flex; flex-direction:column; }\r\n.vc-field-full { grid-column: 1 \/ -1; }\r\n.vc-label { font-size:12px; font-weight:600; letter-spacing:0.04em; text-transform:uppercase; color:var(--vc-ink-secondary); margin-bottom:6px; }\r\n.vc-label-hint { font-weight:400; text-transform:none; letter-spacing:0; color:var(--vc-ink-muted); font-size:11px; }\r\n.vc-select, .vc-input { width:100%; padding:10px 12px; border:1.5px solid var(--vc-border); border-radius:6px; font-family:var(--vc-font); font-size:14px; color:var(--vc-ink); background:var(--vc-surface); transition:border-color 0.15s, box-shadow 0.15s; }\r\n.vc-select { padding-right:36px; appearance:none; -webkit-appearance:none; cursor:pointer; background-image:url(\"data:image\/svg+xml,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' width='16' height='16' fill='none' stroke='%235a5650' stroke-width='2'%3E%3Cpath d='M4 6l4 4 4-4'\/%3E%3C\/svg%3E\"); background-repeat:no-repeat; background-position:right 10px center; }\r\n.vc-select:focus, .vc-input:focus { outline:none; border-color:var(--vc-accent); box-shadow:0 0 0 3px rgba(200,90,42,0.12); }\r\n.vc-select:hover, .vc-input:hover { border-color:var(--vc-ink-muted); }\r\n\r\n\/* \u2500\u2500 PRESETS \u2500\u2500 *\/\r\n.vc-presets { display:flex; flex-wrap:wrap; gap:8px; margin-top:18px; padding-top:18px; border-top:1px solid var(--vc-border-light); }\r\n.vc-presets-label { font-family:var(--vc-mono); font-size:11px; font-weight:500; letter-spacing:0.1em; text-transform:uppercase; color:var(--vc-ink-muted); width:100%; margin-bottom:2px; }\r\n.vc-preset-btn { padding:5px 12px; font-family:var(--vc-font); font-size:12px; font-weight:500; border:1px solid var(--vc-border); border-radius:6px; background:var(--vc-surface-alt); color:var(--vc-ink-secondary); cursor:pointer; transition:all 0.15s; }\r\n.vc-preset-btn:hover { border-color:var(--vc-accent); color:var(--vc-accent); background:var(--vc-accent-light); }\r\n\r\n\/* \u2500\u2500 RESULTS \u2500\u2500 *\/\r\n.vc-results { border-top:1px solid var(--vc-border-light); background:var(--vc-surface-alt); padding:0; max-height:0; overflow:hidden; transition:max-height 0.5s cubic-bezier(0.4,0,0.2,1), padding 0.3s; }\r\n.vc-results.vc-visible { max-height:4000px; padding:24px; }\r\n.vc-results-head { display:flex; align-items:center; justify-content:space-between; margin-bottom:18px; }\r\n.vc-results-title { font-family:var(--vc-display); font-size:20px; font-weight:700; color:var(--vc-ink); margin:0; }\r\n.vc-copy-btn { display:inline-flex; align-items:center; gap:5px; padding:6px 12px; border:1px solid var(--vc-border); border-radius:6px; background:var(--vc-surface); font-family:var(--vc-font); font-size:12px; font-weight:500; color:var(--vc-ink-secondary); cursor:pointer; transition:all 0.15s; }\r\n.vc-copy-btn:hover { border-color:var(--vc-accent); color:var(--vc-accent); }\r\n.vc-copy-btn.vc-copied { background:var(--vc-green-light); border-color:var(--vc-green); color:var(--vc-green); }\r\n\r\n.vc-result-grid { display:grid; grid-template-columns:1fr 1fr; gap:12px; margin-bottom:20px; }\r\n@media(max-width:500px) { .vc-result-grid { grid-template-columns:1fr; } }\r\n.vc-rcard { background:var(--vc-surface); border:1px solid var(--vc-border-light); border-radius:var(--vc-radius); padding:16px; transition:transform 0.2s; }\r\n.vc-rcard:hover { transform:translateY(-1px); }\r\n.vc-rcard-primary { border-color:var(--vc-accent); border-width:2px; background:linear-gradient(135deg, #fdf6f2 0%, var(--vc-surface) 100%); grid-column:1 \/ -1; }\r\n.vc-rcard-label { font-family:var(--vc-mono); font-size:10px; font-weight:500; letter-spacing:0.1em; text-transform:uppercase; color:var(--vc-ink-muted); margin-bottom:4px; }\r\n.vc-rcard-value { font-family:var(--vc-mono); font-size:22px; font-weight:600; color:var(--vc-ink); line-height:1.2; }\r\n.vc-rcard-primary .vc-rcard-value { font-size:30px; color:var(--vc-accent); }\r\n.vc-rcard-unit { font-size:14px; font-weight:400; color:var(--vc-ink-secondary); }\r\n\r\n\/* \u2500\u2500 HARMONICS TABLE \u2500\u2500 *\/\r\n.vc-harmonics-table { width:100%; border-collapse:collapse; margin-top:16px; font-size:13px; }\r\n.vc-harmonics-table th, .vc-harmonics-table td { padding:10px 12px; border:1px solid var(--vc-border-light); text-align:left; }\r\n.vc-harmonics-table th { background:var(--vc-surface-alt); font-family:var(--vc-mono); font-size:11px; font-weight:600; text-transform:uppercase; letter-spacing:0.05em; color:var(--vc-ink-secondary); }\r\n.vc-harmonics-table tr:nth-child(even) { background:var(--vc-surface-alt); }\r\n.vc-harmonics-table td { font-family:var(--vc-mono); font-size:13px; }\r\n@media(max-width:600px) { .vc-harmonics-table { font-size:12px; } .vc-harmonics-table th, .vc-harmonics-table td { padding:8px; } }\r\n\r\n\/* \u2500\u2500 COLLAPSIBLE SECTIONS \u2500\u2500 *\/\r\n.vc-section { margin-top:24px; border:1px solid var(--vc-border); border-radius:var(--vc-radius-lg); background:var(--vc-surface); box-shadow:var(--vc-shadow); overflow:hidden; }\r\n.vc-section-toggle { width:100%; display:flex; align-items:center; justify-content:space-between; padding:18px 24px; border:none; background:transparent; cursor:pointer; font-family:var(--vc-font); text-align:left; transition:background 0.15s; }\r\n.vc-section-toggle:hover { background:var(--vc-surface-alt); }\r\n.vc-section-toggle-text { display:flex; align-items:center; gap:10px; }\r\n.vc-section-icon { font-size:20px; line-height:1; }\r\n.vc-section-title { font-family:var(--vc-display); font-size:18px; font-weight:700; color:var(--vc-ink); margin:0; }\r\n.vc-section-chevron { width:20px; height:20px; color:var(--vc-ink-muted); transition:transform 0.3s; flex-shrink:0; }\r\n.vc-section.vc-open .vc-section-chevron { transform:rotate(180deg); }\r\n.vc-section-body { max-height:0; overflow:hidden; transition:max-height 0.4s cubic-bezier(0.4,0,0.2,1); }\r\n.vc-section.vc-open .vc-section-body { max-height:20000px; }\r\n.vc-section-inner { padding:0 24px 24px; border-top:1px solid var(--vc-border-light); }\r\n\r\n\/* \u2500\u2500 THEORY \u2500\u2500 *\/\r\n.vc-theory h3 { font-family:var(--vc-display); font-size:17px; font-weight:700; color:var(--vc-ink); margin:28px 0 10px; }\r\n.vc-theory h3:first-child { margin-top:20px; }\r\n.vc-theory p { font-size:14px; color:var(--vc-ink-secondary); margin:0 0 10px; }\r\n.vc-theory ul, .vc-theory ol { font-size:14px; color:var(--vc-ink-secondary); margin:0 0 12px 18px; padding:0; }\r\n.vc-theory li { margin-bottom:5px; }\r\n.vc-formula-box { background:var(--vc-surface-alt); border:2px solid var(--vc-border); border-radius:6px; padding:14px 20px; font-family:var(--vc-mono); font-size:16px; font-weight:500; text-align:center; margin:14px 0; color:var(--vc-ink); overflow-x:auto; }\r\n.vc-info-box { background:var(--vc-blue-light); border-left:3px solid var(--vc-blue); padding:14px 16px; border-radius:0 6px 6px 0; margin:14px 0; }\r\n.vc-info-box p { margin:0; font-size:14px; color:var(--vc-ink-secondary); }\r\n.vc-warning-box { background:var(--vc-yellow-light); border-left:3px solid var(--vc-yellow); padding:14px 16px; border-radius:0 6px 6px 0; margin:14px 0; }\r\n.vc-example-box { background:var(--vc-surface-alt); border:1px solid var(--vc-border-light); border-radius:6px; padding:16px; margin:14px 0; }\r\n.vc-example-title { font-family:var(--vc-mono); font-size:13px; font-weight:600; color:var(--vc-accent); margin-bottom:8px; }\r\n.vc-table { width:100%; border-collapse:collapse; margin:14px 0; font-size:13px; }\r\n.vc-table th, .vc-table td { padding:10px 12px; border:1px solid var(--vc-border-light); text-align:left; }\r\n.vc-table th { background:var(--vc-surface-alt); font-size:11px; font-weight:600; text-transform:uppercase; letter-spacing:0.05em; color:var(--vc-ink-secondary); }\r\n.vc-table tr:nth-child(even) { background:var(--vc-surface-alt); }\r\n@media(max-width:600px) { .vc-table { font-size:12px; } .vc-table th, .vc-table td { padding:8px; } }\r\n\r\n\/* \u2500\u2500 FAQ \u2500\u2500 *\/\r\n.vc-faq-list { display:flex; flex-direction:column; gap:8px; margin-top:20px; }\r\n.vc-faq-item { border:1px solid var(--vc-border-light); border-radius:6px; overflow:hidden; }\r\n.vc-faq-q { width:100%; display:flex; align-items:center; justify-content:space-between; gap:12px; padding:14px 16px; border:none; background:var(--vc-surface-alt); cursor:pointer; font-family:var(--vc-font); font-size:15px; font-weight:600; color:var(--vc-ink); text-align:left; transition:background 0.15s; }\r\n.vc-faq-q:hover { background:#ede9e3; }\r\n.vc-faq-chevron { width:16px; height:16px; color:var(--vc-ink-muted); flex-shrink:0; transition:transform 0.25s; }\r\n.vc-faq-item.vc-open .vc-faq-chevron { transform:rotate(180deg); }\r\n.vc-faq-a { max-height:0; overflow:hidden; transition:max-height 0.35s; }\r\n.vc-faq-item.vc-open .vc-faq-a { max-height:1200px; }\r\n.vc-faq-a-inner { padding:14px 16px; border-top:1px solid var(--vc-border-light); font-size:14px; color:var(--vc-ink-secondary); }\r\n.vc-faq-a-inner p { margin:0 0 8px; }\r\n.vc-faq-a-inner p:last-child { margin-bottom:0; }\r\n.vc-faq-a-inner ul { margin:4px 0 8px 16px; padding:0; }\r\n.vc-faq-a-inner li { margin-bottom:3px; }\r\n\r\n\/* \u2500\u2500 RELATED \u2500\u2500 *\/\r\n.vc-related { display:flex; flex-wrap:wrap; gap:10px; margin-top:16px; }\r\n.vc-related-link { display:inline-block; padding:8px 16px; font-family:var(--vc-font); font-size:13px; font-weight:600; background:var(--vc-surface-alt); color:var(--vc-ink-secondary); border:1px solid var(--vc-border); border-radius:var(--vc-radius); text-decoration:none; transition:all 0.15s; }\r\n.vc-related-link:hover { border-color:var(--vc-accent); color:var(--vc-accent); background:var(--vc-accent-light); }\r\n\r\n\/* \u2500\u2500 PROMO \u2500\u2500 *\/\r\n.vc-promo { margin-top:24px; padding:20px; background:linear-gradient(135deg, var(--vc-accent-light), var(--vc-surface)); border:1px solid var(--vc-border); border-radius:var(--vc-radius-lg); display:flex; align-items:center; gap:16px; }\r\n.vc-promo-text { flex:1; font-size:14px; color:var(--vc-ink-secondary); }\r\n.vc-promo-text strong { color:var(--vc-ink); }\r\n.vc-promo-link { padding:8px 20px; font-size:13px; font-weight:700; color:#fff; background:var(--vc-accent); border-radius:var(--vc-radius); text-decoration:none; white-space:nowrap; transition:background 0.15s; }\r\n.vc-promo-link:hover { background:var(--vc-accent-hover); }\r\n\r\n\/* \u2500\u2500 FOOTER \u2500\u2500 *\/\r\n.vc-footer { text-align:center; padding:32px 16px; font-size:13px; color:var(--vc-ink-muted); }\r\n.vc-footer a { color:var(--vc-accent); text-decoration:none; }\r\n.vc-footer a:hover { text-decoration:underline; }\r\n.vc-footer-links { margin-top:8px; font-size:12px; }\r\n.vc-footer-links a { margin:0 8px; }\r\n\r\n\/* \u2500\u2500 PRINT \u2500\u2500 *\/\r\n@media print {\r\n    .vc-section-body { max-height:none!important; }\r\n    .vc-faq-a { max-height:none!important; }\r\n    .vc-results { max-height:none!important; padding:24px!important; }\r\n    .vc-copy-btn, .vc-section-chevron, .vc-faq-chevron, .vc-presets, .vc-promo { display:none!important; }\r\n}\r\n.vc-results.vc-visible{max-height:5000px}\r\n.vc-viz{margin:20px 0;background:var(--vc-surface);border:1px solid var(--vc-border-light);border-radius:var(--vc-radius);padding:16px;overflow:hidden}\r\n.vc-viz svg{width:100%;height:auto;display:block}\r\n.vc-viz-title{font-family:var(--vc-mono);font-size:11px;font-weight:500;letter-spacing:0.1em;text-transform:uppercase;color:var(--vc-ink-muted);margin-bottom:12px}\r\n<\/style>\r\n\r\n<div class=\"vc-calculator\" id=\"vc-bearing-defect\">\r\n\r\n<!-- Header -->\r\n<header class=\"vc-header\">\r\n    <p class=\"vc-header-eyebrow\">Free Engineering Tool #035<\/p>\r\n    <h1 class=\"vc-header-title\">Bearing Defect Frequency Calculator<\/h1>\r\n    <p class=\"vc-header-subtitle\">Calculate BPFO, BPFI, BSF, and FTF from bearing geometry and shaft speed. Includes 2\u00d7 and 3\u00d7 harmonics for vibration diagnostics.<\/p>\r\n    <div class=\"vc-badges\">\r\n        <span class=\"vc-badge\">BPFO<\/span>\r\n        <span class=\"vc-badge\">BPFI<\/span>\r\n        <span class=\"vc-badge\">BSF<\/span>\r\n        <span class=\"vc-badge\">FTF<\/span>\r\n    <\/div>\r\n<\/header>\r\n\r\n<!-- Calculator Card -->\r\n<div class=\"vc-card\">\r\n    <div class=\"vc-unit-bar\">\r\n        <button type=\"button\" class=\"vc-unit-btn vc-active\" data-system=\"metric\">Metric (mm)<\/button>\r\n        <button type=\"button\" class=\"vc-unit-btn\" data-system=\"imperial\">Imperial (in)<\/button>\r\n    <\/div>\r\n\r\n    <form class=\"vc-form\" id=\"vc-form\" autocomplete=\"off\">\r\n        <div class=\"vc-form-grid\">\r\n            <div class=\"vc-field\">\r\n                <label class=\"vc-label\" for=\"vc-z\">Number of Rolling Elements <span class=\"vc-label-hint\">(Z)<\/span><\/label>\r\n                <input class=\"vc-input\" type=\"text\" id=\"vc-z\" inputmode=\"numeric\" autocomplete=\"off\" placeholder=\"e.g. 9\" value=\"9\">\r\n            <\/div>\r\n            <div class=\"vc-field\">\r\n                <label class=\"vc-label\" for=\"vc-bd\">Ball \/ Roller Diameter <span class=\"vc-label-hint\" id=\"vc-bd-unit\">(mm)<\/span><\/label>\r\n                <input class=\"vc-input\" type=\"text\" id=\"vc-bd\" inputmode=\"decimal\" autocomplete=\"off\" placeholder=\"e.g. 7.94 or 7,94\" value=\"7.94\">\r\n            <\/div>\r\n            <div class=\"vc-field\">\r\n                <label class=\"vc-label\" for=\"vc-pd\">Pitch Diameter <span class=\"vc-label-hint\" id=\"vc-pd-unit\">(mm)<\/span><\/label>\r\n                <input class=\"vc-input\" type=\"text\" id=\"vc-pd\" inputmode=\"decimal\" autocomplete=\"off\" placeholder=\"e.g. 38.5 or 38,5\" value=\"38.5\">\r\n            <\/div>\r\n            <div class=\"vc-field\">\r\n                <label class=\"vc-label\" for=\"vc-alpha\">Contact Angle <span class=\"vc-label-hint\">(degrees)<\/span><\/label>\r\n                <input class=\"vc-input\" type=\"text\" id=\"vc-alpha\" inputmode=\"decimal\" autocomplete=\"off\" placeholder=\"0 to less than 90\" value=\"0\">\r\n            <\/div>\r\n            <div class=\"vc-field\">\r\n                <label class=\"vc-label\" for=\"vc-rpm\">Shaft Speed <span class=\"vc-label-hint\">(RPM)<\/span><\/label>\r\n                <input class=\"vc-input\" type=\"text\" id=\"vc-rpm\" inputmode=\"decimal\" autocomplete=\"off\" placeholder=\"e.g. 1500 or 1500,0\" value=\"1500\">\r\n            <\/div>\r\n        <\/div>\r\n\r\n        <!-- Presets -->\r\n        <div class=\"vc-presets\">\r\n            <div class=\"vc-presets-label\">Quick presets<\/div>\r\n            <button type=\"button\" class=\"vc-preset-btn\" data-z=\"9\" data-bd=\"7.94\" data-pd=\"38.5\" data-a=\"0\" data-rpm=\"1500\">Example A \u00b7 Z9 \u00b7 1500 RPM<\/button>\r\n            <button type=\"button\" class=\"vc-preset-btn\" data-z=\"8\" data-bd=\"17.46\" data-pd=\"72.5\" data-a=\"0\" data-rpm=\"1500\">Example B \u00b7 Z8 \u00b7 1500 RPM<\/button>\r\n            <button type=\"button\" class=\"vc-preset-btn\" data-z=\"14\" data-bd=\"10\" data-pd=\"65\" data-a=\"0\" data-rpm=\"3000\">Example C \u00b7 Z14 \u00b7 3000 RPM<\/button>\r\n        <\/div>\r\n    <\/form>\r\n\r\n    <!-- Results -->\r\n    <div class=\"vc-results\" id=\"vc-results\">\r\n        <div class=\"vc-results-head\">\r\n            <h2 class=\"vc-results-title\">Results<\/h2>\r\n            <button type=\"button\" class=\"vc-copy-btn\" id=\"vc-copy-btn\">\r\n                <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><rect x=\"9\" y=\"9\" width=\"13\" height=\"13\" rx=\"2\"\/><path d=\"M5 15H4a2 2 0 01-2-2V4a2 2 0 012-2h9a2 2 0 012 2v1\"\/><\/svg>\r\n                Copy\r\n            <\/button>\r\n        <\/div>\r\n        <div class=\"vc-result-grid\">\r\n            <div class=\"vc-rcard vc-rcard-primary\">\r\n                <div class=\"vc-rcard-label\">BPFO \u2014 Outer Race Defect Frequency<\/div>\r\n                <div class=\"vc-rcard-value\" id=\"vc-r-bpfo\">\u2014<\/div>\r\n            <\/div>\r\n            <div class=\"vc-rcard\">\r\n                <div class=\"vc-rcard-label\">BPFI \u2014 Inner Race Defect Frequency<\/div>\r\n                <div class=\"vc-rcard-value\" id=\"vc-r-bpfi\">\u2014<\/div>\r\n            <\/div>\r\n            <div class=\"vc-rcard\">\r\n                <div class=\"vc-rcard-label\">BSF \u2014 Ball Spin Frequency<\/div>\r\n                <div class=\"vc-rcard-value\" id=\"vc-r-bsf\">\u2014<\/div>\r\n            <\/div>\r\n            <div class=\"vc-rcard\">\r\n                <div class=\"vc-rcard-label\">FTF \u2014 Cage (Train) Frequency<\/div>\r\n                <div class=\"vc-rcard-value\" id=\"vc-r-ftf\">\u2014<\/div>\r\n            <\/div>\r\n            <div class=\"vc-rcard\">\r\n                <div class=\"vc-rcard-label\">Shaft Frequency<\/div>\r\n                <div class=\"vc-rcard-value\" id=\"vc-r-shaft\">\u2014<\/div>\r\n            <\/div>\r\n        <\/div>\r\n\r\n        <h3 style=\"font-family:var(--vc-display);font-size:17px;font-weight:700;margin:8px 0 12px;\">Harmonics Table<\/h3>\r\n        <div style=\"overflow-x:auto;\">\r\n            <table class=\"vc-harmonics-table\" id=\"vc-harmonics-tbl\">\r\n                <thead>\r\n                    <tr>\r\n                        <th>Frequency<\/th>\r\n                        <th>1\u00d7 (Hz)<\/th>\r\n                        <th>1\u00d7 (Order)<\/th>\r\n                        <th>2\u00d7 (Hz)<\/th>\r\n                        <th>2\u00d7 (Order)<\/th>\r\n                        <th>3\u00d7 (Hz)<\/th>\r\n                        <th>3\u00d7 (Order)<\/th>\r\n                    <\/tr>\r\n                <\/thead>\r\n                <tbody id=\"vc-harmonics-body\"><\/tbody>\r\n            <\/table>\r\n        <\/div>\r\n        <div class=\"vc-viz\" id=\"vc-spectrum-viz\"><\/div>\r\n    <\/div>\r\n<\/div>\r\n\r\n<!-- Theory & Reference -->\r\n<div class=\"vc-section vc-open\" id=\"vc-sec-theory\">\r\n    <button type=\"button\" class=\"vc-section-toggle\" aria-expanded=\"true\">\r\n        <span class=\"vc-section-toggle-text\">\r\n            <span class=\"vc-section-icon\">\ud83d\udcd8<\/span>\r\n            <span class=\"vc-section-title\">Theory &amp; Formulas<\/span>\r\n        <\/span>\r\n        <svg class=\"vc-section-chevron\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M6 9l6 6 6-6\"\/><\/svg>\r\n    <\/button>\r\n    <div class=\"vc-section-body\">\r\n        <div class=\"vc-section-inner vc-theory\">\r\n            <h3>Bearing Defect Frequencies<\/h3>\r\n            <p>When a rolling element bearing develops a localized defect, the repetitive impact generates characteristic frequencies that depend on the bearing geometry and shaft speed. The four fundamental defect frequencies are:<\/p>\r\n\r\n            <h3>Fundamental Train Frequency (FTF)<\/h3>\r\n            <div class=\"vc-formula-box\" id=\"vc-katex-ftf\"><\/div>\r\n            <p>The cage rotational frequency. An elevated FTF indicates cage wear or damage.<\/p>\r\n\r\n            <h3>Ball Pass Frequency \u2014 Outer Race (BPFO)<\/h3>\r\n            <div class=\"vc-formula-box\" id=\"vc-katex-bpfo\"><\/div>\r\n            <p>The rate at which rolling elements pass a point on the outer race. Peaks near BPFO can support an outer-race fault diagnosis, but occurrence and amplitude depend on load zone, transfer path, slip and measurement position.<\/p>\r\n\r\n            <h3>Ball Pass Frequency \u2014 Inner Race (BPFI)<\/h3>\r\n            <div class=\"vc-formula-box\" id=\"vc-katex-bpfi\"><\/div>\r\n            <p>The rate at which rolling elements pass a point on the inner race. Inner race faults typically show sidebands at shaft speed around BPFI.<\/p>\r\n\r\n            <h3>Ball Spin Frequency (BSF)<\/h3>\r\n            <div class=\"vc-formula-box\" id=\"vc-katex-bsf\"><\/div>\r\n            <p>The rotational frequency of a rolling element about its own axis. Rolling element defects often appear at 2\u00d7 BSF because the defect contacts both races per revolution.<\/p>\r\n\r\n            <div class=\"vc-info-box\">\r\n                <p><strong>Note:<\/strong> These kinematic formulas assume pure rolling with no slip. Actual frequencies can shift with load, clearance, lubrication, speed and slip; use calculated values as search markers rather than exact proof of a defect.<\/p>\r\n            <\/div>\r\n\r\n            <h3>Practical Example<\/h3>\r\n            <div class=\"vc-example-box\">\r\n                <div class=\"vc-example-title\">Worked example \u2014 stated geometry, 1500 RPM<\/div>\r\n                <p><strong>Given:<\/strong> Z = 9, B<sub>d<\/sub> = 7.94 mm, P<sub>d<\/sub> = 38.5 mm, \u03b1 = 0\u00b0, RPM = 1500<\/p>\r\n                <p>Shaft freq = 1500\/60 = 25 Hz<\/p>\r\n                <p>B<sub>d<\/sub>\/P<sub>d<\/sub> = 0.2062, cos(0\u00b0) = 1<\/p>\r\n                <p>FTF = 25\/2 \u00d7 (1 \u2212 0.2062) = <strong>9.92 Hz<\/strong><\/p>\r\n                <p>BPFO = 9\/2 \u00d7 25 \u00d7 (1 \u2212 0.2062) = <strong>89.30 Hz<\/strong><\/p>\r\n                <p>BPFI = 9\/2 \u00d7 25 \u00d7 (1 + 0.2062) = <strong>135.70 Hz<\/strong><\/p>\r\n                <p>BSF = (38.5\/(2\u00d77.94)) \u00d7 25 \u00d7 (1 \u2212 0.2062\u00b2) = <strong>58.03 Hz<\/strong><\/p>\r\n            <\/div>\r\n\r\n            <div class=\"vc-warning-box\">\r\n                <p style=\"margin:0;font-size:14px;color:var(--vc-ink-secondary);\"><strong>\u26a0\ufe0f Note:<\/strong> Use the bearing manufacturer\u2019s internal geometry and contact angle for the exact bearing variant. Do not infer contact angle or rolling-element dimensions from the designation alone.<\/p>\r\n            <\/div>\r\n        <\/div>\r\n    <\/div>\r\n<\/div>\r\n\r\n<!-- Related Calculators -->\r\n<div class=\"vc-section\" id=\"vc-sec-related\">\r\n    <button type=\"button\" class=\"vc-section-toggle\" aria-expanded=\"false\">\r\n        <span class=\"vc-section-toggle-text\">\r\n            <span class=\"vc-section-icon\">\ud83d\udd17<\/span>\r\n            <span class=\"vc-section-title\">Related Calculators<\/span>\r\n        <\/span>\r\n        <svg class=\"vc-section-chevron\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M6 9l6 6 6-6\"\/><\/svg>\r\n    <\/button>\r\n    <div class=\"vc-section-body\">\r\n        <div class=\"vc-section-inner\">\r\n            <div class=\"vc-related\">\r\n                <a class=\"vc-related-link\" href=\"\/calculators\/gear-mesh-frequency\/\">Gear Mesh Frequency<\/a>\r\n                <a class=\"vc-related-link\" href=\"\/calculators\/blade-pass-frequency\/\">Blade Pass Frequency<\/a>\r\n                <a class=\"vc-related-link\" href=\"\/calculators\/motor-electrical-frequencies\/\">Motor Electrical Frequencies<\/a>\r\n                <a class=\"vc-related-link\" href=\"\/calculators\/vibration-velocity\/\">Vibration Velocity (ISO 10816)<\/a>\r\n                <a class=\"vc-related-link\" href=\"\/calculators\/residual-unbalance-iso1940\/\">Residual Unbalance (ISO 1940)<\/a>\r\n            <\/div>\r\n        <\/div>\r\n    <\/div>\r\n<\/div>\r\n\r\n<!-- FAQ -->\r\n<div class=\"vc-section\" id=\"vc-sec-faq\">\r\n    <button type=\"button\" class=\"vc-section-toggle\" aria-expanded=\"false\">\r\n        <span class=\"vc-section-toggle-text\">\r\n            <span class=\"vc-section-icon\">\u2753<\/span>\r\n            <span class=\"vc-section-title\">Frequently Asked Questions<\/span>\r\n        <\/span>\r\n        <svg class=\"vc-section-chevron\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M6 9l6 6 6-6\"\/><\/svg>\r\n    <\/button>\r\n    <div class=\"vc-section-body\">\r\n        <div class=\"vc-section-inner\">\r\n            <div class=\"vc-faq-list\" id=\"vc-faq-list\"><\/div>\r\n        <\/div>\r\n    <\/div>\r\n<\/div>\r\n\r\n<!-- Promo -->\r\n<div class=\"vc-promo\">\r\n    <div class=\"vc-promo-text\">\r\n        <strong>Vibromera \u2014 Portable Balancing &amp; Vibration Analysis<\/strong><br>\r\n        Professional vibration analysis instruments for bearing diagnostics, field balancing, and condition monitoring. Used in 50+ countries.\r\n    <\/div>\r\n    <a class=\"vc-promo-link\" href=\"https:\/\/vibromera.eu\/\" target=\"_blank\" rel=\"noopener\">Learn More<\/a>\r\n<\/div>\r\n\r\n<!-- Footer -->\r\n<footer class=\"vc-footer\">\r\n    <p>&copy; 2024\u20132026 <a href=\"https:\/\/vibromera.eu\/\">Vibromera<\/a> \u2014 Engineering Calculators<\/p>\r\n    <p style=\"font-size:12px;margin-top:4px;\">Bearing defect frequency formulas per standard kinematic equations. Last updated: February 2026<\/p>\r\n    <div class=\"vc-footer-links\">\r\n        <a href=\"\/calculators\/engineering-calculators\/\">All Calculators<\/a>\r\n        <a href=\"https:\/\/vibromera.eu\/contacts\/\">Contact<\/a>\r\n    <\/div>\r\n<\/footer>\r\n\r\n<\/div>\r\n\r\n<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/katex@0.16.11\/dist\/katex.min.js\"><\/script>\r\n<script>\r\n(function() {\r\n    'use strict';\r\n\r\n    var SLUG = 'bearing-defect-frequencies';\r\n    var unitSystem = 'metric';\r\n    var MM2IN = 1 \/ 25.4;\r\n\r\n    function $(id) { return document.getElementById(id); }\r\n    function fmt(n, d) { if (isNaN(n) || !isFinite(n)) return '\u2014'; var f = n.toFixed(d === undefined ? 2 : d); return f.replace(\/(\\.\\d*?)0+$\/, '$1').replace(\/\\.$\/, ''); }\r\n    function parseLocaleNumber(raw) {\r\n        var normalized = String(raw).trim().replace(\/\\s+\/g, '');\r\n        if (!\/^[+-]?(?:\\d+(?:[.,]\\d*)?|[.,]\\d+)$\/.test(normalized)) return NaN;\r\n        return Number(normalized.replace(',', '.'));\r\n    }\r\n\r\n    \/* \u2500\u2500 CALCULATION \u2500\u2500 *\/\r\n    function calculate() {\r\n        var Z = parseLocaleNumber($('vc-z').value);\r\n        var BdVal = parseLocaleNumber($('vc-bd').value);\r\n        var PdVal = parseLocaleNumber($('vc-pd').value);\r\n        var alpha = parseLocaleNumber($('vc-alpha').value);\r\n        var RPM = parseLocaleNumber($('vc-rpm').value);\r\n\r\n        if (!Number.isInteger(Z) || Z < 3 || !isFinite(BdVal) || BdVal <= 0 || !isFinite(PdVal) || PdVal <= 0 || BdVal >= PdVal || !isFinite(alpha) || alpha < 0 || alpha >= 90 || !isFinite(RPM) || RPM <= 0) {\r\n            $('vc-results').classList.remove('vc-visible');\r\n            return;\r\n        }\r\n\r\n        \/\/ Convert to mm if imperial\r\n        var Bd = unitSystem === 'imperial' ? BdVal * 25.4 : BdVal;\r\n        var Pd = unitSystem === 'imperial' ? PdVal * 25.4 : PdVal;\r\n\r\n        var cosA = Math.cos(alpha * Math.PI \/ 180);\r\n        var ratio = Bd \/ Pd;\r\n        var shaftFreq = RPM \/ 60;\r\n\r\n        var FTF = (shaftFreq \/ 2) * (1 - ratio * cosA);\r\n        var BPFO = (Z \/ 2) * shaftFreq * (1 - ratio * cosA);\r\n        var BPFI = (Z \/ 2) * shaftFreq * (1 + ratio * cosA);\r\n        var BSF = (Pd \/ (2 * Bd)) * shaftFreq * (1 - Math.pow(ratio * cosA, 2));\r\n\r\n        \/\/ Display results\r\n        $('vc-r-bpfo').innerHTML = fmt(BPFO, 2) + ' <span class=\"vc-rcard-unit\">Hz<\/span> <span class=\"vc-rcard-unit\">(' + fmt(BPFO \/ shaftFreq, 2) + '\u00d7)<\/span>';\r\n        $('vc-r-bpfi').innerHTML = fmt(BPFI, 2) + ' <span class=\"vc-rcard-unit\">Hz<\/span> <span class=\"vc-rcard-unit\">(' + fmt(BPFI \/ shaftFreq, 2) + '\u00d7)<\/span>';\r\n        $('vc-r-bsf').innerHTML = fmt(BSF, 2) + ' <span class=\"vc-rcard-unit\">Hz<\/span> <span class=\"vc-rcard-unit\">(' + fmt(BSF \/ shaftFreq, 2) + '\u00d7)<\/span>';\r\n        $('vc-r-ftf').innerHTML = fmt(FTF, 2) + ' <span class=\"vc-rcard-unit\">Hz<\/span> <span class=\"vc-rcard-unit\">(' + fmt(FTF \/ shaftFreq, 3) + '\u00d7)<\/span>';\r\n        $('vc-r-shaft').innerHTML = fmt(shaftFreq, 2) + ' <span class=\"vc-rcard-unit\">Hz<\/span> <span class=\"vc-rcard-unit\">(' + fmt(RPM) + ' RPM)<\/span>';\r\n\r\n        \/\/ Harmonics table\r\n        var freqs = [\r\n            { name: 'BPFO', val: BPFO },\r\n            { name: 'BPFI', val: BPFI },\r\n            { name: 'BSF', val: BSF },\r\n            { name: 'FTF', val: FTF }\r\n        ];\r\n        var tbody = $('vc-harmonics-body');\r\n        tbody.innerHTML = '';\r\n        freqs.forEach(function(f) {\r\n            var row = '<tr>';\r\n            row += '<td><strong>' + f.name + '<\/strong><\/td>';\r\n            for (var h = 1; h <= 3; h++) {\r\n                var hVal = f.val * h;\r\n                row += '<td>' + fmt(hVal, 2) + '<\/td>';\r\n                row += '<td>' + fmt(hVal \/ shaftFreq, 2) + '\u00d7<\/td>';\r\n            }\r\n            row += '<\/tr>';\r\n            tbody.innerHTML += row;\r\n        });\r\n\r\n        $('vc-results').classList.add('vc-visible');\r\n\r\n        \/\/ URL params\r\n        var u = new URL(window.location);\r\n        u.searchParams.set('z', Z);\r\n        u.searchParams.set('bd', $('vc-bd').value);\r\n        u.searchParams.set('pd', $('vc-pd').value);\r\n        u.searchParams.set('alpha', alpha);\r\n        u.searchParams.set('rpm', RPM);\r\n        u.searchParams.set('system', unitSystem);\r\n        history.replaceState(null, '', u.toString());\r\n\r\n        \/\/ History\r\n        saveHistory({\r\n            z: Z, bd: $('vc-bd').value, pd: $('vc-pd').value, alpha: alpha, rpm: RPM,\r\n            _summary: 'Z=' + Z + ', Bd=' + $('vc-bd').value + ', Pd=' + $('vc-pd').value + ', ' + RPM + ' RPM'\r\n        });\r\n        drawSpectrumViz(BPFO, BPFI, BSF, FTF, shaftFreq);\r\n    }\r\n\r\n    function drawSpectrumViz(BPFO, BPFI, BSF, FTF, shaft){\r\n        var el=$('vc-spectrum-viz');if(!el)return;\r\n        var maxF=Math.max(BPFI*3,BPFO*3)*1.15+shaft;\r\n        var SW=700,SH=250,ml=50,mr=20,mt=50,mb=55,pw=SW-ml-mr,ph=SH-mt-mb;\r\n        function fx(f){return ml+f\/maxF*pw;}\r\n        var s='<svg viewBox=\"0 0 700 250\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"font-family:var(--vc-mono)\">';\r\n        s+='<line x1=\"'+ml+'\" y1=\"'+(mt+ph)+'\" x2=\"'+(ml+pw)+'\" y2=\"'+(mt+ph)+'\" stroke=\"var(--vc-ink)\" stroke-width=\"1.5\"\/>';\r\n        s+='<line x1=\"'+ml+'\" y1=\"'+mt+'\" x2=\"'+ml+'\" y2=\"'+(mt+ph)+'\" stroke=\"var(--vc-ink)\" stroke-width=\"1\"\/>';\r\n        var tStep=Math.pow(10,Math.floor(Math.log10(maxF\/5)));\r\n        if(maxF\/tStep>10)tStep*=2;if(maxF\/tStep<4)tStep\/=2;\r\n        for(var t=0;t<=maxF;t+=tStep){\r\n            var tx=fx(t);\r\n            s+='<line x1=\"'+tx+'\" y1=\"'+(mt+ph)+'\" x2=\"'+tx+'\" y2=\"'+(mt+ph+5)+'\" stroke=\"var(--vc-ink)\" stroke-width=\"1\"\/>';\r\n            s+='<text x=\"'+tx+'\" y=\"'+(mt+ph+17)+'\" text-anchor=\"middle\" fill=\"var(--vc-ink-muted)\" font-size=\"8.5\">'+Math.round(t)+'<\/text>';\r\n            s+='<line x1=\"'+tx+'\" y1=\"'+mt+'\" x2=\"'+tx+'\" y2=\"'+(mt+ph)+'\" stroke=\"var(--vc-border-light)\" stroke-width=\"0.5\"\/>';\r\n        }\r\n        s+='<text x=\"'+(ml+pw\/2)+'\" y=\"'+(SH-mb+35)+'\" text-anchor=\"middle\" fill=\"var(--vc-ink-secondary)\" font-size=\"10\">Frequency (Hz)<\/text>';\r\n        var hts=[0.85,0.55,0.35];\r\n        var peaks=[];\r\n        function addP(freq,h,color,name){\r\n            var ht=hts[h-1]*ph;var x=fx(freq);\r\n            if(x<ml||x>ml+pw)return;\r\n            s+='<rect x=\"'+(x-2.5)+'\" y=\"'+(mt+ph-ht)+'\" width=\"5\" height=\"'+ht+'\" fill=\"'+color+'\" rx=\"1\" opacity=\"0.85\"\/>';\r\n            peaks.push({x:x,y:mt+ph-ht,name:name,color:color});\r\n        }\r\n        s+='<line x1=\"'+fx(shaft)+'\" y1=\"'+mt+'\" x2=\"'+fx(shaft)+'\" y2=\"'+(mt+ph)+'\" stroke=\"var(--vc-ink-muted)\" stroke-width=\"1\" stroke-dasharray=\"4,3\"\/>';\r\n        peaks.push({x:fx(shaft),y:mt+8,name:'1\\u00D7',color:'var(--vc-ink-muted)'});\r\n        for(var h=1;h<=3;h++)addP(BPFO*h,h,'var(--vc-accent)',h===1?'BPFO':h+'\\u00D7BPFO');\r\n        for(var h=1;h<=3;h++)addP(BPFI*h,h,'var(--vc-blue)',h===1?'BPFI':h+'\\u00D7BPFI');\r\n        for(var h=1;h<=3;h++)addP(BSF*h,h,'var(--vc-green)',h===1?'BSF':h+'\\u00D7BSF');\r\n        addP(FTF,1,'var(--vc-yellow)','FTF');\r\n        peaks.sort(function(a,b){return a.x-b.x;});\r\n        for(var i=0;i<peaks.length;i++){var p=peaks[i];\r\n            s+='<text x=\"'+p.x+'\" y=\"'+(p.y-5)+'\" text-anchor=\"start\" fill=\"'+p.color+'\" font-size=\"8\" font-weight=\"500\" transform=\"rotate(-45,'+p.x+','+(p.y-5)+')\">'+p.name+'<\/text>';\r\n        }\r\n        var lg=[{c:'var(--vc-accent)',n:'BPFO'},{c:'var(--vc-blue)',n:'BPFI'},{c:'var(--vc-green)',n:'BSF'},{c:'var(--vc-yellow)',n:'FTF'},{c:'var(--vc-ink-muted)',n:'1\\u00D7 Shaft'}];\r\n        var lx=ml;\r\n        for(var i=0;i<lg.length;i++){\r\n            s+='<rect x=\"'+lx+'\" y=\"'+(SH-14)+'\" width=\"10\" height=\"6\" fill=\"'+lg[i].c+'\" rx=\"1\"\/>';\r\n            s+='<text x=\"'+(lx+14)+'\" y=\"'+(SH-8)+'\" fill=\"var(--vc-ink-muted)\" font-size=\"8\">'+lg[i].n+'<\/text>';\r\n            lx+=lg[i].n.length*5.5+22;\r\n        }\r\n        s+='<\/svg>';\r\n        el.innerHTML='<div class=\"vc-viz-title\">Frequency Spectrum<\/div>'+s;\r\n    }\r\n\r\n    \/* \u2500\u2500 UNIT TOGGLE \u2500\u2500 *\/\r\n    var unitBtns = document.querySelectorAll('.vc-unit-btn');\r\n    unitBtns.forEach(function(btn) {\r\n        btn.addEventListener('click', function() {\r\n            var nextSystem = this.getAttribute('data-system');\r\n            if (nextSystem !== unitSystem) {\r\n                var currentBd = parseLocaleNumber($('vc-bd').value);\r\n                var currentPd = parseLocaleNumber($('vc-pd').value);\r\n                if (isFinite(currentBd) && currentBd > 0) $('vc-bd').value = fmt(nextSystem === 'imperial' ? currentBd * MM2IN : currentBd \/ MM2IN, 5);\r\n                if (isFinite(currentPd) && currentPd > 0) $('vc-pd').value = fmt(nextSystem === 'imperial' ? currentPd * MM2IN : currentPd \/ MM2IN, 5);\r\n                unitSystem = nextSystem;\r\n            }\r\n            unitBtns.forEach(function(b) { b.classList.toggle('vc-active', b.getAttribute('data-system') === unitSystem); });\r\n            var hint = unitSystem === 'imperial' ? '(in)' : '(mm)';\r\n            $('vc-bd-unit').textContent = hint;\r\n            $('vc-pd-unit').textContent = hint;\r\n            try { localStorage.setItem('vc_units_' + SLUG, unitSystem); } catch(e) {}\r\n            calculate();\r\n        });\r\n    });\r\n\r\n    \/* \u2500\u2500 PRESETS \u2500\u2500 *\/\r\n    document.querySelectorAll('.vc-preset-btn').forEach(function(btn) {\r\n        btn.addEventListener('click', function(e) {\r\n            e.preventDefault();\r\n            var bd = parseFloat(this.getAttribute('data-bd'));\r\n            var pd = parseFloat(this.getAttribute('data-pd'));\r\n            $('vc-z').value = this.getAttribute('data-z');\r\n            $('vc-bd').value = unitSystem === 'imperial' ? fmt(bd * MM2IN, 4) : bd;\r\n            $('vc-pd').value = unitSystem === 'imperial' ? fmt(pd * MM2IN, 4) : pd;\r\n            $('vc-alpha').value = this.getAttribute('data-a');\r\n            $('vc-rpm').value = this.getAttribute('data-rpm');\r\n            calculate();\r\n        });\r\n    });\r\n\r\n    \/* \u2500\u2500 AUTO-CALCULATE \u2500\u2500 *\/\r\n    $('vc-form').addEventListener('input', calculate);\r\n    $('vc-form').addEventListener('change', calculate);\r\n\r\n    \/* \u2500\u2500 COPY \u2500\u2500 *\/\r\n    $('vc-copy-btn').addEventListener('click', function() {\r\n        var text = 'Bearing Defect Frequency Calculation\\n' +\r\n            '\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\\n' +\r\n            'Rolling elements (Z): ' + $('vc-z').value + '\\n' +\r\n            'Ball diameter: ' + $('vc-bd').value + (unitSystem === 'imperial' ? ' in' : ' mm') + '\\n' +\r\n            'Pitch diameter: ' + $('vc-pd').value + (unitSystem === 'imperial' ? ' in' : ' mm') + '\\n' +\r\n            'Contact angle: ' + $('vc-alpha').value + '\u00b0\\n' +\r\n            'Shaft speed: ' + $('vc-rpm').value + ' RPM\\n' +\r\n            '\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\\n' +\r\n            'BPFO: ' + $('vc-r-bpfo').textContent + '\\n' +\r\n            'BPFI: ' + $('vc-r-bpfi').textContent + '\\n' +\r\n            'BSF: ' + $('vc-r-bsf').textContent + '\\n' +\r\n            'FTF: ' + $('vc-r-ftf').textContent + '\\n' +\r\n            '\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\\n' +\r\n            'vibromera.eu\/calculators\/bearing-defect-frequencies\/';\r\n\r\n        if (navigator.clipboard) {\r\n            navigator.clipboard.writeText(text).then(function() {\r\n                var btn = $('vc-copy-btn');\r\n                btn.classList.add('vc-copied');\r\n                btn.innerHTML = '<svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><polyline points=\"20 6 9 17 4 12\"\/><\/svg> Copied!';\r\n                setTimeout(function() {\r\n                    btn.classList.remove('vc-copied');\r\n                    btn.innerHTML = '<svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><rect x=\"9\" y=\"9\" width=\"13\" height=\"13\" rx=\"2\"\/><path d=\"M5 15H4a2 2 0 01-2-2V4a2 2 0 012-2h9a2 2 0 012 2v1\"\/><\/svg> Copy';\r\n                }, 2000);\r\n            });\r\n        }\r\n    });\r\n\r\n    \/* \u2500\u2500 COLLAPSIBLE SECTIONS \u2500\u2500 *\/\r\n    document.querySelectorAll('.vc-section-toggle').forEach(function(btn) {\r\n        btn.addEventListener('click', function() {\r\n            var section = this.closest('.vc-section');\r\n            var isOpen = section.classList.contains('vc-open');\r\n            section.classList.toggle('vc-open');\r\n            this.setAttribute('aria-expanded', !isOpen);\r\n        });\r\n    });\r\n\r\n    \/* \u2500\u2500 FAQ \u2500\u2500 *\/\r\n    var faqData = [\r\n        { q: 'What are bearing defect frequencies?', a: '<p>Bearing defect frequencies are characteristic vibration frequencies generated when a rolling element bearing has a localized defect. Each bearing component \u2014 outer race, inner race, rolling elements, and cage \u2014 produces a unique frequency pattern based on bearing geometry and shaft speed.<\/p><p>The four key frequencies are: <strong>BPFO<\/strong> (Ball Pass Frequency Outer), <strong>BPFI<\/strong> (Ball Pass Frequency Inner), <strong>BSF<\/strong> (Ball Spin Frequency), and <strong>FTF<\/strong> (Fundamental Train\/Cage Frequency).<\/p>' },\r\n        { q: 'How can an outer race fault appear in a spectrum?', a: '<p>An outer-race defect can produce components near BPFO and its harmonics. FTF or other sidebands can also be present because load, slip and modulation affect the response.<\/p><p>A frequency match alone is not proof. Confirm with envelope analysis, trends, operating condition and inspection context.<\/p>' },\r\n        { q: 'What is the difference between inner and outer race indicators?', a: '<p>Outer-race defects are investigated around BPFO; inner-race defects around BPFI. Shaft-speed modulation is common around BPFI, while BPFO can also show FTF or other sidebands.<\/p><p>Interpret both patterns together with load, measurement position, envelope spectrum and trends.<\/p>' },\r\n        { q: 'Why do harmonics matter in bearing analysis?', a: '<p>Harmonics and sidebands can strengthen a bearing-fault hypothesis, but their count is not a universal severity scale or remaining-life calculation.<\/p><p>Evaluate amplitudes and trends together with envelope spectra, noise floor, operating condition and corroborating measurements.<\/p>' },\r\n        { q: 'Where can I find bearing geometry data?', a: '<p>Use geometry supplied by the bearing manufacturer or a verified bearing database for the exact designation and internal design suffix.<\/p><p>Bore and outside diameter do not uniquely determine rolling-element diameter, pitch diameter or contact angle. If exact geometry is unavailable, report the calculated frequencies as an estimate and validate against measured spectra; do not present inferred geometry as manufacturer data.<\/p>' }\r\n    ];\r\n\r\n    var faqList = $('vc-faq-list');\r\n    faqData.forEach(function(faq) {\r\n        faqList.innerHTML += '<div class=\"vc-faq-item\"><button type=\"button\" class=\"vc-faq-q\"><span>' + faq.q + '<\/span><svg class=\"vc-faq-chevron\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M6 9l6 6 6-6\"\/><\/svg><\/button><div class=\"vc-faq-a\"><div class=\"vc-faq-a-inner\">' + faq.a + '<\/div><\/div><\/div>';\r\n    });\r\n    faqList.addEventListener('click', function(e) {\r\n        var btn = e.target.closest('.vc-faq-q');\r\n        if (!btn) return;\r\n        btn.closest('.vc-faq-item').classList.toggle('vc-open');\r\n    });\r\n\r\n    \/* \u2500\u2500 HISTORY \u2500\u2500 *\/\r\n    function saveHistory(entry) {\r\n        var key = 'vc_history_' + SLUG;\r\n        var arr = [];\r\n        try { arr = JSON.parse(localStorage.getItem(key)) || []; } catch(e) {}\r\n        entry._ts = new Date().toISOString();\r\n        arr.unshift(entry);\r\n        if (arr.length > 10) arr = arr.slice(0, 10);\r\n        try { localStorage.setItem(key, JSON.stringify(arr)); } catch(e) {}\r\n    }\r\n\r\n    \/* \u2500\u2500 URL PARAMS \u2500\u2500 *\/\r\n    function loadParams() {\r\n        var p = new URLSearchParams(window.location.search);\r\n        var requestedSystem = p.get('system');\r\n        if (requestedSystem === 'metric' || requestedSystem === 'imperial') unitSystem = requestedSystem;\r\n        if (p.has('z')) $('vc-z').value = p.get('z');\r\n        if (p.has('bd')) $('vc-bd').value = p.get('bd');\r\n        if (p.has('pd')) $('vc-pd').value = p.get('pd');\r\n        if (p.has('alpha')) $('vc-alpha').value = p.get('alpha');\r\n        if (p.has('rpm')) $('vc-rpm').value = p.get('rpm');\r\n        unitBtns.forEach(function(b) { b.classList.toggle('vc-active', b.getAttribute('data-system') === unitSystem); });\r\n        var hint = unitSystem === 'imperial' ? '(in)' : '(mm)';\r\n        $('vc-bd-unit').textContent = hint;\r\n        $('vc-pd-unit').textContent = hint;\r\n    }\r\n\r\n    \/* \u2500\u2500 KATEX \u2500\u2500 *\/\r\n    function renderFormulas() {\r\n        try {\r\n            katex.render('\\\\text{FTF} = \\\\frac{f_s}{2} \\\\left(1 - \\\\frac{B_d}{P_d} \\\\cos\\\\alpha\\\\right) \\\\quad [\\\\text{Hz}]', $('vc-katex-ftf'), { displayMode: true, throwOnError: false });\r\n            katex.render('\\\\text{BPFO} = \\\\frac{Z}{2} \\\\cdot f_s \\\\left(1 - \\\\frac{B_d}{P_d} \\\\cos\\\\alpha\\\\right) \\\\quad [\\\\text{Hz}]', $('vc-katex-bpfo'), { displayMode: true, throwOnError: false });\r\n            katex.render('\\\\text{BPFI} = \\\\frac{Z}{2} \\\\cdot f_s \\\\left(1 + \\\\frac{B_d}{P_d} \\\\cos\\\\alpha\\\\right) \\\\quad [\\\\text{Hz}]', $('vc-katex-bpfi'), { displayMode: true, throwOnError: false });\r\n            katex.render('\\\\text{BSF} = \\\\frac{P_d}{2 B_d} \\\\cdot f_s \\\\left[1 - \\\\left(\\\\frac{B_d}{P_d} \\\\cos\\\\alpha\\\\right)^2\\\\right] \\\\quad [\\\\text{Hz}]', $('vc-katex-bsf'), { displayMode: true, throwOnError: false });\r\n        } catch(e) {}\r\n    }\r\n\r\n    \/* \u2500\u2500 INIT \u2500\u2500 *\/\r\n    function init() {\r\n        try {\r\n            var saved = localStorage.getItem('vc_units_' + SLUG);\r\n            if (saved === 'imperial') {\r\n                unitSystem = 'imperial';\r\n                unitBtns.forEach(function(b) { b.classList.toggle('vc-active', b.getAttribute('data-system') === 'imperial'); });\r\n                $('vc-bd-unit').textContent = '(in)';\r\n                $('vc-pd-unit').textContent = '(in)';\r\n            }\r\n        } catch(e) {}\r\n\r\n        loadParams();\r\n        renderFormulas();\r\n        calculate();\r\n    }\r\n\r\n    if (document.readyState === 'loading') {\r\n        document.addEventListener('DOMContentLoaded', init);\r\n    } else {\r\n        init();\r\n    }\r\n})();\r\n<\/script>\r\n","protected":false},"excerpt":{"rendered":"<p>Bezplatn\u00e1 online kalkula\u010dka frekvence vad lo\u017eisek. Vypo\u010d\u00edtejte BPFO, BPFI, BSF, FTF a jejich harmonick\u00e9 z geometrie lo\u017eiska a ot\u00e1\u010dek h\u0159\u00eddele. Podporuje b\u011b\u017en\u00e9 p\u0159edvolby lo\u017eisek.<\/p>","protected":false},"featured_media":0,"template":"","meta":{"ai_generated_summary":"","footnotes":""},"categories":[],"tags":[],"class_list":["post-100015","calculator","type-calculator","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/vibromera.eu\/cs\/wp-json\/wp\/v2\/calculator\/100015","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vibromera.eu\/cs\/wp-json\/wp\/v2\/calculator"}],"about":[{"href":"https:\/\/vibromera.eu\/cs\/wp-json\/wp\/v2\/types\/calculator"}],"version-history":[{"count":2,"href":"https:\/\/vibromera.eu\/cs\/wp-json\/wp\/v2\/calculator\/100015\/revisions"}],"predecessor-version":[{"id":102308,"href":"https:\/\/vibromera.eu\/cs\/wp-json\/wp\/v2\/calculator\/100015\/revisions\/102308"}],"wp:attachment":[{"href":"https:\/\/vibromera.eu\/cs\/wp-json\/wp\/v2\/media?parent=100015"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vibromera.eu\/cs\/wp-json\/wp\/v2\/categories?post=100015"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vibromera.eu\/cs\/wp-json\/wp\/v2\/tags?post=100015"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}