Home

Autorouter benchmarks, scored by KiCad

Eight professionally routed open-hardware boards, 2 to 4 layers, 125 to 997 connections. Six routers get the same placement, the same rules and the same wall-clock cap. KiCad counts what is left unrouted and runs DRC on every board that comes back. Nothing here is self-reported.

Six routers, eight boards

Completion by KiCad ratsnest: 100 × (1 − unconnected / connections). DRC errors are the ones a tool added over the human board’s own findings. Each tool had 1200 s per board on the same machine; a tool that returned nothing inside the cap is shown as timed out. Measured 2026-10-14/16.

0%25%50%75%100%pic-programmer2L · 125100%100%100%100%96.8%100%rp2040-minimal2L · 150100%86%100%26.67%100%100%pico-vga4L · 180100%100%100%100%100%100%cm5io4L · 431100%timed outno board50.12%94.9%timed outrk3328-som-evb4L · 462100%96.54%100%43.94%100%96.75%scalenode-cm44L · 446100%timed out99.1%54.93%100%refused the boardstmp157-som-evb4L · 905100%timed outtimed out21.66%100%96.24%imx8mp-som-evb4L · 997100%timed out100%30.79%99.3%timed out
BoardLayersConnectionsKopparFreerouting 2.5.0tscircuit 0.0.979KiCad Routing Tools 0.1.9TraceMaker 0.9.0Zap! (hosted)
pic-programmerKiCad demos ↗2125100%0 DRC · 8 vias · 6 sFilled vias: 100% · 0 DRC · 6 vias · 6 s · 1 via in a pin pad100%5 DRC · 0 vias · 5 s100%115 DRC · 15 vias · 12 s100%95 DRC · 99 vias · 44 s96.8%0 DRC · 3 vias · reached at 33 s of 92 s100%0 DRC · 28 vias · 56 s
rp2040-minimalRaspberry Pi ↗2150100%0 DRC · 116 vias · 5 sFilled vias: 100% · 0 DRC · 83 vias · 6 s · 36 vias in pin pads86%4 DRC · 40 vias · reached at 18 s of 61 s100%149 DRC · 69 vias · 11 s26.67%12 DRC · 12 vias · 127 s100%0 DRC · 53 vias · 20 s · 14 vias in pin pads100%0 DRC · 52 vias · 22 s
pico-vgaRaspberry Pi ↗4180100%0 DRC · 96 vias · 8 sFilled vias: 100% · 0 DRC · 92 vias · 6 s · 75 vias in pin pads100%8 DRC · 48 vias · reached at 5 s of 11 s100%127 DRC · 69 vias · 12 s100%222 DRC · 116 vias · 42 s · 25 vias in pin pads100%0 DRC · 49 vias · reached at 143 s of 161 s · 21 vias in pin pads100%0 DRC · 83 vias · 17 s
cm5ioRaspberry Pi CM5 IO ↗4431100%0 DRC · 877 vias · reached at 856 s of 887 sFilled vias: 100% · 0 DRC · 831 vias · reached at 724 s of 752 s · 96 vias in pin padstimed out1200.2 sno board664.1 s50.12%88 DRC · 84 vias · 1208 s · 22 vias in pin pads94.9%0 DRC · 412 vias · reached at 1201 s of 1203 s · 34 vias in pin padstimed out1209 s
rk3328-som-evbOLIMEX ↗4462100%0 DRC · 359 vias · 46 sFilled vias: 100% · 0 DRC · 333 vias · 22 s · 151 vias in pin pads96.54%42 DRC · 245 vias · reached at 195 s of 610 s100%403 DRC · 391 vias · 163 s43.94%143 DRC · 104 vias · 971 s · 47 vias in pin pads100%0 DRC · 272 vias · reached at 1201 s of 1203 s · 88 vias in pin pads96.75%0 DRC · 333 vias · 375 s
scalenode-cm4Antmicro ↗4446100%0 DRC · 428 vias · 79 sFilled vias: 100% · 0 DRC · 459 vias · reached at 404 s of 429 s · 126 vias in pin padstimed out1200.1 s99.1%215 DRC · 368 vias · 77 s54.93%156 DRC · 102 vias · 533 s · 33 vias in pin pads100%0 DRC · 224 vias · reached at 448 s of 832 s · 41 vias in pin padsrefused the board
stmp157-som-evbOLIMEX ↗4905100%0 DRC · 1131 vias · reached at 412 s of 484 sFilled vias: 100% · 0 DRC · 1100 vias · 109 s · 341 vias in pin padstimed out1200.1 stimed out1413.5 s21.66%246 DRC · 196 vias · 1202 s · 34 vias in pin pads100%0 DRC · 856 vias · 1203 s · 200 vias in pin pads96.24%0 DRC · 840 vias · 892 s
imx8mp-som-evbOLIMEX ↗4997100%0 DRC · 1429 vias · reached at 1086 s of 1194 sFilled vias: 100% · 0 DRC · 1116 vias · reached at 149 s of 223 s · 379 vias in pin padstimed out1200.2 s100%1052 DRC · 1247 vias · 826 s · 1 via in a pin pad30.79%469 DRC · 307 vias · 1203 s · 61 vias in pin pads99.3%0 DRC · 795 vias · 1203 s · 200 vias in pin padstimed out1200.5 s

Measured 2026-10-14/16, KiCad 10.0.4 as referee, one machine for every tool. Koppar’s time is the whole product path, everything a user’s own board goes through. Freerouting writes its board only when it finishes, so a run past the cap has no board to score. tscircuit, KiCad Routing Tools, TraceMaker and Zap! boards are scored exactly as returned, with any pours they drew refilled. Zap! is a hosted service: its time is the job’s run time on the service, not its queue, and it refused one board whose human design has a footprint outside the outline. Times are when a tool reached the board it returned, beside how long it ran: a router that keeps searching after its best board shows both. Koppar’s cell shows two modes: the first line is its default, which keeps every via out of pin pads, so the board needs no special fab process; the second is its filled-via mode, which lets vias sit in pin pads, for a board ordered with filled and capped vias. Each cell counts the vias a tool left in pin pads.

Method

The referee
One pinned KiCad 10 install runs kicad-cli DRC and reads the ratsnest. No tool scores its own output; self-reported completion is recorded but not published.
The boards
KiCad demos, Raspberry Pi reference designs, OLIMEX and Antmicro carriers, each under its upstream licence. Each router gets the placement only: tracks, vias and copper pours are removed, and every net, ground included, is the router’s to connect. The design rules are the benchmark’s: one common floor, published per board and applied to every tool and to the referee, so the table measures routing under that floor, not each design’s own constraints.
The metric
KiCad airwires. Net-level completion reads high on a board with a stranded pad or a severed pour; the ratsnest does not.
One configuration
The same configuration for every board, as for a customer board. No per-board flags for any tool.

What we do not claim

A benchmark is only useful if its limits are stated.

Run it on your own board

The same router and the same route path are online at tools.koppar.ai: upload a placed .kicad_pcb and its .kicad_pro, get it back routed with a KiCad DRC report. A board up to 300 connections needs no account; a larger one, like the four-layer carriers here, takes up to 20 minutes of server time and needs an account API key. The API is one POST away.

Route your own boardBoards, rules, harnesses and results on GitHub
curl -s https://tools.koppar.ai/api/tools/route \
  -H 'content-type: application/json' \
  -H "Authorization: Bearer $KOPPAR_API_KEY" \
  -d "{\"content\": $(jq -Rs . < board.kicad_pcb), \"project\": $(jq -Rs . < board.kicad_pro)}"