Skip to content


Repository files navigation



Freerouting is an advanced autorouter for all PCB programs that support the standard Specctra or Electra DSN interface.

Release version Downloads Downloads License Contributor Covenant

👉 This project needs JAVA and UI/UX volunteers! Contact @andrasfuchs for details! : point_left:

Installers for Windows and Linux can be downloaded here.


This software can be used together with all host PCB design software systems containing a standard Specctra or Electra DSN interface. It imports .DSN files generated by the Specctra interface of the host system and exports .SES Specctra session files.

Although the software can be used for manual routing in 90 degree, 45 degree and free angle modes, it's main focus is on autorouting.

Getting started

You can run Freerouting as a standalone application.

  1. After launching freerouting.jar, a window appears prompting you to select your exported .DSN design file. image

  2. After opening a design you can start the autorouter with the button in the toolbar on top of the board window. image

  3. While autorouter is running you can follow the progress both visually in the board editor and numerically in the footer. image

  4. You are going to have a short summary when it is finished. image

  5. You can now save your routed board as a .SES file in the File / Export Specctra Session File menu. image

If you use KiCad, Autodesk EAGLE, Target3001! or pcb-rnd, click here for their integrations.

Using the command line arguments

Freerouter was designed as a GUI program, but it also can function as a command line tool. Typically you would have an input file (e.g. Specctra DSN) that you exported from you EDA (e.g. KiCad). If this file has unconnected routes, you would want to wire those with autorouter, and save the result in a format that you can then import back into your EDA.

The following command line arguments are supported by freerouter:

  • -de [design input file]: loads up a Specctra .dsn file at startup.
  • -di [design input directory]: if the GUI is used, this sets the default folder for the open design dialogs.
  • -dr [design rules file]: reads the rules from a previously saved .rules file.
  • -do [design output file]: saves a Specctra board (.dsn), a Specctra session file (.ses) or Eagle session script file ( .scr) when the routing is finished.
  • -mp [number of passes]: sets the upper limit of the number of auto-router passes that will be performed.
  • -l [language]: "en" for English, "de" for German, "zh" for Simplified Chinese, otherwise it's the system default. English is set by default for unsupported languages.
  • -host [host_name host_version]: sets the name of the host process, if it was run as an external library or plugin.
  • -mt [number of threads]: sets thread pool size for route optimization. The default is one less than the number of logical processors in the system. Set it to 0 to disable route optimization.
  • -oit [percentage]: stops the route optimizer if the improvement drops below a certain percentage threshold per pass. Default is 0.1%, and -oit 0 means to continue improving until it is interrupted by the user or it runs out of options to test.
  • -us [greedy | global | hybrid]: sets board updating strategy for route optimization: greedy, global optimal or hybrid. The default is greedy. When hybrid is selected, another option "hr" specifies hybrid ratio.
  • -hr [m:n]: sets hybrid ratio in the format of #_global_optiomal_passes:#_prioritized_passes. The default is 1:1. It's only effective when hybrid strategy is selected.
  • -is [sequential | random | prioritized]: sets item selection strategy for route optimization: sequential, random, prioritized. The default is prioritized. Prioritied strategy selects items based on scores calculated in previous round.
  • -inc [net class names, separated by commas]: auto-router ignores the listed net classes, eg. -inc GND,VCC will not try to wire components that are either in the "GND" or in the "VCC" net class.
  • -im: saves intermediate steps in version-specific binary format. This allows to user to resume the interrupted optimization from the last checkpoint. Turned off by default.
  • -dct [seconds]: dialog confirmation timeout. Sets the timeout of the dialogs that start a default action in x seconds. 20 seconds by default.
  • -da: disable anonymous analytics.
  • -dl: disable logging.
  • -ll: set console logging level. Valid values are: OFF, FATAL, ERROR, WARN, INFO, DEBUG, TRACE, ALL. Numerical values between 0 (OFF) and 7 (ALL) are also accepted. Default is INFO (4).
  • -help: shows help.

A complete command line looks something like this if you are using PowerShell on Windows:

java.exe -jar freerouting-1.9.0.jar -de MyBoard.dsn -do -mp 100 -dr MyBoard.rules

This would read the MyBoard.dsn file, do the auto-routing with the parameters defined in MyBoard.rules for the maximum of 100 passes, and then save the result into the file.

Running Freerouting using Java JRE

There are only installers for Windows x64 and Linux x64. Fortunatelly though the platform independent .JAR files can be run on the other systems, if the matching Java runtime is installed.

You will need the following steps to make it work:

  1. Get the current JAR release from our Releases page
  2. Install Java JRE
    • Select your operating system and architecture
    • Select JRE as package type
    • Select 21 as version
  3. Run the downloaded JAR file using the installed java
java -jar freerouting-1.9.0.jar

(macOS: please note that you can't start Freerouting from the Mac Finder, you must use the Mac Terminal instead!)


We ❤️ all our contributors; this project wouldn’t be what it is without you!

If you want to help out, please consider replying to issues, creating new ones, or even send your fixes and improvements as pull requests. Our contribution guide and developer documentation can help you with the technicalities.