Drop a .gcode, .gco or .nc file here, or paste a short program below. Everything is walked in this tab: your files and inputs never leave your device.
Related tools
- 3D Print Cost CalculatorFilament and electricity cost for a single print, with optional labor, machine wear, and markup.
- Bed Mesh VisualizerTurn 3D printer bed levelling output into a surface plot and a tramming verdict.
- Minecraft Projectile Trajectory CalculatorPlots arrow, trident, pearl and potion flight paths tick by tick per Minecraft version, with aim angles, range, drop and flight time.
What it does
Drop a .gcode file and see what it actually does. This page walks the program the way firmware would, following G0 and G1 moves, G2 and G3 arcs, absolute and relative positioning, M82 and M83 extrusion modes, G92 resets and G28 homing, then splits the result into layers using the slicer markers when they are there and Z changes when they are not. You get the layer count and layer height, the printed bounding box, filament in millimeters and grams, extruding and travel distance, a rough time estimate, hotend and bed temperatures, fan speed and tool changes. It also reads the header comments, so it can tell you which slicer wrote the file and what that slicer estimated for time and filament.
How to use it
Drop the file, or paste the text of a short program. Turn on the toolpath drawing to get a top down SVG: leave the layer at 0 for the whole stack with the lower layers faded, or set a layer number to draw just that one. Turn on travel moves to see where the head jumps between islands, and switch the coloring to speed when you want to spot where the slicer slowed down. Every number is recomputed from the moves themselves, so it also works on hand written and post processed files.
Why this one
Most G-code previewers either want an upload to somebody else's server or want you to install a desktop slicer just to open one file. This one parses the program in the page, so your files and inputs never leave your device, there is no size gate at a few megabytes, and it keeps working offline after the first load. It also does not just trust the slicer header: the filament, distance and bounds come from the moves, so a post processing script that broke your file shows up here as numbers that no longer match the comments.
FAQ
- Why is the time estimate different from the one my slicer printed?
- The estimate here is deliberately rough. It divides each move by the feed rate in force and adds the results up, with no model of acceleration, jerk, junction deviation or the firmware speed limits, so it comes out optimistic on files full of short segments and close to right on long straight ones. Your slicer models the motion planner and knows the machine profile, which is why it does better. When the file carries the slicer estimate in its comments, this page shows that figure too on its own row, so you can compare the two.
- How does it decide where one layer ends and the next begins?
- First it looks for the markers slicers write: ;LAYER:n from Cura, ;LAYER_CHANGE followed by ;Z: from PrusaSlicer, SuperSlicer, OrcaSlicer and Bambu Studio, and the ; layer 1, Z = 0.2 form from Simplify3D. If the file has none of those, which is normal for hand written, vase mode or CNC programs, it falls back to starting a new layer whenever the Z height changes on an extruding move. The summary says which of the two it used, so you always know whether you are looking at real slicer layers or inferred ones.
- Does it handle arcs and CNC files?
- Yes. G2 and G3 arcs are flattened into short line segments in the XY plane, from either the I and J center offsets or the R radius form, with the commanded endpoint kept exact so the path never drifts. Inch mode from G20 is converted to millimeters. Files with no extrusion at all, which is most CNC work, still get bounds, distance, a rough time and the toolpath drawing; the filament and temperature rows just say they were not set in the file, because nothing in the program sets them.
Keyboard shortcuts: press ? anywhere on this page to see them.