G-code viewer and simulator
See a CNC or 3D-printer G-code file in 3D — rapids, cuts, extrusion, travel — scrub through it, step layer by layer, and get dimensions, distances, a time estimate, filament, tools, and speeds.
Added · updated 28 October 2026
Works with
- 2.5D CAM CNC and 3D printinghands its generated program here with Open in G-code viewer
- G-code generators CNC and 3D printingOpen in viewer sends its generated program here
- Bolt circle and hole patterns MetalworkingOpen in viewer sends its drilling program here
- Bambu 3MF inspector CNC and 3D printingopens a plate's G-code from a Bambu .gcode.3mf, handed over with Open in G-code viewer
- Post-processor G-code checker CNC and 3D printinghands a checked program here with Open in G-code viewer
How to use it
Open or drop a .nc, .ngc, .tap, or .gcode file, paste G-code, or load a sample. Files
over 1.5 MB are parsed in a background worker; tens of megabytes are fine.
-
Understood: G0/G1, arcs G2/G3 with I/J/K or R (in the G17/G18/G19 planes, including helical arcs), G20/G21 (shown in mm or inches), G90/G91, G92, G28, G4 dwells, M3/M4 S speeds, T tool numbers and M6 changes, F feed rates, and extrusion with M82/M83 and G92 E.
-
Colours: red = rapid (G0), blue = cutting feed, orange = extrusion, grey = printer travel. Toggle rapids and travel in Settings.
-
Playback: the scrubber shows the program up to a point; Play animates it (Space toggles, ← → step, Shift for ×100). For printer files the layer slider shows up to a layer, or only that layer. Click a line in the code panel to jump the path there.
-
Time estimate: each move’s length divided by its feed rate (G0 at the rapid rate you set). It ignores acceleration, jerk, and look-ahead, so real machines usually take 10–40 % longer — more on programs with many short moves.
-
Filament: the net E travel; grams assume 1.75 mm PLA at 1.24 g/cm³.
-
Work area: moves ending outside X/Y (and Z, if set) are counted and the first is named.
⛶ Full screen (or F) gives the toolpath view the whole screen — the browser’s full screen where
it is allowed, otherwise a full-window layer (iPhone); the playback and code column stays beside it
and ◫ Panels hides it. Escape leaves.
Feedback is a gift. Something to improve, a feature to add, or a bug? Tell me.
Runs entirely in your browser; nothing you type leaves this page.