Source: https://guthlabs.ai/docs/instruments/fft-bin-width-frequency-resolution-calculator/

instrument / verified-clean

# FFT Bin Width / Frequency Resolution Calculator

The current ledger marks this instrument verified clean within the source-bound verification corpus.

Status: **VERIFIED_CLEAN**Lifecycle: **verified-clean**

## Inspectable records

[01**Overview**Purpose and lifecycle](<https://guthlabs.ai/docs/instruments/fft-bin-width-frequency-resolution-calculator/>)[02**Mechanism**Method and assumptions](<https://guthlabs.ai/docs/instruments/fft-bin-width-frequency-resolution-calculator/mechanism/>)[03**Implementation**Binding and validation](<https://guthlabs.ai/docs/instruments/fft-bin-width-frequency-resolution-calculator/implementation/>)[04**Qualification**Evidence and errata](<https://guthlabs.ai/docs/instruments/fft-bin-width-frequency-resolution-calculator/qualification/>)

## Ledger state

The current ledger marks this instrument verified clean within the source-bound verification corpus.

**Area**: Computing & Information

**Tranche**: tranche-4

**Evidence ID**: t4-220

**Ledger rows**: 1

No ledger note is attached.

## Review findings

Core arithmetic formulas are correct under the stated unit and FFT-length assumptions. Verdict is NEEDS_REVIEW because the exact frequency-bin convention and the meaning of 'frequency resolution' are unspecified, and the blank honest_label leaves an important limitation undisclosed. Recommended honest label: 'Bin spacing is f_s/N. Actual ability to distinguish nearby frequencies depends on the selected window, signal duration, leakage, and spectrum convention; bins above Nyquist represent negative frequencies for a standard FFT.'

### Formula and scope findings

- Δf=f_s/N is the standard FFT bin spacing when f_s is the sampling rate in Hz and N is the FFT length.

- bin_k_freq=k·Δf is correct for FFT-bin indexing k=0 through N−1 under the unwrapped nonnegative-frequency convention, but bins above Nyquist are normally interpreted as negative frequencies: f_k=(k−N)·Δf for k>N/2.

- time_resolution=N/f_s is the input record duration, not universally the practical frequency resolution. Window-dependent main-lobe width and equivalent noise bandwidth are omitted.

- The optional window function is not used by any formula, so the instrument cannot claim window-dependent frequency-resolution results.

- The output requirement of the first N bin frequencies is ambiguous about whether it means raw FFT-bin frequencies from 0 through just below f_s, a one-sided spectrum through Nyquist, or signed frequencies above Nyquist.

### Unit assumptions

- sample rate f_s is a positive value expressed in Hz, not kHz; convert 48 kHz to 48000 Hz before calculation.

- FFT size N is a positive integer equal to the FFT length and the number of time-domain samples represented by the transform.

- Δf and bin frequencies are in Hz; time_resolution is in seconds, with milliseconds obtained by multiplying seconds by 1000.

- The stated formulas assume uniformly sampled data and a conventional N-point FFT.

- The window function does not change the bin spacing or record duration, but it does affect practical spectral resolution and leakage.

## Boundary hardening

**BREAK_CLAIMED** · SELF_FLAGGED

A zero sample rate creates an undefined time resolution and must be rejected. The calculator is also vulnerable to a 1000-fold frequency and time error when a value such as 44.1 lacks an explicit Hz/kHz convention.

## Errata and corrections

No applied erratum is attached to this unique-name record.

## Inspectable example

4 review vectors are recorded. One source-bound sample is shown below.

````
{
  "inputs": {
    "sample_rate_hz": 48000,
    "fft_size": 1024,
    "window": "rectangular"
  },
  "expected_outputs": {
    "bin_width_hz": 46.875,
    "time_resolution_s": 0.0213333333333333,
    "bin_center_frequency_checks_hz": {
      "k=0": 0,
      "k=1": 46.875,
      "k=512": 24000,
      "k=1023": 47953.125
    }
  },
  "working": "Δf = f_s/N = 48000/1024 = 46.875 Hz. time_resolution = N/f_s = 1024/48000 = 0.0213333333333333 s = 21.3333333333333 ms. bin_0 = 0×46.875 = 0 Hz. bin_1 = 1×46.875 = 46.875 Hz. bin_512 = 512×46.875 = 24000 Hz. bin_1023 = 1023×46.875 = (1024−1)×46.875 = 48000−46.875 = 47953.125 Hz. The raw first-N sequence is k×46.875 for k=0..1023."
}
````

## Related workflows

No source-defined multi-instrument workflow membership is recorded.

## Sources and evidence

These pointers bind the page to evidence. They do not grant authority or collapse verification into deployment.

- `VERIFIED_LEDGER.json · VERIFIED_CLEAN`

- `evidence-tranche4/tranche4-results.json`

- `BOUNDARY_HAZARD_CATALOG.json`
