LibreCAD
LibreCAD is a free and open-source cross-platform computer-aided design (CAD) application focused on 2D drafting and technical drawing.[1] Written primarily in C++17 using the Qt framework, it supports creating precise vector-based designs with entities including lines, polylines, splines, arcs, circles, ellipses, and hatches.[2] The software reads DWG and DXF file formats for compatibility with industry standards and exports to DXF, PDF, and SVG for versatile output options.[3] Originating as a 2010 fork of the QCAD Community Edition, LibreCAD was initiated to enhance open-source CAD capabilities, particularly for integration with CNC routers, though its core remains 2D vector drafting without full 3D modeling or advanced CAM features found in proprietary alternatives like AutoCAD.[1] Community-driven development has sustained its evolution, with stable releases like version 2.2.0 emphasizing bug fixes, interface improvements, and expanded entity support, while experimental version 3 aims to modernize the architecture for better performance and extensibility.[4] Available for Windows, macOS, and Linux, it relies on a dedicated user base for documentation, translations, and forums, making it accessible for hobbyists, educators, and professionals seeking cost-free precision drafting tools.[1]Origins and Development History
Roots in QCad and CADuntu
LibreCAD originated from the community edition of QCAD, an open-source 2D CAD application developed by RibbonSoft that relied on the Qt3 library, which was becoming obsolete by the late 2000s.[1][3] In 2010, developer Ries van Twisk initiated a fork of QCAD's community edition (QCAD CE) primarily to integrate computer-aided manufacturing (CAM) functionality tailored for a Mechmate CNC router, addressing limitations in the original codebase for such applications.[5][6] This effort necessitated porting the software from the deprecated Qt3 framework to the newer Qt4 library to ensure compatibility and maintainability across platforms like Linux, macOS, and Windows.[7][1] The forked project was initially named CADuntu, a name evoking associations with Ubuntu but chosen for its brevity in early development discussions.[3] Announced publicly on September 21, 2010, CADuntu focused on producing a compilable version using the default Qt SDK, enabling cross-platform builds without proprietary dependencies.[5][8] However, community feedback highlighted the name's potential for confusion and inappropriateness, leading to a brief period of deliberation and research into alternatives.[9] Within months of its inception, the project rebranded to LibreCAD to better reflect its commitment to libre (free) software principles and to avoid niche connotations, marking the transition from CADuntu's experimental phase to a more structured open-source initiative.[3][9] This renaming preserved the core QCAD-derived architecture while laying the groundwork for independent evolution, including ongoing Qt upgrades that would later extend to Qt5.[7] The fork emphasized empirical improvements in usability and extensibility, diverging from QCAD's commercial trajectory under RibbonSoft, which shifted focus to a proprietary professional edition.[6]Forking to LibreCAD and Early Versions
LibreCAD emerged as a fork of the QCAD Community Edition version 2.0.5.0 around 2010, diverging from the original QCAD project developed by RibbonSoft, which offered both a free community edition and a paid professional version.[3][10] The fork was motivated by the desire to extend the community edition with computer-aided manufacturing (CAM) functionalities, particularly for integration with a CNC router, addressing limitations in the stagnant open-source branch of QCAD.[7] This initiative reflected broader community efforts to sustain and enhance free 2D CAD tools amid perceived neglect of the non-commercial QCAD variant.[11] Initial development emphasized backend modifications for CAM support and code stabilization, retaining the Qt-based graphical user interface from QCAD while transitioning to fully open-source governance under the GPLv2 license.[10] The project rebranded from early considerations like CADuntu to LibreCAD, signaling a commitment to libre software principles and cross-platform accessibility on Windows, macOS, and Linux.[12] The inaugural public release, LibreCAD 1.0.0, arrived on December 28, 2011, after approximately one year of internal work; it introduced numerous foundational code restructurings with minimal immediate user-facing alterations, prioritizing reliability over new features.[13][12] Subsequent early versions in the 2.0 series, hosted on SourceForge, focused on bug fixes, portability improvements, and incremental enhancements to drawing tools, laying groundwork for broader adoption as a QCAD successor.[10] These releases marked LibreCAD's shift toward community-driven evolution, distinct from QCAD's commercial trajectory.[11]Evolution to Version 2.x and Ongoing Maintenance
The development of LibreCAD's 2.x series originated from a fork of the QCAD Community Edition 2.0.5.0 in approximately 2010, aimed at enhancing the open-source version with computer-aided manufacturing (CAM) features for use with personal computer numerical control (CNC) machines.[3][7] This fork marked the inception of LibreCAD's codebase, which retained the Qt framework for cross-platform compatibility while expanding functionality beyond QCAD's limitations under its GPLv2 license.[10] Initial releases focused on stabilizing the application, with beta versions such as 2.0.0beta2 issued on February 24, 2013, following four months of intensive development to address crashes and core issues.[14] Subsequent stable updates in the 2.0.x branch, including 2.0.4 and 2.0.8 on August 24, 2015, introduced features like DWG read support and bug fixes for entity handling.[15][16] The series progressed to 2.1.x, with 2.1.3 serving as the final version recommended for production environments by mid-2022 due to resource constraints on frequent releases.[17] The transition to the 2.2.x branch emphasized integration of community contributions and unresolved features from prior versions, culminating in the stable 2.2.0 release on December 17, 2022, which incorporated enhancements like improved DWG compatibility via libdxfrw and crash reductions.[18] This was followed by 2.2.1, addressing post-2.2.0 issues with community support, and a bugfix update 2.2.1.1 on February 19, 2025, primarily resolving event handler crashes.[4][19] Ongoing maintenance relies on a volunteer-driven community, with development hosted on GitHub for pull requests and SourceForge for builds, including nightly master branch installers for Windows.[4][20] Releases occur irregularly due to limited developer capacity, prioritizing stability over biannual cycles, while the forum facilitates announcements and user feedback.[17][21] As of 2025, the project continues under GPLv2, with documentation updated for 2.2.x.y builds emphasizing cross-platform usability.[3]Technical Architecture
Core Technologies and Dependencies
LibreCAD is developed primarily in C++17, enabling efficient performance for 2D vector graphics operations across multiple platforms.[2] The application leverages the Qt framework (version 5.x) as its core for the graphical user interface, event handling, and cross-platform portability, supporting Windows, macOS, and Linux without platform-specific code branches.[3] Qt versions from 5.12 to 5.15 are recommended for building, as Qt 6 compatibility remains unverified and may introduce issues.[22] [23] Key external dependencies include the Boost C++ libraries for utility functions such as smart pointers and multi-threading support, and muParser for parsing and evaluating mathematical expressions used in dimensioning and calculations.[23] [24] The libdxfrw library handles DXF file import and export, bundled directly within the source code to avoid external installation requirements.[22] A standard C++ compiler (e.g., GCC or Clang) and related build tools like CMake are essential for compilation, with the source hosted on GitHub under the GPLv2 license.[23] [2] In the experimental LibreCAD 3 branch, the architecture shifts toward modularity, separating the core engine from GUI toolkits to facilitate scripting via Lua and potential future integrations, though this remains in development and not part of the stable 2.x releases.[25] No proprietary dependencies are used, ensuring full open-source compliance and reproducibility.[26]Codebase Structure and Libraries
LibreCAD's codebase is organized in a modular fashion within its GitHub repository, with primary directories includingsrc for core application source files handling drawing operations, entity management, and user interactions; lib for foundational libraries such as those implementing geometric primitives and coordinate systems; and plugins for extensible modules like custom tools or filters.[2] This structure supports maintainability and allows contributions to specific components without affecting the entire system. The code is predominantly written in C++17, emphasizing cross-platform portability across Windows, macOS, and Linux.[2]
Key external libraries underpin the application's functionality. The Qt framework provides the graphical user interface and event handling, with version 6.4.0 or later required for the master branch as of 2023 updates, while earlier stable releases like 2.2.1 support Qt 5.15.0 or Qt 5.2.1 minimums.[2] Boost libraries (version 1.55.0 or higher) are utilized for advanced C++ utilities, including smart pointers and algorithmic support.[2] The muparser library handles mathematical expression parsing for features like dimension calculations.[24]
File input/output operations rely on libdxfrw, a dedicated library for reading DXF and DWG formats and writing DXF, PDF, and SVG outputs, integrated as a submodule to ensure compatibility with industry-standard formats.[2] In the experimental LibreCAD 3 branch, the architecture further decouples the core engine from the GUI, incorporating Lua for scripting to enhance modularity and plugin development.[25] These dependencies are compiled during the build process using tools like CMake, with no runtime reliance on proprietary components.[23]
Features and Capabilities
Drafting and Editing Tools
LibreCAD offers extensive drafting tools for constructing 2D geometric entities, including lines, circles, arcs, ellipses, polylines, and splines, primarily through point-based inputs via mouse, command line coordinates (absolute, relative Cartesian, or polar), or snapping options like endpoints or grid.[27][28] These tools support precise creation, such as drawing a line between two points using theli command with coordinates like 10,10 to 10,110 for a 100-unit vertical segment.[28]
Line drafting includes subtypes like 2-point lines, horizontal/vertical lines with specified lengths, angled lines from a base point, rectangles via opposite corners, parallel lines through points or at offsets, bisectors between non-parallel lines, and tangents to circles or between circles.[29] Circle tools encompass center-point-radius definitions, 2- or 3-point constructions, and tangential variants to other circles/lines with specified radii or points.[27] Arc creation features center-point-angles, 3-point methods, and tangential arcs with radius or angle constraints.[27] Additional shapes include ellipses by axes/foci/points, polygons via centers/corners/tangents, splines through control points, and freehand lines for non-geometric sketches.[27] Polylines allow segmented chains of lines/arcs, open or closed, with options to form from existing segments.[27]
Editing tools under the Modify menu enable alterations to existing entities, such as move/copy (mv), rotate/scale/mirror with copy options, revert direction to swap endpoints, trim (tm) to cut at intersections, trim two intersecting entities (t2), lengthen to extend to limits, offset/parallel copies at distances, bevel (ch) for chamfers with trimmable lengths, and fillet (fi) for rounded corners with radius and trimming.[27][28] Polyline-specific edits include adding/appending/deleting nodes, trimming segments to intersections, and creating equidistant parallels.[27] Properties and attributes tools adjust geometry (e.g., line endpoints, circle radii), layers, or pens for single or multiple entities, while explode breaks blocks or text into components, and stretch repositions drawing portions.[27][28] Trim and similar operations on circles/arcs may require workarounds like divide-and-delete due to inconsistent behavior in complex setups.[28] All tools integrate with snapping for accuracy and can be invoked via menus, toolbars, or command line for efficient workflows.[27]
Layer Management and Blocks
LibreCAD utilizes layers to organize drawing entities, grouping related elements such as structural components or annotations for efficient management and selective display. Each entity is assigned to precisely one layer, inheriting default properties including color, line width, and linetype from the layer, though individual overrides are possible via entity properties.[30] Layer management occurs primarily through the Layer List dock widget, which displays all layers in the current drawing and supports creation via the "Add Layer" function—specifying name, color, width, and line type—along with renaming, deletion, and attribute modifications. Users can toggle visibility, locking (to prevent editing), printing, and construction status for individual or all layers; locking hides the layer while allowing snaps, and the construction layer excludes entities from printing while permitting infinite-length lines for reference aids. Filtering by layer name using wildcards and bulk operations like showing or hiding all layers enhance usability.[31][30] Blocks function as reusable entity collections in LibreCAD, defined exclusively on the special layer "0" to maintain independence from drawing layers, enabling consistent insertion across contexts. Creation involves selecting entities on layer "0" and invoking the Create Block tool to define an insertion reference point and block name, or initiating an empty block for editing in a separate window.[32] The Block List dock handles internal block management, listing available blocks with options to insert instances—configurable for position, scale, rotation angle, and array parameters (rows, columns, spacing)—edit blocks (updating all linked instances upon save), rename, delete, or save to file. External blocks are accessed via the Library Browser dock, which draws from built-in or user-defined directories (configurable in preferences, e.g., for part libraries) and inserts independent, sequentially numbered instances. Direct import from DXF files via File > Import > Block supports one-off usage, while exploding a block reference decomposes it into editable entities, severing reusability.[31][32]File Formats and Export Options
LibreCAD employs the DXF (Drawing Exchange Format) as its native file format for importing, saving, and loading 2D drawings, with support limited to versions up to R2007 and a preference for ASCII-encoded files to ensure compatibility and avoid binary parsing issues.[2][33] It can read DWG files originating from AutoCAD, though reliability is reduced for newer versions or complex entities, often requiring conversion to DXF beforehand for optimal results.[2][34] For export, LibreCAD saves drawings directly in DXF format while offering additional vector outputs including SVG (Scalable Vector Graphics) and PDF, which maintain scalability and are suitable for printing or further editing in tools like Inkscape.[2][26] Bitmap rasterization is supported via export to formats such as PNG, JPEG, BMP, PPM, PGM, PBM, ICO, CUR, XBM, and XPM, with user-configurable resolution and DPI settings; however, this process may discard line weights and other vector attributes, rendering it less ideal for precision work.[9] Specialized exports include MakerCAM SVG for CNC toolpath generation and compressed SVGZ variants.[26][9] Image insertion during drafting supports bitmap imports in the aforementioned raster formats plus SVG/SVGZ for vector overlays, enabling hybrid workflows but without native editing of embedded raster content.[35] These capabilities stem from underlying libraries like Qt for rendering and dxflib for DXF handling, ensuring interoperability with industry standards while prioritizing open-source accessibility over proprietary formats like full DWG write support.[2]Limitations and Criticisms
Functional Shortcomings
LibreCAD, as a lightweight 2D CAD application, omits 3D modeling capabilities entirely, restricting users to planar drafting without support for volumetric representations or solid modeling operations found in commercial alternatives like AutoCAD.[36][37] This limitation confines its utility to basic architectural sketches, mechanical layouts, and schematics, but precludes applications requiring depth simulation or extrusion-based workflows.[38] Advanced parametric design features, such as geometric constraints or associative dimensions that dynamically update with modifications, are absent, forcing manual adjustments and increasing error risk in iterative designs.[37] Dynamic blocks—reusable components with variable parameters like stretchable lengths or visibility states—are not implemented, limiting efficiency in creating adaptable libraries for repeated elements in engineering drawings.[37] Similarly, sheet sets for managing multi-layout projects and automated scripting for batch operations remain unsupported, hindering scalability for complex, multi-view documentation.[37] Layer management lacks depth, offering only rudimentary visibility toggles without advanced properties like color-by-layer inheritance or nested hierarchies, which complicates organization in dense drawings.[37] Export options, while including DXF and SVG, do not extend to parametric-native formats or high-fidelity PDF with embedded layers, often resulting in flattened outputs unsuitable for collaborative review.[39] These gaps position LibreCAD as adequate for hobbyist or educational 2D tasks but inadequate for professional environments demanding robust, feature-rich toolsets.[40][39]Stability and Compatibility Issues
LibreCAD has been reported to experience frequent crashes, particularly on Windows systems, during operations such as entity selection, movement, measurement, and hatching.[41][42][43] For instance, users have documented reproducible crashes when selecting and deselecting arc entities in versions 2.1.3 and release candidates up to RC2-8 as of April 2021, with similar issues persisting in later builds like 2.2.1.1 on macOS as recently as April 2025.[41][44] Attempts to open DWG files have also triggered system-wide crashes due to unhandled errors in experimental import support.[45] Performance degradation is another common stability concern, with the application slowing significantly or becoming unresponsive when handling files exceeding modest sizes, such as beyond 100 kB, or when multiple layers and snapping modes are active.[46][47] Users have noted freezes during zooming with construction layers enabled and delays in saving files over networks, attributable to factors like anti-aliasing and autosave settings.[48][49] These issues have prompted workarounds such as disabling features like autosave or using nightly builds, though core bugs like unchangeable autosave persist in tracked reports.[50][51] In terms of compatibility, LibreCAD's DXF support is limited to older formats including R12, R14, 2000, 2004, and 2007, leading to import errors or distortions when processing files from other software, such as arcs rendering as random lines in FreeCAD.[52][53] Exported DXF files from LibreCAD often fail to open correctly in AutoCAD after modifications, with versions like AutoCAD 2012 and 2021 rejecting them due to format incompatibilities, restricting interoperability in professional workflows.[54][37] DWG handling remains experimental and prone to reading errors from unexpected codes in sections created by proprietary tools.[55] Cross-platform availability spans Windows, Linux, and macOS, but stability varies, with Windows exhibiting more crash reports and macOS showing recent issues in version 2.2.1.1.[1][44] Efforts to save in more modern DXF versions have been requested to mitigate compatibility gaps with contemporary software, though implementation lags as of December 2022.[56] These limitations stem from the application's focus on basic 2D drafting rather than full proprietary format emulation.Comparisons to Commercial Alternatives
LibreCAD distinguishes itself from commercial alternatives primarily through its no-cost model and open-source nature, but it cedes ground in advanced functionality, reliability, and support. Leading commercial 2D/3D CAD applications include Autodesk AutoCAD, Dassault Systèmes DraftSight, and Bricsys BricsCAD, each offering native DWG compatibility, professional-grade tools, and subscription-based pricing that reflects their enhanced capabilities.[57][58]| Software | Annual Pricing (USD) | Supported Dimensions | Notable Superiorities to LibreCAD |
|---|---|---|---|
| AutoCAD | $2,095 | 2D/3D | Superior modeling (rated 8.0/10 vs. LibreCAD's lower scores), collaboration tools, and drawing precision (9.5/10 for LT variant vs. 8.1/10); enables BIM and building design workflows absent in LibreCAD.[59][60][61] |
| DraftSight | $299 (Professional) | 2D/3D (Premium) | Higher drawing capabilities (9.3/10 vs. 8.1/10), robust 2D drafting with native DWG handling, and enterprise options for larger teams; outperforms in stability for complex files.[62][63][64] |
| BricsCAD | $711 (Pro) | 2D/3D | Advanced import/export (8.6/10 vs. 8.1/10), AI-driven productivity tools, and perpetual licensing alternatives; supports mechanical and civil engineering modules beyond LibreCAD's basic drafting.[65][66][67] |