Netgen is an automatic mesh generation tool written in C++ capable of generating meshes in two and three dimensions. Netgen generates triangular or quadrilateral meshes in 2D, and tetrahedral meshes in 3D. The input for 2D is described by spline curves, and the input for 3D problems can be defined by Constructive Solid Geometry (CSG), the standard STL file format, or via Boundary Representations (BRep/IGES/STEP) when compiled with OpenCascade support. NETGEN provides modules for automated mesh optimization and hierarchical mesh refinement. Curved elements or arbitrary order are supported. It features two and three dimensional surface meshing, three dimensional volume meshing, automated topology based mesh size control, mesh refinement algorithms, and curved (higher order) elements.