Which Klipper CSV should you use?
The official Klipper resonance guide says TEST_RESONANCES creates resonances_x_*.csv and resonances_y_*.csv, while SHAPER_CALIBRATE creates calibration_data_*.csv. The bundled calibrate_shaper.py script can also write a processed CSV with -c. This page accepts the frequency-domain output that starts with freq.
Raw captures beginning with time and accelerometer samples are intentionally refused. Klipper processes those with windowed FFT/Welch calculations and normalization. Reimplementing only part of that pipeline would make the curves disagree with the firmware tools, so use Klipper’s script first and inspect its processed output here.
Reading peaks without over-diagnosing them
Klipper states that PSD peaks correspond to printer resonance frequencies. A tall isolated peak is useful evidence, and comparing X, Y, or before/after captures can reveal a shifted or reduced response. It does not by itself identify the physical cause. Accelerometer mounting, fans, belts, wheels, rails, toolhead mass, the test point, and mechanical faults can all change a capture.
This visualizer reports the strongest separated local maxima and their ratio to the median positive PSD. It does not attach mechanical labels to them. Re-run a test under controlled conditions and inspect the machine before treating a frequency shift as an improvement.
Why the lowest residual is not automatically the best shaper
Klipper calibration weighs remaining vibration against smoothing. The official guide warns that more aggressive shapers can reduce measured vibration while producing more smoothing, and that its reported smoothing values are comparative rather than a physical measure. It also says the estimated maximum acceleration is theoretical and is not a recommendation for what the printer can mechanically sustain.
This page therefore ranks supplied response curves only by integral(PSD × response ratio) ÷ integral(PSD). It never calls that row “recommended,” never estimates missing smoothing or acceleration data, and never generates a ready-to-paste configuration from PSD peaks alone. Confirm choices with the matching Klipper version, calibrate_shaper.py, conservative printer limits, and test prints.
Frequently asked questions
Why was raw_data.csv rejected?
Raw accelerometer data needs Klipper’s signal-processing pipeline before it becomes a PSD curve. Run calibrate_shaper.py or graph_accelerometer.py, then open the processed CSV.
What does “axis inferred” mean?
The file does not contain a universal tested-axis field. The label is inferred only from an isolated _x_, _y_, or _z_ segment in its filename and remains “Unknown” otherwise.
Can I compare tests with different frequency steps?
Yes. Each file keeps its own bins and metrics. The overlay is visual; values are not silently resampled or averaged across captures.
Does lower integrated PSD prove a better printer setup?
No. Compare captures only when the sensor, mounting, axis, test point, sweep settings, and machine state are equivalent. PSD units and normalization depend on the processing workflow.