Freeplane
Freeplane is a free and open-source software application designed for mind mapping, knowledge management, and project organization, enabling users to visually structure ideas, tasks, and information in hierarchical diagrams.[1] Developed in Java using OSGi and Java Swing frameworks, it runs on any operating system with a compatible Java runtime environment, including portable versions for use on USB drives, and supports features such as node formatting, styling, add-ons for extended functionality, formulas for calculations, and integrated task management tools.[2] Originating as a fork of the earlier mind mapping program FreeMind around 2009 due to architectural and development process disagreements, Freeplane was initiated by developer Dimitry Polivaev while maintaining compatibility with FreeMind files to facilitate user transition.[3][4] The project emphasizes modular code design for long-term maintainability, community-driven contributions, and stable releases approximately every six months, positioning it as a robust alternative for power users in professional, educational, and personal contexts.[5] Licensed under the GNU General Public License (GPL), Freeplane is hosted on SourceForge and GitHub, with ongoing development focused on enhancing usability and extensibility without compromising its core accessibility.[6]Overview
Description and purpose
Freeplane is a free and open-source software application designed for creating mind maps and electronic outlines, enabling users to visualize and structure connections between ideas in a hierarchical format.[6][2] Its core purposes include supporting cognitive processes like thinking and brainstorming, facilitating information sharing, and aiding task management in professional, educational, and personal contexts.[6] The tool is particularly suited for activities such as project planning, note-taking, and knowledge organization, helping users develop, organize, and communicate ideas effectively.[5] Mind maps in Freeplane represent information as radial diagrams that branch outward from a central concept, using nodes and connections to illustrate relationships and hierarchies in a non-linear, intuitive manner.[7] This approach appeals to students, professionals, and casual users alike, offering a balance of simplicity for quick ideation and robust power for complex structuring.[2] Freeplane also supports advanced features like scripting to enable customization and automation.[8]Licensing and platform support
Freeplane is released under the GNU General Public License (GPL) version 2.0 or later, which permits users to freely use, study, modify, and distribute the software, provided that derivative works adhere to the same licensing terms.[5] This open-source licensing model fosters collaborative development and ensures broad accessibility without proprietary restrictions. The project operates as a community-driven initiative, primarily hosted on GitHub for code repository, issue tracking, and discussions, as well as SourceForge for file downloads and additional resources.[6][5] Volunteers worldwide contribute through pull requests, bug reports, and feature suggestions, sustaining ongoing improvements since the project's inception as a fork in 2009.[6] As a Java-based application utilizing OSGi and Java Swing frameworks, Freeplane requires Java Runtime Environment (JRE) version 8 or later to run, with compatibility extending up to Java 22 in certain distributions.[9][1] It supports cross-platform execution on Microsoft Windows, macOS (including Intel, M1, and M2 architectures), and Linux distributions, allowing seamless operation across desktop environments without native compilation. Portable versions enable usage from USB drives or removable storage, such as through the PortableApps.com format, which bundles Freeplane with an embedded OpenJDK JRE for self-contained deployment.[9] While lacking native mobile applications, Freeplane offers export options to web formats for device-agnostic viewing. Installation is facilitated through various options tailored to user preferences and operating systems. Standard installers include .exe files for Windows (with or without embedded Java), .dmg files for macOS, and .deb packages for Debian-based Linux systems.[9][10] Additionally, binary zip archives allow manual extraction and configuration, while portable executables (.paf.exe) support plug-and-play setups. For Windows users, integration with package managers like Chocolatey simplifies deployment via command-line installation, ensuring automatic updates and dependency management.[11]History
Origins from FreeMind
Freeplane emerged as a fork of the FreeMind project in 2008, driven by differing development visions among contributors who sought to revitalize the open-source mind mapping software. FreeMind, originally launched in 2000 as a Java-based tool for creating hierarchical diagrams and outlines, had gained popularity for its simplicity but faced challenges with stagnant feature updates and architectural limitations by the mid-2000s. Dimitry Polivaev, a long-time FreeMind developer since 2003, initiated the fork to enable a more efficient software design, enhanced extensibility, and collaborative team-based development, addressing the original project's slowing pace of innovation. Development on the fork began in August 2008.[12][13][14] The fork was motivated by a desire to overcome FreeMind's architectural constraints, which hindered major enhancements and integration with other tools, while preserving the core mind mapping functionality that users valued. Polivaev, serving as the lead developer, focused on redesigning the codebase for better modularity and usability from the outset, with early efforts emphasizing active maintenance to prevent the stagnation observed in FreeMind. This transition allowed Freeplane to build on FreeMind's foundation without competing directly against it, as many contributors, including Polivaev, continued supporting both projects initially.[13][14] Freeplane's initial stable release, version 1.0, arrived in 2010, marking a significant step toward its goals of improved usability and extensibility. Early betas, such as 1.0.35 from December 2009, introduced foundational changes like refined node handling and export options, setting the stage for ongoing enhancements. A key aspect of the transition was ensuring backward compatibility with FreeMind's .mm XML file format, allowing users to import and edit existing maps seamlessly, though Freeplane extended the format with new structural elements for advanced features like attributes and formulas. This compatibility facilitated a smooth migration for FreeMind users while enabling Freeplane to evolve independently.[15][16]Key development milestones
Following its fork from FreeMind in 2008, Freeplane experienced rapid early adoption between 2010 and 2012, as users transitioned to the new project for its improved extensibility and stability. During this period, the development team introduced an add-on system in version 1.2 (2011), enabling users to extend functionality through modular plugins, which significantly boosted the software's adaptability without altering the core codebase.[17][15] This shift facilitated the establishment of the core architecture through the first stable releases, solidifying Freeplane's position as a viable alternative for mind mapping needs.[15] From 2013 to 2018, Freeplane's development emphasized community expansion and technical integrations, including a migration to GitHub for collaborative code management in 2014, which enhanced issue tracking and pull request handling.[6] The project also focused on internationalization, incorporating multi-language support for interfaces and documentation in languages such as French, Russian, Japanese, German, Turkish, Korean, and Slovenian, broadening its global user base.[18] Java updates were progressively integrated, culminating in a requirement for Java 8 starting with version 1.7.10 in 2019 to leverage modern runtime features while dropping support for older versions like Java 7.[19][20] Between 2019 and 2025, Freeplane prioritized modern UI enhancements, such as updated look-and-feel options and improved navigation tools, to align with contemporary user expectations in open-source software (as of November 2025, the latest stable release is 1.12.14 from September 2025).[15][5] Compatibility with Java 21 was achieved by 2024, allowing integration with the latest long-term support release for better performance and security, including embedded Java distributions for easier deployment.[9][21] Sustained releases continued despite open-source challenges, including maintainer transitions, as evidenced by increased contributions from new developers around 2021.[22] The Freeplane community has remained active through forums and bug reporting on SourceForge, where discussions on usage and improvements have fostered ongoing engagement since the project's early days. Contributions peaked around 2020, particularly in scripting enhancements, driven by collaborative efforts on platforms like GitHub, which replaced older forums by 2022 to streamline developer interactions.[23][24] This growth is reflected in over 230 user reviews and ratings on SourceForge, highlighting sustained interest in the project's evolution.[25]Core Features
Mind mapping and outlining tools
Freeplane enables users to create mind maps starting with a central root node that serves as the focal point for organizing ideas hierarchically.[26] Radial branching extends from this central node, allowing users to add child nodes that represent subtopics or related concepts, forming a tree-like structure to visualize relationships and hierarchies.[26] To manage complexity in larger maps, Freeplane supports folded or collapsed views, where branches can be hidden or revealed by pressing the Space key on a selected node, enabling focused navigation through expansive content without visual overload.[26] In addition to visual mind mapping, Freeplane offers an outlining mode that presents the map as a linear, text-based list, mimicking traditional outlines with the root node at the top and indented branches below for a sequential, hierarchical display.[27] This mode facilitates quick entry and editing of content, where users can convert linear outlines into full visual maps and vice versa; for instance, pressing Enter creates a new sibling node at the same level, while Tab adds a child node beneath the current one, streamlining the building of structured lists from textual input.[26] Navigation within mind maps and outlines is supported through intuitive tools, including arrow keys to traverse nodes sequentially.[26] Users can zoom in or out using Ctrl combined with the mouse wheel for detailed or overview views, and pan across the map by holding and dragging with the middle mouse button to reposition content dynamically.[15] The find and replace function, accessible via Ctrl+Shift+F, allows searching and editing text across the entire map, while hyperlinks can connect nodes to external resources, internal map elements, or other nodes, activated by Ctrl+click for seamless idea interconnection.[28] For basic file handling, Freeplane uses the native .mm format for saving and opening mind maps, ensuring compatibility with its predecessor FreeMind and allowing direct import of existing .mm files via Ctrl+O.[29] Simple text imports are possible through the File > Import menu, enabling users to populate initial maps from plain text outlines or other non-proprietary content to kickstart mapping workflows.[29]Node management and editing
Freeplane provides a variety of node types that serve as the foundational elements for constructing mind maps, enabling users to incorporate diverse content directly into the structure. The primary node type is text-based, where users can enter and edit content in the node core by double-clicking the node or using the Edit > Node Core > Edit Node Core in Dialog option (shortcut: Alt+Enter), supporting rich text formatting such as bold (Ctrl+B), italics, bulleted or numbered lists, tables, hyperlinks (Ctrl+H in the dialog), and paragraph alignment.[30] Nodes also support icons and images added to the core for visual enhancement, with images insertable via the toolbar or menu to represent concepts graphically.[31] Attachments, such as files or URIs, can be linked to nodes and stored as details or notes, allowing integration of external resources without embedding them directly in the map.[31] Structural editing in Freeplane facilitates flexible reorganization of the map hierarchy through intuitive tools. Users can perform drag-and-drop operations to move nodes: select one or more nodes, drag them to a target location where it highlights, and release to either nest them as children or position them as siblings.[26] To create an independent copy of nodes for reuse across different branches, hold the Ctrl key during the drag-and-drop process. For linked clones—creating shared nodes that propagate changes symmetrically without duplicating the subtree—copy the node (Ctrl+C) and then select the target parent node and use Edit > Paste as Clone (shortcut: Ctrl+Alt+V).[28][32] Summary nodes, identifiable by curly brackets, aggregate information from child or sibling nodes by grouping them under a single parent, summarizing key details like totals or overviews while maintaining the underlying structure; they are created by selecting sibling nodes and using Insert > New Node > New Summary Node, with customizable edge properties for visual distinction.[31] Nodes in Freeplane can be enhanced with attributes and details to manage metadata and extended content efficiently. Attributes are key-value pairs (e.g., "priority" = "high" or "date" = "2025-11-11") added via Edit > Node Properties > Add Attribute in Dialog, allowing users to tag nodes with structured data like priorities or deadlines; for multiple nodes, the Extended Attribute Editor supports batch addition, and the Attribute Manager (Edit > Node Properties > Attribute Manager) provides a tabular view for editing across the map.[31][33] The details pane, accessible by pressing Alt+F2 or via the menu, offers a hidden area beneath the node core for longer notes, supporting rich text, images, and attachments without cluttering the main view; it can be toggled for visibility and is ideal for supplementary information.[31] To ensure reliability during editing sessions, Freeplane includes a robust undo/redo system accessible via Ctrl+Z for undo and Ctrl+Y for redo, allowing users to revert or restore changes to node content, structure, or properties across multiple steps.[34] Additionally, an autosave feature helps protect against data loss by periodically creating backup files of map states, configurable under Tools > Preferences > Environment > Automatic Save with options for save intervals (in milliseconds), backup directories (default: .backup folder), and the number of retained files (e.g., up to a specified count before deletion on exit); as of November 2025, however, users have reported occasional failures in this feature in pre-release versions 1.12.15, so frequent manual saves (Ctrl+S) are recommended.[29][35]Advanced Features
Styling, filters, and views
Freeplane provides extensive styling tools to customize the visual appearance of mind maps through predefined and user-defined styles applied to nodes, edges, and backgrounds. Predefined styles such as "Default," "Floating node," "Important," and automatic level styles like "Level 1" and "Level 2" control properties including node colors, fonts, shapes, and icons, allowing users to apply consistent formatting via the toolbar or tool panel.[36] Multiple styles can be active simultaneously on a node, with precedence rules ensuring that character-level formatting overrides selected styles, which in turn override node-specific formatting.[36] Styles support automatic inheritance from parent nodes, propagating formatting down branches unless overridden, which streamlines the creation of hierarchically consistent maps.[36] Edge connectors can be styled as curved or straight lines, with options for automatic color assignment based on branches, levels, or columns to enhance readability in complex maps.[36] Cloud and background shapes are customizable through style properties, including background colors and images that fit to the window, set via the Format menu or style editor.[30] Users customize styles by editing them in the Manage Styles dialog (Format > Manage Styles > Edit styles, Ctrl+F11), where new styles can be created from selections, renamed, or reordered, and conditional styles can be defined to apply formatting based on node content or position.[36][37] Filters in Freeplane enable dynamic viewing by conditionally hiding or showing nodes based on criteria such as text content, icons, or attributes, using the Filter Toolbar and Composer for intuitive subset selection.[38] The Filter Composer dialog allows building complex conditions, such as matching specific text strings, icon presence, or attribute values, with options to show ancestors or descendants of matched nodes, and filters can be saved as bookmarks for quick reactivation.[39] This UI-driven approach supports tasks like focusing on relevant branches without permanent deletion, with enhancements in version 1.8.1 adding per-map-view filters and diacritic-insensitive matching, and version 1.9.8 introducing advanced conditions like "Any ancestor" or "For all descendants."[15][15] Views and layouts offer flexible presentation options, including full map view for radial layouts and outline view for a linear, hierarchical list resembling traditional outlines, toggled via View menu settings.[27] Dark mode, introduced in version 1.7.10, supports the Darcula look and feel along with a dedicated map template for reduced eye strain in low-light environments.[15] Presentation mode, available since version 1.6.0, transforms maps into slideshows with configurable transitions, spotlight effects to highlight selected nodes while dimming others, and independent settings per map view for professional demonstrations.[15] Tooltips provide hover previews of node details, notes, and full content, enhancing navigation without expanding nodes, while selection highlights trace paths from the root to the selected node, visually emphasizing structure and context.[40] These features collectively improve usability by allowing tailored visual and interactive experiences, with node cloning briefly enabling styled reuse across maps for consistent presentation.[36]Scripting, formulas, and automation
Freeplane incorporates Groovy scripting to enable advanced customization and automation, allowing users to extend the application's functionality through Java-compatible scripts. These scripts can be executed via the menu (Tools > Scripts), keyboard shortcuts, or triggered by events such as node selection, with execution modes including single-node processing, multi-node batch operations, or recursive application to branches. For instance, a script can batch-edit node text across selections by assigning new values likenode.text = "Updated [Content](/page/Content)".[8]
Formulas in Freeplane provide computational capabilities directly within node text, evaluated as Groovy expressions prefixed with an equals sign (=), which replace the formula with the computed result upon map changes. Basic arithmetic is supported, such as =2 + 3 yielding 5, while more complex operations include summing child node values with =children.sum(0){it.to.num} or aggregating attribute values like =children.sum(0){it['amount'].num0} to total numerical attributes named "amount" from child nodes. Date formatting leverages Groovy's date handling, for example =node.to.date.format('yyyy-MM-dd') to display dates in a specific pattern, and conditional logic enables dynamic evaluations, such as =children.count{it.text.contains('priority') ? 1 : 0} to count high-priority child nodes. These features require familiarity with Groovy syntax for effective use, as formulas access node properties like children or text directly.[41]
Automation is facilitated through init scripts, which execute automatically on Freeplane startup since version 1.5.8 and can register event listeners for actions like map opening or user inputs, stored in the user's scripts/init/ directory. Menu extensions allow scripts to integrate as custom options, specified via annotations like // @ExecutionModes({on_single_node="/menu_bar/tools[custom_action]"}), enhancing the interface with user-defined functions. The underlying API, accessible via Help > Scripting API, supports add-on development by providing proxy objects such as node for element manipulation and c for controller interactions, though full utilization demands Java knowledge due to Groovy's JVM foundation.[8][42]
Practical examples demonstrate these capabilities: scripts can generate dynamic content, such as a calendar map by creating dated nodes with localized day names and event placeholders, executed via Tools > Scripts to populate a monthly view. For external data integration, a script using the @Grab directive can import CSV files, parsing rows into hierarchical nodes for data import workflows, or pull Firefox bookmarks from JSON to build linked mind map structures. These automation tools empower users to tailor Freeplane for tasks like project tracking or data analysis without relying on external plugins.[8][43][44]
Extensions and Integration
Add-ons and their installation
Freeplane add-ons are distributed as special mind map files with the.addon.mm extension, which bundle scripts, styles, and other resources to extend the application's functionality.[45] These files have been supported since version 1.2, enabling modular enhancements without modifying the core software.[45] Compatibility is ensured through attributes like freeplaneVersionTo in the add-on file, which allows Freeplane to automatically check and warn about version mismatches during installation.[45][46]
Installation can be performed via the in-app manager for a streamlined one-click process, available in Freeplane versions 1.2.10_05 and later, or manually by downloading from the official repository on SourceForge.[46] To use the in-app method, users navigate to Tools > Add-ons > Search add-ons, visit the add-on page, download the file, and select it for installation, followed by a restart of the application.[46] Manual installation from the repository involves downloading the .addon.mm file directly and importing it through the same Tools > Add-ons menu, with Freeplane verifying compatibility before proceeding.[46]
Once installed, add-ons are managed through the Tools > Preferences > Plugins tab, where users can enable or disable them individually to control active extensions.[45] Users can check for updates manually using the "Check Add-on" tool or by downloading newer versions from the repository.[45] Add-ons are categorized by function, such as productivity tools like GTD (Getting Things Done) templates that aid task organization.[45]
Users can develop custom add-ons leveraging Freeplane's scripting API, primarily using Groovy for creating scripts that add menu items, functions, or integrations, with tools like the Developer Tools add-on facilitating packaging into .addon.mm files.[45] This API allows for extensions that build on core scripting capabilities, such as automating node operations or incorporating external libraries.[45]