Convert NC to OFF Online
Upload a CNC .nc or .cnc program and get an ASCII OFF mesh built along the tool centerline. It is a visualization of where the tool travels, not the shape of the finished part, and G2/G3 arcs come out as straight chords.
Download Started!
How would you rate your experience with MiConvert?
What this conversion actually produces
An .nc file is a plain-text program of coordinated machine moves, posted out of CAM software for a mill, router, plasma table or laser. It lists target coordinates and motion codes, not geometry: there are no vertices, faces, curves or solids inside it. That is why a mesh viewer such as MeshLab, Geomview, OpenFlipper or a CGAL/libigl script can open an OFF file directly but cannot do anything with your NC program.
On our servers a Python parser reads the program line by line. It acts on G0 through G3, G90/G91, G92 and M82/M83, skips explicit G0 rapid moves, and keeps the G1/G2/G3 feed moves plus the plunge from clearance height into the first cut. The resulting string of points is marked into a voxel grid, and a distance transform plus marching cubes builds a closed surface around it at a fixed radius of 0.2 mm. Voxel size is the larger of 0.3 mm and the longest side divided by 250, so a small part is finer and a large router job is coarser and more quantized. trimesh then writes the triangles out as ASCII OFF.
What survives is the path geometry in the coordinates exactly as the program wrote them, with no re-centering and no axis flip, as one closed triangle surface with consistent normals. What does not survive: arc geometry, because I, J and R words are never read, so a quadrant arc becomes a chord and a full circle whose start equals its end disappears; units, because G20 and G21 are ignored; rotary A/B/C words; tool changes, cutter compensation G41/G42 and work offsets G53 through G59; canned cycles G81 to G89; feed, spindle and laser power values; and modal motion, which is not tracked, so coordinate-only lines following a G0 are traced as feed moves. The converter does not know your cutter diameter, so the mesh is a thin shell around the centerline rather than the machined part or the material removed. OFF itself stores only positions and faces, so there are no colors, materials or layers in the output.
This is useful if you want to see a posted program as a mesh inside a geometry-processing toolchain: checking the envelope and travel height of a job before it reaches the machine, dropping a path into a MeshLab or Python pipeline, or documenting what a program does. For a dimensionally correct model of the part, go back to the CAD file the toolpath was generated from.
How to convert NC to OFF
- Check that the file is a motion program. We accept the .nc extension and the .cnc alias; controller extensions such as .tap, .ngc, .mpf, .ncc and .eia are not in our format table, so rename a copy to .nc first.
- If your post-processor emits arcs, consider re-posting with arc output turned off or with a tight linearization tolerance. I/J/R values are ignored here, so arcs that stay in the file are drawn as chords and full circles vanish.
- Drop the file onto the converter on this page. Guests and free accounts can send up to 10 files in one request (25 on Plus, 50 on Pro), with a per-file cap of 50 MB for guests, 100 MB with a free account, 200 MB on Plus and 1 GB on Pro.
- Start the conversion. The file is uploaded over HTTPS and processed by our engine; each conversion step has a 10-minute limit, which only very long programs approach.
- Download the .off file. The download link works for about 4 hours after the job finishes.
- Open it in MeshLab, Geomview, OpenFlipper or your own mesh code.
What the converter does
- Writes a plain ASCII OFF file: an OFF header, a vertex list and a triangle list you can read in a text editor or parse with a short script.
- Produces a closed, consistently oriented surface around the path; our test files came out watertight with fixed normals.
- Skips explicit G0 rapid moves and keeps the G1/G2/G3 cuts plus the plunge into the first cut. One caveat: motion is not tracked modally, so coordinate-only lines that follow a G0 are still traced as feed moves and can appear in the mesh.
- Keeps coordinates exactly as written in the program, with no re-centering and no axis change, so the mesh sits where the toolpath sits.
- Handles absolute and incremental positioning (G90/G91) and G92 resets the way a controller does, including a G90 that re-enables absolute mode later in the program.
- No account or sign-up is needed for the guest limits, and multiple programs can be queued in one request.
Video Tutorial
Convert NC to OFF online. Transform NC to Object File Format (OFF) for computational geometry and research. Free, fast, no installation. 📌 Convert NC to OFF free: https://miconvert.com/en/nc-to-off?
Frequently asked questions
Does the OFF file show the finished machined part?
No. The mesh is a thin closed shell around the tool centerline at a fixed 0.2 mm radius. Your real cutter diameter is not read from the program, and no material removal is simulated, so the result is a picture of the path rather than the part or the stock that remains.
A bore or circular pocket is missing from the mesh. Why?
G2 and G3 arcs are traced using only their end point; the I, J and R words are never read. A quadrant arc becomes a straight chord, and a full circle that starts and ends at the same point collapses to nothing. Re-post the program with arcs linearized into short G1 segments and the circle will appear as a polygon.
My program is in inches. Why are the numbers so small?
G20 and G21 are ignored, so an inch program keeps its inch values and a 2 by 1 inch square comes out as 2 by 1 units. OFF has no unit declaration anyway, so scale the mesh by 25.4 in your viewer or script if you need millimeters.
The job failed with "No movement/extrusion commands found in G-Code file". What now?
That message means the parser found nothing it could trace. The usual causes are a file with only rapid moves, a program that contains an E word on a non-comment line (any E makes the file be read as FDM print data, and the milling moves are then dropped), a text file that is not a motion program, or a binary file that was renamed. Upload the posted program itself and check that the cuts use G1, G2 or G3.
My .nc is a DSTV steel detailing file. Will this work?
No. DSTV content is only handled on our NC to DXF page, which draws a real layered 2D drawing of contours, holes and markings. Sent to a mesh target like OFF, a DSTV file goes to the G-code parser and produces a tiny meaningless blob that is still reported as a success. Use NC to DXF for those files.
What opens an OFF file, and what if my software cannot?
OFF comes from academic geometry processing, so MeshLab, Geomview, OpenFlipper, CGAL and libigl read it directly. If your software does not, convert the same NC file to STL or OBJ instead; the geometry is built the same way.
Can I turn an OFF mesh back into an NC program?
Not here. An OFF file holds only vertices and triangles, and generating a machinable program needs a CAM system that knows your machine, tooling, stock and feeds.
What happens to my file after the conversion?
Everything runs on our servers, not in your browser. The uploaded NC program is deleted as soon as the job's final attempt ends, and the converted OFF file plus its unguessable download link last about 4 hours before automatic deletion. We do log metadata such as the file name, size, formats and outcome, and signed-in accounts keep a conversion history row.