{"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\/nb\/calculators\/fft-resolution-calculator\/","title":{"rendered":"FFT-oppl\u00f8sningskalkulator | Linjer, b\u00e5ndbredde, 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>Gratis kalkulator for FFT-oppl\u00f8sning p\u00e5 nett. Skriv inn antall FFT-linjer, Fmax eller samplingsfrekvens for \u00e5 f\u00e5 frekvensoppl\u00f8sning \u0394f, tidsopptakslengde, Nyquist-frekvens og oppl\u00f8sningsevne for lagerfeilfrekvens.<\/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\/nb\/wp-json\/wp\/v2\/calculator\/100093","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vibromera.eu\/nb\/wp-json\/wp\/v2\/calculator"}],"about":[{"href":"https:\/\/vibromera.eu\/nb\/wp-json\/wp\/v2\/types\/calculator"}],"version-history":[{"count":1,"href":"https:\/\/vibromera.eu\/nb\/wp-json\/wp\/v2\/calculator\/100093\/revisions"}],"predecessor-version":[{"id":100426,"href":"https:\/\/vibromera.eu\/nb\/wp-json\/wp\/v2\/calculator\/100093\/revisions\/100426"}],"wp:attachment":[{"href":"https:\/\/vibromera.eu\/nb\/wp-json\/wp\/v2\/media?parent=100093"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vibromera.eu\/nb\/wp-json\/wp\/v2\/categories?post=100093"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vibromera.eu\/nb\/wp-json\/wp\/v2\/tags?post=100093"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}