{"id":100093,"date":"2026-02-15T20:17:53","date_gmt":"2026-02-15T20:17:53","guid":{"rendered":"https:\/\/vibromera.eu\/?post_type=calculator&#038;p=100093"},"modified":"2026-02-15T20:17:53","modified_gmt":"2026-02-15T20:17:53","slug":"fft-resolution-calculator","status":"publish","type":"calculator","link":"https:\/\/vibromera.eu\/sw\/calculators\/fft-resolution-calculator\/","title":{"rendered":"Kikokotoo cha Azimio la FFT | Mistari, Bandwidth, Fmax"},"content":{"rendered":"\n<script type=\"application\/ld+json\">\n{\"@context\":\"https:\/\/schema.org\",\"@type\":\"WebApplication\",\"name\":\"FFT Resolution Calculator\",\"alternateName\":[\"FFT Lines Calculator\",\"Frequency Resolution Calculator\",\"FFT Bandwidth Calculator\"],\"description\":\"Free online FFT resolution calculator. Compute frequency resolution \u0394f, time record, sampling rate and Nyquist frequency from FFT lines and Fmax.\",\"url\":\"https:\/\/vibromera.eu\/calculators\/fft-resolution-calculator\/\",\"applicationCategory\":\"Engineering Calculator\",\"operatingSystem\":\"Any (Web Browser)\",\"offers\":{\"@type\":\"Offer\",\"price\":\"0\",\"priceCurrency\":\"EUR\"},\"creator\":{\"@type\":\"Organization\",\"name\":\"Vibromera\",\"url\":\"https:\/\/vibromera.eu\/\"},\"datePublished\":\"2024-01-01\",\"dateModified\":\"2025-02-14\",\"inLanguage\":\"en\",\"isAccessibleForFree\":true,\"featureList\":[\"FFT lines 400-6400\",\"Frequency resolution calculation\",\"Bearing defect frequency check\",\"Auto-calculation on input change\",\"URL parameter sharing\"],\"keywords\":\"FFT resolution, frequency resolution, FFT lines, Fmax, Nyquist, vibration analysis\"}\n<\/script>\n\n<script type=\"application\/ld+json\">\n{\"@context\":\"https:\/\/schema.org\",\"@type\":\"FAQPage\",\"mainEntity\":[\n{\"@type\":\"Question\",\"name\":\"What is FFT frequency resolution?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"FFT frequency resolution (\u0394f) is the smallest frequency difference that can be distinguished in a spectrum. It equals Fmax divided by the number of lines: \u0394f = Fmax \/ Lines.\"}},\n{\"@type\":\"Question\",\"name\":\"How many FFT lines do I need?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"More lines give finer resolution but require longer acquisition time. 400 lines is common for general monitoring, 800-1600 for diagnostics, 3200-6400 for detailed bearing or gearbox analysis.\"}},\n{\"@type\":\"Question\",\"name\":\"What is the relationship between sampling rate and Fmax?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Most analyzers use a sampling rate of 2.56 \u00d7 Fmax. The factor 2.56 (rather than 2.0 from Nyquist) provides margin for the anti-aliasing filter.\"}},\n{\"@type\":\"Question\",\"name\":\"Can I resolve bearing defect frequencies with 400 lines?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"It depends on the Fmax. For example, 400 lines with Fmax=1000 Hz gives \u0394f=2.5 Hz. Typical BPFO frequencies for a shaft at 1500 RPM are around 100-150 Hz \u2014 resolvable, but sidebands at \u00b125 Hz spacing would need finer resolution to separate clearly.\"}}\n]}\n<\/script>\n\n<script type=\"application\/ld+json\">\n{\"@context\":\"https:\/\/schema.org\",\"@type\":\"BreadcrumbList\",\"itemListElement\":[\n{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/vibromera.eu\/\"},\n{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Calculators\",\"item\":\"https:\/\/vibromera.eu\/calculators\/\"},\n{\"@type\":\"ListItem\",\"position\":3,\"name\":\"FFT Resolution Calculator\",\"item\":\"https:\/\/vibromera.eu\/calculators\/fft-resolution-calculator\/\"}\n]}\n<\/script>\n\n<link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\n\n<link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin>\n\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\">\n\n<link rel=\"stylesheet\" href=\"https:\/\/cdn.jsdelivr.net\/npm\/katex@0.16.11\/dist\/katex.min.css\">\n\n<style>\n:root {\n    --vc-bg: #f4f1ec;\n    --vc-surface: #ffffff;\n    --vc-surface-alt: #f8f6f2;\n    --vc-ink: #1a1a1a;\n    --vc-ink-secondary: #5a5650;\n    --vc-ink-muted: #8a857e;\n    --vc-accent: #c85a2a;\n    --vc-accent-hover: #b04d22;\n    --vc-accent-light: #fdf0ea;\n    --vc-blue: #2a5c8c;\n    --vc-blue-light: #eaf1f8;\n    --vc-green: #2a7a4b;\n    --vc-green-light: #eaf8ef;\n    --vc-yellow: #a67c00;\n    --vc-yellow-light: #fef9e8;\n    --vc-red: #b91c1c;\n    --vc-red-light: #fef2f2;\n    --vc-border: #d9d4cc;\n    --vc-border-light: #e8e4dd;\n    --vc-shadow: 0 1px 3px rgba(26,26,26,0.06), 0 4px 12px rgba(26,26,26,0.04);\n    --vc-shadow-lg: 0 4px 12px rgba(26,26,26,0.08), 0 16px 40px rgba(26,26,26,0.06);\n    --vc-radius: 8px;\n    --vc-radius-lg: 12px;\n    --vc-font: 'DM Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;\n    --vc-mono: 'JetBrains Mono', 'Consolas', 'Monaco', monospace;\n    --vc-display: 'Fraunces', Georgia, serif;\n}\n.vc-calculator { font-family: var(--vc-font); font-size: 15px; line-height: 1.65; color: var(--vc-ink); max-width: 960px; margin: 0 auto; padding: 20px 16px 40px; -webkit-font-smoothing: antialiased; }\n.vc-calculator *, .vc-calculator *::before, .vc-calculator *::after { box-sizing: border-box; }\n.vc-header { text-align: center; padding: 48px 24px 40px; position: relative; }\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; }\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; }\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; }\n.vc-header-subtitle { font-size:15px; color:var(--vc-ink-secondary); margin:0 auto 20px; max-width:600px; }\n.vc-badges { display:inline-flex; gap:8px; flex-wrap:wrap; justify-content:center; }\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); }\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; }\n.vc-form { padding:24px; }\n.vc-form-grid { display:grid; grid-template-columns:1fr 1fr; gap:18px; }\n@media(max-width:600px) { .vc-form-grid { grid-template-columns:1fr; } }\n.vc-field { display:flex; flex-direction:column; }\n.vc-field-full { grid-column: 1 \/ -1; }\n.vc-label { font-size:12px; font-weight:600; letter-spacing:0.04em; text-transform:uppercase; color:var(--vc-ink-secondary); margin-bottom:6px; }\n.vc-label-hint { font-weight:400; text-transform:none; letter-spacing:0; color:var(--vc-ink-muted); font-size:11px; }\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; }\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; }\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); }\n.vc-select:hover, .vc-input:hover { border-color:var(--vc-ink-muted); }\n.vc-presets { display:flex; flex-wrap:wrap; gap:8px; margin-top:18px; padding-top:18px; border-top:1px solid var(--vc-border-light); }\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; }\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; }\n.vc-preset-btn:hover { border-color:var(--vc-accent); color:var(--vc-accent); background:var(--vc-accent-light); }\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; }\n.vc-results.vc-visible { max-height:3000px; padding:24px; }\n.vc-results-head { display:flex; align-items:center; justify-content:space-between; margin-bottom:18px; }\n.vc-results-title { font-family:var(--vc-display); font-size:20px; font-weight:700; color:var(--vc-ink); margin:0; }\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; }\n.vc-copy-btn:hover { border-color:var(--vc-accent); color:var(--vc-accent); }\n.vc-copy-btn.vc-copied { background:var(--vc-green-light); border-color:var(--vc-green); color:var(--vc-green); }\n.vc-result-grid { display:grid; grid-template-columns:1fr 1fr; gap:12px; margin-bottom:20px; }\n@media(max-width:500px) { .vc-result-grid { grid-template-columns:1fr; } }\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; }\n.vc-rcard:hover { transform:translateY(-1px); }\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; }\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; }\n.vc-rcard-value { font-family:var(--vc-mono); font-size:22px; font-weight:600; color:var(--vc-ink); line-height:1.2; }\n.vc-rcard-primary .vc-rcard-value { font-size:30px; color:var(--vc-accent); }\n.vc-rcard-unit { font-size:14px; font-weight:400; color:var(--vc-ink-secondary); }\n\n\/* Bearing defect info *\/\n.vc-bearing-box { margin-top:16px; padding:16px; background:var(--vc-surface); border:1px solid var(--vc-border-light); border-radius:var(--vc-radius); }\n.vc-bearing-title { font-family:var(--vc-mono); font-size:11px; font-weight:600; letter-spacing:0.08em; text-transform:uppercase; color:var(--vc-ink-secondary); margin-bottom:10px; }\n.vc-bearing-row { display:flex; justify-content:space-between; align-items:center; padding:6px 0; border-bottom:1px solid var(--vc-border-light); font-size:13px; }\n.vc-bearing-row:last-child { border-bottom:none; }\n.vc-bearing-name { color:var(--vc-ink-secondary); }\n.vc-bearing-status { font-family:var(--vc-mono); font-size:12px; font-weight:600; padding:2px 8px; border-radius:4px; }\n.vc-bearing-ok { background:var(--vc-green-light); color:var(--vc-green); }\n.vc-bearing-warn { background:var(--vc-yellow-light); color:var(--vc-yellow); }\n.vc-bearing-bad { background:var(--vc-red-light); color:var(--vc-red); }\n\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; }\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; }\n.vc-section-toggle:hover { background:var(--vc-surface-alt); }\n.vc-section-toggle-text { display:flex; align-items:center; gap:10px; }\n.vc-section-icon { font-size:20px; line-height:1; }\n.vc-section-title { font-family:var(--vc-display); font-size:18px; font-weight:700; color:var(--vc-ink); margin:0; }\n.vc-section-chevron { width:20px; height:20px; color:var(--vc-ink-muted); transition:transform 0.3s; flex-shrink:0; }\n.vc-section.vc-open .vc-section-chevron { transform:rotate(180deg); }\n.vc-section-body { max-height:0; overflow:hidden; transition:max-height 0.4s cubic-bezier(0.4,0,0.2,1); }\n.vc-section.vc-open .vc-section-body { max-height:20000px; }\n.vc-section-inner { padding:0 24px 24px; border-top:1px solid var(--vc-border-light); }\n.vc-theory h3 { font-family:var(--vc-display); font-size:17px; font-weight:700; color:var(--vc-ink); margin:28px 0 10px; }\n.vc-theory h3:first-child { margin-top:20px; }\n.vc-theory p { font-size:14px; color:var(--vc-ink-secondary); margin:0 0 10px; }\n.vc-theory ul, .vc-theory ol { font-size:14px; color:var(--vc-ink-secondary); margin:0 0 12px 18px; padding:0; }\n.vc-theory li { margin-bottom:5px; }\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; }\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; }\n.vc-info-box p { margin:0; font-size:14px; color:var(--vc-ink-secondary); }\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; }\n.vc-example-box { background:var(--vc-surface-alt); border:1px solid var(--vc-border-light); border-radius:6px; padding:16px; margin:14px 0; }\n.vc-example-title { font-family:var(--vc-mono); font-size:13px; font-weight:600; color:var(--vc-accent); margin-bottom:8px; }\n.vc-table { width:100%; border-collapse:collapse; margin:14px 0; font-size:13px; }\n.vc-table th, .vc-table td { padding:10px 12px; border:1px solid var(--vc-border-light); text-align:left; }\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); }\n.vc-table tr:nth-child(even) { background:var(--vc-surface-alt); }\n@media(max-width:600px) { .vc-table { font-size:12px; } .vc-table th, .vc-table td { padding:8px; } }\n.vc-faq-list { display:flex; flex-direction:column; gap:8px; margin-top:20px; }\n.vc-faq-item { border:1px solid var(--vc-border-light); border-radius:6px; overflow:hidden; }\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; }\n.vc-faq-q:hover { background:#ede9e3; }\n.vc-faq-chevron { width:16px; height:16px; color:var(--vc-ink-muted); flex-shrink:0; transition:transform 0.25s; }\n.vc-faq-item.vc-open .vc-faq-chevron { transform:rotate(180deg); }\n.vc-faq-a { max-height:0; overflow:hidden; transition:max-height 0.35s; }\n.vc-faq-item.vc-open .vc-faq-a { max-height:1200px; }\n.vc-faq-a-inner { padding:14px 16px; border-top:1px solid var(--vc-border-light); font-size:14px; color:var(--vc-ink-secondary); }\n.vc-faq-a-inner p { margin:0 0 8px; } .vc-faq-a-inner p:last-child { margin-bottom:0; }\n.vc-faq-a-inner ul { margin:4px 0 8px 16px; padding:0; } .vc-faq-a-inner li { margin-bottom:3px; }\n.vc-related { display:flex; flex-wrap:wrap; gap:10px; margin-top:16px; }\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; }\n.vc-related-link:hover { border-color:var(--vc-accent); color:var(--vc-accent); background:var(--vc-accent-light); }\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; }\n.vc-promo-text { flex:1; font-size:14px; color:var(--vc-ink-secondary); }\n.vc-promo-text strong { color:var(--vc-ink); }\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; }\n.vc-promo-link:hover { background:var(--vc-accent-hover); }\n.vc-footer { text-align:center; padding:32px 16px; font-size:13px; color:var(--vc-ink-muted); }\n.vc-footer a { color:var(--vc-accent); text-decoration:none; } .vc-footer a:hover { text-decoration:underline; }\n.vc-footer-links { margin-top:8px; font-size:12px; } .vc-footer-links a { margin:0 8px; }\n@media print {\n    .vc-section-body { max-height:none!important; }\n    .vc-faq-a { max-height:none!important; }\n    .vc-results { max-height:none!important; padding:24px!important; }\n    .vc-copy-btn, .vc-section-chevron, .vc-faq-chevron, .vc-presets, .vc-promo { display:none!important; }\n}\n<\/style>\n\n<div class=\"vc-calculator\" id=\"vc-fft-resolution\">\n\n<header class=\"vc-header\">\n    <p class=\"vc-header-eyebrow\">Free Engineering Tool<\/p>\n    <h1 class=\"vc-header-title\">FFT Resolution Calculator<\/h1>\n    <p class=\"vc-header-subtitle\">Calculate frequency resolution \u0394f, time record length, sampling rate, and Nyquist frequency from FFT lines and Fmax. Check bearing defect frequency resolvability.<\/p>\n    <div class=\"vc-badges\">\n        <span class=\"vc-badge\">FFT Lines<\/span>\n        <span class=\"vc-badge\">\u0394f Resolution<\/span>\n        <span class=\"vc-badge\">Nyquist<\/span>\n    <\/div>\n<\/header>\n\n<div class=\"vc-card\">\n    <form class=\"vc-form\" id=\"vc-form\" autocomplete=\"off\">\n        <div class=\"vc-form-grid\">\n            <div class=\"vc-field\">\n                <label class=\"vc-label\" for=\"vc-lines\">Number of FFT Lines<\/label>\n                <select class=\"vc-select\" id=\"vc-lines\">\n                    <option value=\"100\">100 lines<\/option>\n                    <option value=\"200\">200 lines<\/option>\n                    <option value=\"400\" selected>400 lines<\/option>\n                    <option value=\"800\">800 lines<\/option>\n                    <option value=\"1600\">1600 lines<\/option>\n                    <option value=\"3200\">3200 lines<\/option>\n                    <option value=\"6400\">6400 lines<\/option>\n                <\/select>\n            <\/div>\n            <div class=\"vc-field\">\n                <label class=\"vc-label\" for=\"vc-fmax\">Fmax <span class=\"vc-label-hint\">(Hz)<\/span><\/label>\n                <input class=\"vc-input\" type=\"number\" id=\"vc-fmax\" inputmode=\"decimal\" step=\"any\" min=\"1\" placeholder=\"e.g. 1000\" value=\"1000\">\n            <\/div>\n            <div class=\"vc-field\">\n                <label class=\"vc-label\" for=\"vc-fs\">OR Sampling Rate <span class=\"vc-label-hint\">(Hz, optional \u2014 overrides Fmax)<\/span><\/label>\n                <input class=\"vc-input\" type=\"number\" id=\"vc-fs\" inputmode=\"decimal\" step=\"any\" min=\"1\" placeholder=\"e.g. 2560\">\n            <\/div>\n            <div class=\"vc-field\">\n                <label class=\"vc-label\" for=\"vc-shaft-rpm\">Shaft Speed <span class=\"vc-label-hint\">(RPM, for bearing check)<\/span><\/label>\n                <input class=\"vc-input\" type=\"number\" id=\"vc-shaft-rpm\" inputmode=\"decimal\" step=\"any\" min=\"1\" placeholder=\"e.g. 1500\" value=\"1500\">\n            <\/div>\n        <\/div>\n\n        <div class=\"vc-presets\">\n            <div class=\"vc-presets-label\">Quick presets<\/div>\n            <button type=\"button\" class=\"vc-preset-btn\" data-l=\"400\" data-f=\"1000\">400 lines \/ 1 kHz<\/button>\n            <button type=\"button\" class=\"vc-preset-btn\" data-l=\"800\" data-f=\"1000\">800 lines \/ 1 kHz<\/button>\n            <button type=\"button\" class=\"vc-preset-btn\" data-l=\"1600\" data-f=\"2000\">1600 lines \/ 2 kHz<\/button>\n            <button type=\"button\" class=\"vc-preset-btn\" data-l=\"3200\" data-f=\"5000\">3200 lines \/ 5 kHz<\/button>\n            <button type=\"button\" class=\"vc-preset-btn\" data-l=\"6400\" data-f=\"10000\">6400 lines \/ 10 kHz<\/button>\n        <\/div>\n    <\/form>\n\n    <div class=\"vc-results\" id=\"vc-results\">\n        <div class=\"vc-results-head\">\n            <h2 class=\"vc-results-title\">Results<\/h2>\n            <button type=\"button\" class=\"vc-copy-btn\" id=\"vc-copy-btn\">\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>\n                Copy\n            <\/button>\n        <\/div>\n        <div class=\"vc-result-grid\">\n            <div class=\"vc-rcard vc-rcard-primary\">\n                <div class=\"vc-rcard-label\">Frequency Resolution \u0394f<\/div>\n                <div class=\"vc-rcard-value\" id=\"vc-r-df\">\u2014<\/div>\n            <\/div>\n            <div class=\"vc-rcard\">\n                <div class=\"vc-rcard-label\">Time Record Length T<\/div>\n                <div class=\"vc-rcard-value\" id=\"vc-r-trec\">\u2014<\/div>\n            <\/div>\n            <div class=\"vc-rcard\">\n                <div class=\"vc-rcard-label\">Sampling Rate fs<\/div>\n                <div class=\"vc-rcard-value\" id=\"vc-r-fs\">\u2014<\/div>\n            <\/div>\n            <div class=\"vc-rcard\">\n                <div class=\"vc-rcard-label\">Nyquist Frequency<\/div>\n                <div class=\"vc-rcard-value\" id=\"vc-r-nyq\">\u2014<\/div>\n            <\/div>\n            <div class=\"vc-rcard\">\n                <div class=\"vc-rcard-label\">Total FFT Points (N)<\/div>\n                <div class=\"vc-rcard-value\" id=\"vc-r-nfft\">\u2014<\/div>\n            <\/div>\n            <div class=\"vc-rcard\">\n                <div class=\"vc-rcard-label\">Bandwidth<\/div>\n                <div class=\"vc-rcard-value\" id=\"vc-r-bw\">\u2014<\/div>\n            <\/div>\n        <\/div>\n\n        <div class=\"vc-bearing-box\" id=\"vc-bearing-box\">\n            <div class=\"vc-bearing-title\">Bearing Defect Frequency Resolvability<\/div>\n            <div id=\"vc-bearing-list\"><\/div>\n        <\/div>\n    <\/div>\n<\/div>\n\n<!-- Theory -->\n<div class=\"vc-section vc-open\" id=\"vc-sec-theory\">\n    <button type=\"button\" class=\"vc-section-toggle\" aria-expanded=\"true\">\n        <span class=\"vc-section-toggle-text\">\n            <span class=\"vc-section-icon\">\ud83d\udcd8<\/span>\n            <span class=\"vc-section-title\">Theory &amp; Formulas<\/span>\n        <\/span>\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>\n    <\/button>\n    <div class=\"vc-section-body\">\n        <div class=\"vc-section-inner vc-theory\">\n            <h3>Frequency Resolution<\/h3>\n            <p>The frequency resolution of an FFT spectrum is the smallest frequency increment between adjacent spectral lines:<\/p>\n            <div class=\"vc-formula-box\" id=\"vc-katex-1\"><\/div>\n            <p>Where <strong>Fmax<\/strong> is the maximum analysis frequency and <strong>Lines<\/strong> is the number of spectral lines (400, 800, 1600, etc.).<\/p>\n\n            <h3>Time Record Length<\/h3>\n            <p>The time record required to achieve a given frequency resolution is the reciprocal:<\/p>\n            <div class=\"vc-formula-box\" id=\"vc-katex-2\"><\/div>\n            <p>More lines or lower Fmax means a longer time record and finer resolution.<\/p>\n\n            <h3>Sampling Rate &amp; Nyquist<\/h3>\n            <p>Most vibration analyzers use a sampling rate factor of 2.56 (not 2.0) to allow for anti-aliasing filter roll-off:<\/p>\n            <div class=\"vc-formula-box\" id=\"vc-katex-3\"><\/div>\n            <p>The Nyquist frequency is f<sub>s<\/sub>\/2. Frequencies above Nyquist will alias into the spectrum.<\/p>\n\n            <h3>FFT Lines Reference Table<\/h3>\n            <table class=\"vc-table\">\n                <thead><tr><th>Lines<\/th><th>Fmax=1000 Hz<\/th><th>Fmax=2000 Hz<\/th><th>Fmax=5000 Hz<\/th><th>T record<\/th><\/tr><\/thead>\n                <tbody>\n                    <tr><td>400<\/td><td>2.50 Hz<\/td><td>5.00 Hz<\/td><td>12.50 Hz<\/td><td>0.40 s<\/td><\/tr>\n                    <tr><td>800<\/td><td>1.25 Hz<\/td><td>2.50 Hz<\/td><td>6.25 Hz<\/td><td>0.80 s<\/td><\/tr>\n                    <tr><td>1600<\/td><td>0.625 Hz<\/td><td>1.25 Hz<\/td><td>3.125 Hz<\/td><td>1.60 s<\/td><\/tr>\n                    <tr><td>3200<\/td><td>0.3125 Hz<\/td><td>0.625 Hz<\/td><td>1.5625 Hz<\/td><td>3.20 s<\/td><\/tr>\n                    <tr><td>6400<\/td><td>0.15625 Hz<\/td><td>0.3125 Hz<\/td><td>0.78125 Hz<\/td><td>6.40 s<\/td><\/tr>\n                <\/tbody>\n            <\/table>\n\n            <h3>Practical Example<\/h3>\n            <div class=\"vc-example-box\">\n                <div class=\"vc-example-title\">Example \u2014 Motor Bearing Analysis<\/div>\n                <p><strong>Given:<\/strong> 400 lines, Fmax = 1000 Hz, shaft speed = 1500 RPM (25 Hz)<\/p>\n                <p>\u0394f = 1000 \/ 400 = <strong>2.5 Hz<\/strong><\/p>\n                <p>T = 1 \/ 2.5 = <strong>0.4 s<\/strong><\/p>\n                <p>f<sub>s<\/sub> = 2.56 \u00d7 1000 = <strong>2560 Hz<\/strong><\/p>\n                <p>Typical BPFO \u2248 25 \u00d7 5.2 = 130 Hz \u2192 easily resolvable (\u0394f = 2.5 Hz)<\/p>\n                <p>Sideband spacing at 1\u00d7 = 25 Hz \u2192 resolvable (2.5 Hz \u226a 25 Hz)<\/p>\n            <\/div>\n\n            <div class=\"vc-warning-box\">\n                <p style=\"margin:0;font-size:14px;color:var(--vc-ink-secondary);\"><strong>\u26a0\ufe0f Note:<\/strong> For reliable detection, \u0394f should be at least 3\u20135\u00d7 smaller than the frequency of interest. For sideband analysis, \u0394f should be \u226a shaft speed in Hz.<\/p>\n            <\/div>\n        <\/div>\n    <\/div>\n<\/div>\n\n<!-- Related -->\n<div class=\"vc-section\" id=\"vc-sec-related\">\n    <button type=\"button\" class=\"vc-section-toggle\" aria-expanded=\"false\">\n        <span class=\"vc-section-toggle-text\">\n            <span class=\"vc-section-icon\">\ud83d\udd17<\/span>\n            <span class=\"vc-section-title\">Related Calculators<\/span>\n        <\/span>\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>\n    <\/button>\n    <div class=\"vc-section-body\">\n        <div class=\"vc-section-inner\">\n            <div class=\"vc-related\">\n                <a class=\"vc-related-link\" href=\"\/calculators\/vibration-severity-chart\/\">Vibration Severity Chart<\/a>\n                <a class=\"vc-related-link\" href=\"\/calculators\/accelerometer-mounting-resonance\/\">Accelerometer Mounting Resonance<\/a>\n                <a class=\"vc-related-link\" href=\"\/calculators\/rpm-to-rads-converter\/\">RPM to rad\/s Converter<\/a>\n                <a class=\"vc-related-link\" href=\"\/calculators\/residual-unbalance-iso1940\/\">Residual Unbalance (ISO 21940)<\/a>\n            <\/div>\n        <\/div>\n    <\/div>\n<\/div>\n\n<!-- FAQ -->\n<div class=\"vc-section\" id=\"vc-sec-faq\">\n    <button type=\"button\" class=\"vc-section-toggle\" aria-expanded=\"false\">\n        <span class=\"vc-section-toggle-text\">\n            <span class=\"vc-section-icon\">\u2753<\/span>\n            <span class=\"vc-section-title\">Frequently Asked Questions<\/span>\n        <\/span>\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>\n    <\/button>\n    <div class=\"vc-section-body\">\n        <div class=\"vc-section-inner\">\n            <div class=\"vc-faq-list\" id=\"vc-faq-list\"><\/div>\n        <\/div>\n    <\/div>\n<\/div>\n\n<!-- Promo -->\n<div class=\"vc-promo\">\n    <div class=\"vc-promo-text\">\n        <strong>Vibromera \u2014 Portable Balancing &amp; Vibration Analysis<\/strong><br>\n        Professional field balancing instruments and vibration analyzers with configurable FFT resolution up to 6400 lines.\n    <\/div>\n    <a class=\"vc-promo-link\" href=\"https:\/\/vibromera.eu\/\" target=\"_blank\" rel=\"noopener\">Learn More<\/a>\n<\/div>\n\n<footer class=\"vc-footer\">\n    <p>&copy; 2024\u20132025 <a href=\"https:\/\/vibromera.eu\/\">Vibromera<\/a> \u2014 Engineering Calculators<\/p>\n    <p style=\"font-size:12px;margin-top:4px;\">FFT Resolution Calculator. Last updated: February 2025<\/p>\n    <div class=\"vc-footer-links\">\n        <a href=\"\/calculators\/engineering-calculators\/\">All Calculators<\/a>\n        <a href=\"https:\/\/vibromera.eu\/contacts\/\">Contact<\/a>\n    <\/div>\n<\/footer>\n\n<\/div>\n\n<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/katex@0.16.11\/dist\/katex.min.js\"><\/script>\n<script>\n(function() {\n    'use strict';\n    var SLUG = 'fft-resolution-calculator';\n    function $(id) { return document.getElementById(id); }\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(\/\\.$\/,''); }\n\n    function calculate() {\n        var lines = parseInt($('vc-lines').value);\n        var fmaxInput = parseFloat($('vc-fmax').value);\n        var fsInput = parseFloat($('vc-fs').value);\n        var rpm = parseFloat($('vc-shaft-rpm').value);\n\n        var fmax, fs;\n        if (fsInput && fsInput > 0) {\n            fs = fsInput;\n            fmax = fs \/ 2.56;\n        } else if (fmaxInput && fmaxInput > 0) {\n            fmax = fmaxInput;\n            fs = 2.56 * fmax;\n        } else {\n            $('vc-results').classList.remove('vc-visible');\n            return;\n        }\n\n        var df = fmax \/ lines;\n        var trec = 1 \/ df;\n        var nyquist = fs \/ 2;\n        var nfft = lines * 2.56;\n\n        $('vc-r-df').innerHTML = fmt(df, df < 1 ? 4 : 3) + ' <span class=\"vc-rcard-unit\">Hz<\/span>';\n        $('vc-r-trec').innerHTML = fmt(trec, 3) + ' <span class=\"vc-rcard-unit\">s<\/span>';\n        $('vc-r-fs').innerHTML = fmt(fs, 1) + ' <span class=\"vc-rcard-unit\">Hz<\/span>';\n        $('vc-r-nyq').innerHTML = fmt(nyquist, 1) + ' <span class=\"vc-rcard-unit\">Hz<\/span>';\n        $('vc-r-nfft').innerHTML = fmt(nfft, 0);\n        $('vc-r-bw').innerHTML = '0 \u2013 ' + fmt(fmax, 1) + ' <span class=\"vc-rcard-unit\">Hz<\/span>';\n\n        \/\/ Bearing defect frequency check\n        var bearingList = $('vc-bearing-list');\n        bearingList.innerHTML = '';\n        if (rpm && rpm > 0) {\n            var shaftHz = rpm \/ 60;\n            var defects = [\n                { name: '1\u00d7 Shaft Speed', freq: shaftHz },\n                { name: '2\u00d7 Shaft Speed', freq: 2 * shaftHz },\n                { name: 'BPFO (est. ~5.2\u00d7)', freq: 5.2 * shaftHz },\n                { name: 'BPFI (est. ~7.8\u00d7)', freq: 7.8 * shaftHz },\n                { name: 'BSF (est. ~2.1\u00d7)', freq: 2.1 * shaftHz },\n                { name: 'FTF (est. ~0.4\u00d7)', freq: 0.4 * shaftHz },\n                { name: '1\u00d7 Sideband spacing', freq: shaftHz }\n            ];\n            defects.forEach(function(d) {\n                var ratio = d.freq \/ df;\n                var cls, label;\n                if (d.freq > fmax) {\n                    cls = 'vc-bearing-bad'; label = 'Above Fmax';\n                } else if (ratio >= 5) {\n                    cls = 'vc-bearing-ok'; label = 'Resolvable (' + fmt(ratio,1) + '\u00d7 \u0394f)';\n                } else if (ratio >= 2) {\n                    cls = 'vc-bearing-warn'; label = 'Marginal (' + fmt(ratio,1) + '\u00d7 \u0394f)';\n                } else {\n                    cls = 'vc-bearing-bad'; label = 'Too coarse (' + fmt(ratio,1) + '\u00d7 \u0394f)';\n                }\n                bearingList.innerHTML += '<div class=\"vc-bearing-row\"><span class=\"vc-bearing-name\">' + d.name + ' = ' + fmt(d.freq,2) + ' Hz<\/span><span class=\"vc-bearing-status ' + cls + '\">' + label + '<\/span><\/div>';\n            });\n            $('vc-bearing-box').style.display = 'block';\n        } else {\n            $('vc-bearing-box').style.display = 'none';\n        }\n\n        $('vc-results').classList.add('vc-visible');\n        saveHistory({ lines:lines, fmax:fmt(fmax,1), fs:fmt(fs,1), df:fmt(df,4), _summary:'Lines='+lines+', Fmax='+fmt(fmax,1)+' Hz, \u0394f='+fmt(df,4)+' Hz' });\n    }\n\n    \/* Presets *\/\n    document.querySelectorAll('.vc-preset-btn').forEach(function(btn) {\n        btn.addEventListener('click', function(e) {\n            e.preventDefault();\n            $('vc-lines').value = this.getAttribute('data-l');\n            $('vc-fmax').value = this.getAttribute('data-f');\n            $('vc-fs').value = '';\n            calculate();\n        });\n    });\n\n    \/* Auto-calc *\/\n    $('vc-form').addEventListener('input', calculate);\n    $('vc-form').addEventListener('change', calculate);\n\n    \/* Copy *\/\n    $('vc-copy-btn').addEventListener('click', function() {\n        var text = 'FFT Resolution Calculation\\n\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\\n' +\n            'Lines: ' + $('vc-lines').value + '\\n' +\n            '\u0394f: ' + $('vc-r-df').textContent + '\\n' +\n            'Time Record: ' + $('vc-r-trec').textContent + '\\n' +\n            'Sampling Rate: ' + $('vc-r-fs').textContent + '\\n' +\n            'Nyquist: ' + $('vc-r-nyq').textContent + '\\n' +\n            '\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\\nvibromera.eu';\n        if (navigator.clipboard) {\n            navigator.clipboard.writeText(text).then(function() {\n                var btn = $('vc-copy-btn');\n                btn.classList.add('vc-copied');\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!';\n                setTimeout(function() { btn.classList.remove('vc-copied'); 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'; }, 2000);\n            });\n        }\n    });\n\n    \/* Sections *\/\n    document.querySelectorAll('.vc-section-toggle').forEach(function(btn) {\n        btn.addEventListener('click', function() {\n            var s = this.closest('.vc-section'); s.classList.toggle('vc-open');\n            this.setAttribute('aria-expanded', s.classList.contains('vc-open'));\n        });\n    });\n\n    \/* FAQ *\/\n    var faqData = [\n        { q: 'What is FFT frequency resolution?', a: '<p>FFT frequency resolution (\u0394f) is the smallest frequency difference distinguishable in a spectrum. It equals Fmax divided by the number of lines: \u0394f = Fmax \/ Lines. Finer resolution requires more lines or lower Fmax.<\/p>' },\n        { q: 'How many FFT lines do I need?', a: '<p>It depends on the analysis goal:<\/p><ul><li><strong>400 lines<\/strong> \u2014 general vibration monitoring<\/li><li><strong>800\u20131600 lines<\/strong> \u2014 diagnostic analysis, motor current signature<\/li><li><strong>3200\u20136400 lines<\/strong> \u2014 detailed bearing\/gearbox analysis, sideband identification<\/li><\/ul>' },\n        { q: 'Why is the sampling rate 2.56\u00d7 Fmax and not 2\u00d7?', a: '<p>The Nyquist theorem requires at least 2\u00d7 the highest frequency. However, real anti-aliasing filters need extra bandwidth to roll off. The factor 2.56 (= 256\/100) provides sufficient margin for typical analog filters used in vibration analyzers.<\/p>' },\n        { q: 'What are bearing defect frequencies?', a: '<p>Bearing defect frequencies are characteristic frequencies generated by faults on specific bearing components:<\/p><ul><li><strong>BPFO<\/strong> \u2014 Ball Pass Frequency Outer race<\/li><li><strong>BPFI<\/strong> \u2014 Ball Pass Frequency Inner race<\/li><li><strong>BSF<\/strong> \u2014 Ball Spin Frequency<\/li><li><strong>FTF<\/strong> \u2014 Fundamental Train Frequency (cage)<\/li><\/ul><p>They depend on bearing geometry and shaft speed. The estimates shown (5.2\u00d7, 7.8\u00d7 etc.) are typical for medium-sized bearings.<\/p>' },\n        { q: 'How does windowing affect resolution?', a: '<p>Windowing (Hanning, Flat-top, etc.) broadens spectral peaks, effectively reducing resolution by a factor of 1.5\u20133.8\u00d7 depending on window type. The \u0394f calculated here is the theoretical best case (rectangular window). In practice, use Hanning window which broadens peaks by ~1.5\u00d7 \u0394f.<\/p>' }\n    ];\n    var faqList = $('vc-faq-list');\n    faqData.forEach(function(faq) {\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>';\n    });\n    faqList.addEventListener('click', function(e) {\n        var btn = e.target.closest('.vc-faq-q');\n        if (!btn) return;\n        btn.closest('.vc-faq-item').classList.toggle('vc-open');\n    });\n\n    \/* History *\/\n    function saveHistory(entry) {\n        var key = 'vc_history_' + SLUG;\n        var arr = []; try { arr = JSON.parse(localStorage.getItem(key)) || []; } catch(e) {}\n        entry._ts = new Date().toISOString(); arr.unshift(entry);\n        if (arr.length > 10) arr = arr.slice(0, 10);\n        try { localStorage.setItem(key, JSON.stringify(arr)); } catch(e) {}\n    }\n\n    \/* KaTeX *\/\n    function renderFormulas() {\n        try {\n            katex.render('\\\\Delta f = \\\\frac{F_{max}}{\\\\text{Lines}}', $('vc-katex-1'), { displayMode: true, throwOnError: false });\n            katex.render('T = \\\\frac{1}{\\\\Delta f} = \\\\frac{\\\\text{Lines}}{F_{max}}', $('vc-katex-2'), { displayMode: true, throwOnError: false });\n            katex.render('f_s = 2.56 \\\\times F_{max} \\\\qquad f_{Nyquist} = \\\\frac{f_s}{2}', $('vc-katex-3'), { displayMode: true, throwOnError: false });\n        } catch(e) {}\n    }\n\n    \/* Init *\/\n    function init() { renderFormulas(); calculate(); }\n    if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', init); } else { init(); }\n})();\n<\/script>\n","protected":false},"excerpt":{"rendered":"<p>Kikokotoo cha bure cha azimio la FFT mtandaoni. Ingiza idadi ya mstari wa FFT, Fmax au kiwango cha usampulishaji ili kupata azimio la masafa \u0394f, urefu wa rekodi ya muda, masafa ya Nyquist, na uwezo wa kutofautisha masafa ya kasoro za bearing.<\/p>","protected":false},"featured_media":0,"template":"","meta":{"ai_generated_summary":"","footnotes":""},"categories":[],"tags":[],"class_list":["post-100093","calculator","type-calculator","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/vibromera.eu\/sw\/wp-json\/wp\/v2\/calculator\/100093","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vibromera.eu\/sw\/wp-json\/wp\/v2\/calculator"}],"about":[{"href":"https:\/\/vibromera.eu\/sw\/wp-json\/wp\/v2\/types\/calculator"}],"version-history":[{"count":1,"href":"https:\/\/vibromera.eu\/sw\/wp-json\/wp\/v2\/calculator\/100093\/revisions"}],"predecessor-version":[{"id":100426,"href":"https:\/\/vibromera.eu\/sw\/wp-json\/wp\/v2\/calculator\/100093\/revisions\/100426"}],"wp:attachment":[{"href":"https:\/\/vibromera.eu\/sw\/wp-json\/wp\/v2\/media?parent=100093"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vibromera.eu\/sw\/wp-json\/wp\/v2\/categories?post=100093"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vibromera.eu\/sw\/wp-json\/wp\/v2\/tags?post=100093"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}