3D Printer Bed Mesh Visualizer

Plot your printer’s bed mesh as a heatmap or 3D surface. Inspect each point and compare your next adjustment.

Marlin G29 Prusa G81 Klipper matrices CSV & JSON

Your meshes stay in this browser

Paste one height grid or import a file below. For a full console log, choose Scan a printer log. Find your printer’s mesh data.

Mesh data #1
Ready for your data

One grid per panel. 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
Sampled XY bounds and front edge

Use the first and last sampled coordinates from your firmware. Complete bounds set the chart coordinates and take precedence over probed width and depth.

The front label follows the displayed axes. Use Flip X or Flip Y to align the measurements with those axes.

Dimensions refer to the sampled area. Reference and orientation affect the plot; statistics and CSV use original measurements.

Chart

Ready to visualize

Paste a mesh and select Visualize, or try an example.
Hover a point for its height

Statistics

Original heights · mm
Mean height
—
Minimum
—
Maximum
—
Std. deviation
—

How to use Bed Mesh

Read the guides ↗
01

Get your mesh

Copy the numeric grid from your printer console: Marlin's G29 output, Prusa's G81 output, or a Klipper mesh matrix.

02

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.

03

Compare your changes

Add another mesh after an adjustment. Try the calibration walkthrough to see how repeat scans help you interpret a change.

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.

Scan a printer log

Paste your console log to find the height grids inside it. Open one grid as a heatmap or choose two to compare. The log stays in this browser.

Bed Mesh

Comparison report

Open the downloaded HTML report in your browser to print or save a PDF.

Calibration sessions

Open a saved session or use one of its scans as a reference for another mesh.

Opening a session replaces the open meshes. Undo open restores them until your next edit.

Reference run

Measurement history

Use Save run on a visualized mesh to keep a copy in this browser. For a comparison, select Before first and then After. Select three or more for a repeatability check.

Restore adds runs to this browser and skips runs already saved.

Printer and plate presets

Apply a preset to to set its labels, sampled dimensions, and orientation.

Save this mesh’s setup