3D Printer Bed Mesh Visualizer
Turn your printer's mesh measurements into a 3D surface. Inspect each point and compare your next adjustment.
Marlin G29 Prusa G81 Klipper matrices CSV & JSON
Paste a grid or drop a file. Ctrl/⌘ + Enter to visualize.
Measurement context Optional
Record the conditions for this measurement. These fields do not change your mesh or its statistics.
Date and time are recorded as local time, without timezone conversion. A mesh file's dates and the current date are never used to infer when it was measured.
Settings
Dimensions refer to the sampled area. Reference and orientation affect the plot; statistics and CSV use original measurements.
Output

Ready to visualize
Paste a mesh and select Visualize, or try an example.Statistics
Original heights · mm- Height range
- —
- Mean height
- —
- Minimum
- —
- Maximum
- —
- Std. deviation
- —
Surface analysis
- Median height
- —
- Mean absolute deviation
- —
- Fitted X rise
- —
- Fitted Y rise
- —
- Range without fitted tilt
- —
- RMS without fitted tilt
- —
All values are in mm. A fitted plane separates overall tilt from the remaining surface variation. X and Y rise follow the original input order.
View measured values
Compare your meshes
Measured heights & plane residuals · mm| Mesh | Grid | Height range | Mean height | Std. deviation | Residual range |
|---|
A smaller range means less measured height variation. Compare meshes taken with the same probing setup and bed temperature.
Difference heatmap
Point-by-point height change, after minus before.
Compare the same probed points. Match the grid size and sampled area; use Flip X/Y to align their orientation.
- Mean height change
- —
- Measured range change
- —
- Delta grid range
- —
- RMS point change
- —
All values are in mm. Mean and range changes use original heights; delta range and RMS follow the chosen reference.
Reading the difference
A positive value means the after measurement is higher. A uniform height shift changes the mean without necessarily changing surface variation. RMS describes the size of the changes, rather than whether they improved your first layer.
The selected reference applies to each mesh before subtraction. Flip X/Y follows each panel's settings. Matching grid sizes and dimensions cannot establish that their physical probing origins match; check that both runs measured the same area. No interpolation is applied.
View difference values
Paste a grid or drop a file. Ctrl/⌘ + Enter to visualize.
Measurement context Optional
Record the conditions for this measurement. These fields do not change your mesh or its statistics.
Date and time are recorded as local time, without timezone conversion. A mesh file's dates and the current date are never used to infer when it was measured.
Settings
Dimensions refer to the sampled area. Reference and orientation affect the plot; statistics and CSV use original measurements.
Output

Ready to visualize
Paste a mesh and select Visualize, or try an example.Statistics
Original heights · mm- Height range
- —
- Mean height
- —
- Minimum
- —
- Maximum
- —
- Std. deviation
- —
Surface analysis
- Median height
- —
- Mean absolute deviation
- —
- Fitted X rise
- —
- Fitted Y rise
- —
- Range without fitted tilt
- —
- RMS without fitted tilt
- —
All values are in mm. A fitted plane separates overall tilt from the remaining surface variation. X and Y rise follow the original input order.
View measured values
How to use Bed Mesh
Read the guides ↗Get your mesh
Copy the numeric grid from your printer console: Marlin's G29 output, Prusa's G81 output, or a Klipper mesh matrix.
See the surface
Paste the output or import a text, CSV, or JSON file. Switch between a 3D surface and a top-down heatmap to inspect each measured point.
Compare your changes
Add another mesh after an adjustment. Match the scales for a consistent comparison, then save a CSV or a chart image.
Which data formats can I use?
Paste the full console grid, including numbered rows and columns. Plain rectangular matrices, comma-separated values, and JSON arrays of numeric rows also work. Measurements should be in millimetres. Missing points and inconsistent row lengths need to be corrected before plotting.
The example is a simulated mesh so you can explore the controls without connecting a printer. Bed Mesh does not send commands to your printer.
How should I read the chart?
Blue marks lower measurements; warm colours mark higher measurements. The range is the difference between the highest and lowest point. Mean height is the signed average, while standard deviation describes the spread around that average.
Probe indices follow the order of your pasted grid. Use Flip X or Flip Y to match your printer's orientation. Optional width and depth describe the probed area, not necessarily the entire print bed. The 3D view exaggerates height to make variation visible; hover a point for its measured value.
About Bed Mesh
Bed Mesh is a free, open-source project by Rahyan Saouab, made to help with 3D printer bed levelling. Your measurements are processed in your browser, with no account required.
Mesh variation is one part of a good first layer. Probe accuracy, nozzle offset, temperature, and your printer's mechanics matter too.