Skip to content
No description or website provided.
Branch: master
Clone or download
Latest commit 3eced03 Mar 20, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github Create stale.yml Jul 29, 2018
extras 0.0.1 Apr 14, 2018
octoprint_bedlevelvisualizer 0.1.7 Mar 19, 2019
LICENSE 0.0.1 Apr 14, 2018 0.0.1 Apr 14, 2018 Update Mar 20, 2019
babel.cfg 0.0.1 Apr 14, 2018
requirements.txt 0.0.1 Apr 14, 2018
screenshot.png **Added** Jun 9, 2018
settings_general.png 0.1.5 Sep 4, 2018
settings_stored_mesh.png 0.1.0 May 2, 2018 0.1.7 Mar 19, 2019
virtual_level_report_cartesian.gcode 0.1.0 May 2, 2018
virtual_level_report_delta_marlin_bugfix.gcode 0.1.5 Sep 4, 2018


This plugin utilizes Plotly js library to render a 3D surface of the bed's reported mesh on a tab within OctoPrint. It converts this

Send: G29 T
Recv: echo:Home XYZ first
Recv: Bed Topography Report:
Recv: (0,9)                                                                   (9,9)
Recv: (30,270)                                                                (270,270)
Recv:  -0.452   -0.319   -0.237    0.287    0.140    0.139    0.136    0.317    0.247    0.247
Recv:  -0.195   -0.273   -0.180   -0.178    0.014    0.018    0.111    0.214    0.210    0.210
Recv:  -0.270   -0.252   -0.151   -0.119    0.009    0.016    0.072    0.249    0.224    0.224
Recv:  -0.307   -0.205   -0.163   -0.124   -0.094   -0.002    0.036    0.151    0.174    0.196
Recv:  -0.186   -0.130   -0.152   -0.105   -0.144   -0.007    0.044    0.093    0.181    0.270
Recv:  -0.010   -0.077   -0.073    0.155   -0.006   -0.133    0.110    0.046    0.109    0.173
Recv:   0.059   -0.094   -0.072   -0.002   -0.006    0.037    0.050    0.065    0.124    0.184
Recv:  -0.057   -0.028    0.039    0.028    0.024    0.005    0.102    0.165    0.176    0.187
Recv:   0.067    0.015    0.096    0.117    0.001    0.079    0.138    0.346    0.185    0.185
Recv: [ 0.071]   0.014    0.061   -0.127    0.167    0.040    0.098    0.195    0.194    0.194
Recv: (30,30)                                                                    (270,30)
Recv: (0,0)                                                                     (9,0)
Recv: ok P15 B3

into this


