Freerouting is an advanced autorouter for all PCB programs that support the standard Specctra or Electra DSN interface.
Download installers for Windows, Linux, and macOS here.
Freerouting is a powerful PCB autorouter compatible with any PCB design software that supports the standard Specctra or Electra DSN interface. It imports .dsn files generated by the host system's Specctra interface and exports .ses Specctra session files.
Important
For several years, I had been postponing a comprehensive overhaul and refactoring of the Freerouting codebase. As many of you have noticed, parts of it had become dated, with legacy constructs, inconsistent naming, and insufficient documentation.
That refactoring is now underway, and I expect it to take approximately two weeks. The goal is to create a cleaner, more modern, and future-proof foundation for Freerouting.
During this period, please keep pull requests as small and focused as possible. This will make it significantly easier to rebase them onto the refactored codebase afterward.
Once the refactoring is complete, I will tag the current codebase as pre-refactor-2026. Anyone who prefers to continue working from the pre-refactoring version will be able to use that tag as a stable starting point.
However, please keep in mind that future features and performance improvements will be developed exclusively on the upgraded codebase. Staying up to date with Freerouting will therefore require moving to the refactored version eventually.
Contributors with forks containing custom modifications, as well as contributors with open pull requests, will likely need to rebase their work once the refactoring is complete. Depending on the changes involved, this may require some manual conflict resolution.
I sincerely apologize for the extra effort. I know that nobody enjoys rebasing or resolving conflicts. The good news is that this should provide a stable foundation for a long time, so we do not expect another change of this scale anytime soon.
Thank you for your understanding, patience, and continued support of Freerouting.
Andras
You can interact with Freerouting using the Graphical User Interface (GUI), the Command Line Interface (CLI), or the Freerouting API. All interfaces support command-line arguments to set input/output files or modify settings.
Integrations are available with:
-
Launch Freerouting: Upon launching, you'll see the main interface.

-
Open Your Design: Go to
File>Open...and select your.dsninput file.
-
Start Autorouting: Click the
Magic Wandicon to begin the autorouting process.
-
Monitor Progress: Watch the routing progress visually in the board editor and numerically in the footer.

-
Completion: Wait for the autorouter to finish all passes. This may take from a few minutes to several hours.
-
Save Your Routed Board: Go to
File>Save as...to save your routed board as a.sesfile.
When using the CLI, you'll work with an input file (e.g., Specctra .dsn) exported from your EDA tool. Freerouting will autoroute unconnected nets and save the results for re-import into your EDA (e.g., as a Specctra .ses file).
Common command-line arguments:
-de [design input file]: Load a Specctra design file (.dsn) at startup.-do [design output file]: Save a Specctra session file (.ses) after routing.-l [language]: Set the language (e.g.,enfor English,defor German).-inc [net class names]: Ignore specified net classes during routing.-help: Display help information.
Example Command:
java -jar path/to/freerouting.jar -de MyBoard.dsn -do MyBoard.ses -inc GND,VCCDownload the latest freerouting-<version>.jar from the Releases page and substitute its path above.
This command routes MyBoard.dsn, ignores the GND and VCC net classes, and outputs MyBoard.ses.
For more details (including headless mode), see the CLI documentation.
Freerouting offers public API endpoints for PCB routing. The API root is https://api.freerouting.app/v1. Check the service status at /system/status.
To access full functionality, request access on the Freerouting website.
Please note that the Freerouting API and its documentation are in beta and may change.
The official Freerouting client SDK currently supports Python (maintained in the separate freerouting-python-client repository; install the latest release with pip install freerouting-client). This repository also provides OpenAPI-based SDK generation scripts in scripts/sdk/ for JavaScript, C#, and C++ scaffolding, including scripts/sdk/regenerate-all.ps1 for one-command scaffold refreshes.
You can also self-host the Freerouting API on your own machine or server. See the Self-Hosting Guide for step-by-step instructions using Docker or a plain Java JRE.
Freerouting supports the Model Context Protocol (MCP) to integrate directly with AI coding assistants (like Cursor, Cline, or Claude Desktop), allowing the AI to query system status and auto-route boards on your behalf.
- Online Quick Start (Public API): Runs instantly via
npx -y @freerouting/freerouting-mcp-server(always fetches the latest release) without requiring a local Java installation. - Offline Mode (Local Executable): Runs the entire routing engine locally on your machine for complete privacy.
See the MCP Guide for detailed configuration steps.
Installers are available for Windows x64, Linux x64, and macOS. For other systems, you can run the platform-independent .jar file if you have Java JRE installed.
Steps:
-
Download the JAR File: Get the latest
.jarfrom the Releases page. -
Install Java JRE: Download and install Java JRE.
- Choose your operating system and architecture.
- Select
JREas the package type. - Choose version
25.
-
Run Freerouting:
java -jar path/to/freerouting.jar
Use the latest
freerouting-<version>.jarfrom the Releases page.Note for macOS Users: Launch Freerouting from the Terminal; starting from Finder is not supported.
Freerouting Docker images for stable releases (latest and version tags) and development (nightly) builds are available from ghcr.io/freerouting/freerouting. Prefer the latest tag unless you need a pinned version for reproducibility. The image is a multi-platform manifest supporting:
linux/amd64— x86-64 servers, PCs, most cloud VMslinux/arm64— Apple Silicon, AWS Graviton, Raspberry Pi 4/5 with 64-bit OSlinux/arm/v7— Raspberry Pi 2/3/4 with 32-bit OS, Umbrel, CasaOS, and other ARMv7 home-server stacks
Docker automatically selects the correct variant for your hardware. For full setup instructions — including Docker Compose examples, network configuration, and running without Docker — see the Self-Hosting Guide.
We ❤️ all our contributors; this project wouldn't be possible without you!
- Report Issues: Help us by reporting issues.
- Contribute Code: Submit fixes and improvements via pull requests.
- Guidelines: Check out our Contribution Guide and Developer Documentation.
If you'd like to support the project financially, please consider sponsoring the project.
Every contribution, no matter how small, is greatly appreciated!