Known Issues

  • Since version 0.1.3 there is a python dependency on numpy. As a result; if you don't already have numpy the install can take in excess of 30 minutes to complete on a pi. Just be patient and let it run and eventually the plugin install will finish.
  • If you have Marlin's Auto Temperature Reporting Feature enabled you will want to have M155 S30 and M155 S3 surrounding your G29 command, see settings screenshot, otherwise the collected data will be tainted.
  • Currently there is a conflict with the TempsGraph plugin. If you have this plugin installed you will receive an error that Plotyle.react is not a function. There is a version update pending on that plugin to resolve this issue, just waiting on the author to release. Resolved with TempsGraph release 0.3.3.





  • If your leveling method requires homing first make sure to enter that as well in the GCODE Commands setting.

  • If you have Marlin's Auto Temperature Reporting feature enabled you will want to have M155 S30 and M155 S3 surrounding your reporting GCODE command, otherwise the collected data will be tainted with temperature information.

  • If you end up requiring multiple commands it is recommended to enter @BEDLEVELVISUALIZER just prior to the reporting command.

    M155 S30	
    G29 T	
    M155 S3

    Use the following command for Klipper (per



Install via the bundled Plugin Manager or manually using this URL:


0.1.7 (11/24/2018)


  • New timeout setting that will unlock processing UI after given seconds. If processing takes longer to complete due to full probing requirements or some other reason set this to a higher value.
  • Toggle button in toolbar to enable click events on surface to move the hot end to that position.

0.1.6 (09/06/2018)


  • Repetier firmware support thanks to @gztproject.

0.1.5 (09/03/2018)


  • Option to make center of bed the origin point per request. Helpful when using a fixed center leveling system as described here.
  • Option to make measured offsets relative to origin position, related to above addition but could be useful elsewhere.


  • X/Y axis calculations to resolve bug discovered during above changes where if your leveling grid was based on an odd number of probe points the maximum perimeters were getting dropped due to rounding errors.

0.1.4 (08/06/2018)


  • Issue introduced with previous update that was causing some leveling reports to not be identified correctly.

0.1.3 (08/05/2018)


  • Recognition of older bed reports to work for some users. Should now work with reports that return lines like Bed x: 40.00 y: 20.00 z: 7.31.

0.1.2 (06/09/2018)


  • Display of last mesh timestamp above Update button.

0.1.1 (06/01/2018)


  • Mobile detection in plotly js library to also detect iPad as webgl device.

0.1.0 (05/02/2018)


  • Flip X/Y settings added to allow changing the orientation of the surface displayed.
  • Added Remove Row Labels in order to shift the mesh data to account for some reports that return an index at the beginning of the line.
  • Added bootstrap tooltips to info icons.
  • Wizard added on install to explain/enter the GCODE commands and demonstrate how to use the @BEDLEVELVISUALIZER command.


  • Improved graph display by reading build volume from printer profile settings.
  • Fixed Z range on graph between -2mm and 2mm.
  • Updated settings dialog for new options and moved stored data to it's own tab.
  • Simiplified data extraction regular expression.
  • Data collection now triggered based on sending the GCODE command @BEDLEVELVISUALIZER.


  • Prusa Firmware mode no longer necessary due to added options listed above.

0.0.9 (skipped)

0.0.8 (04/22/2018)


  • Pop-up notification on error.


  • Removed placeholder attribute on Data Collector Flag to make it more obvious there's nothing typed in it.


  • Delta printers not collecting mesh data points.

0.0.7 (04/20/218)


  • Description in Plugin Manager.

0.0.6 (04/19/2018)


  • Timestamp stored with saved mesh data. Displays on mouse hover of info graphic on update button.


  • Screenshots updated to make settings a little clearer.
  • Visibility bindings fixed for issues related to new installs and no stored data.

0.0.5 (04/18/2018)


  • Prusa Firmware Mode setting, to handle G81 responses correctly


  • Graph is now always visible in OctoPrint as long as you have saving enabled, there is a mesh stored, and the user is logged in.


  • Remove duplicated tabs from Prusa firmware's G81 response.

0.0.4 (04/17/2018)


  • "Data Collector Flag" is now a text field in lieu of select list to allow full customization of the text that flags for mesh data collection to handle the numerous available options that apparently seem to be out there.

0.0.3 (04/17/2018)


  • Capture data option for identifying correct response to start storing mesh data
  • Stored data displayed in settings
  • Non-UBL support

0.0.2 (04/15/2018)


  • Settings dialog to update the GCODE command used to report bed topology.
  • Improved performance with option for storing the mesh in config.yaml (default).


  • Reversed point order to fix graphing misorientation.

0.0.1 (04/14/2018)

Initial Release


  • Pause standard OctoPrint temperature polling or squash the responses until processing is completed.
  • Orientation testing to verify axes are in correct direction. added settings to allow controlling the orientation.
  • Calculate bed dimensions and apply to probe points for display on graph, #28.

Support My Efforts

I, jneilliii, programmed this plugin for fun and do my best effort to support those that have issues with it, please return the favor and leave me a tip if you find this plugin helpful.


No Send funds via PayPal to

You can’t perform that action at this time.