Benchmarks

Measured on their benchmarks, not ours.

We put PCBKit on the benchmarks other tools publish for themselves, judge it the way they judge themselves and rerun them on our machine where we can. Here are the results, with the date we last checked each one.

The router

Ahead of 12 routers and products, on their own benchmarks.

Every board starts from bare pads. Each tool is measured on the benchmark it publishes for itself and judged the way it judges itself; open-source tools are rerun at their pinned release on our machine, closed ones are compared with their own published numbers.

  • 12

    routers and products compared: tscircuit, TraceMaker, Freerouting, KiCadRoutingTools, KRT bus planner (Haas), fastroute, DeepPCB, Quilter, Zap!, PCBWorld PPO, CopperPilot, OrthoRoute

  • 14/14

    of their own benchmarks where PCBKit completes more

  • 0

    KiCad errors our copper added on DAC 2020, where three other routers added 2,136 to 3,349

  • 2–7×

    faster than the open-source routers at the median; 5 s against DeepPCB’s 18 min on its STM32 board

Completed, on each rival’s own benchmark

Share of the benchmark finished, in its own unit and by its own judge.

tscircuit511 problems, its DRC
97.3 %88.6 %
TraceMaker132 boards, KiCad DRC
78.0 %72.0 %
Freerouting1,028 boards
93.5 %91.4 %
KiCadRoutingTools472 stress boards
58.5 %17.6 %
fastrouteDAC 2020, 11 boards
81.8 %9.1 %
DeepPCB3 boards, connections
100 %97.3 %
Quilter3 boards, connections
100 %87.7 %
Zap!25 boards, fully connected
76.0 %64.0 %
PCBWorld PPOD3-A, 20 rollouts
100 %94.0 %
KRT bus plannerZynq bus, 47 nets
97.9 %95.7 %

Time to a routed board

Seconds to the same result, log scale: further left is faster.

TraceMaker’s tiers, medianvs TraceMaker

2.6 s11.8 s

5× faster

DAC 2020, medianvs TraceMaker

3.6 s24 s

7× faster

tscircuit srj19, medianvs tscircuit

3.2 s9.8 s

3× faster

tscircuit srj18, medianvs tscircuit

8.7 s18.4 s

2× faster

STM32 board, one runvs DeepPCB

5 s18 min

216× faster

Vias the rival needs for each of ours

On the boards both complete. A via is a hole to another layer: each costs room, money and signal quality.

KiCadRoutingTools, stress tiers (medium)
3.48×
tscircuit, srj19
2.08×
TraceMaker, DAC 2020
1.91×
TraceMaker, its tiers
1.78×
Quilter, PocketBeagle
1.33×
CopperPilot, Jetson carrier
1.30×
DeepPCB, PocketBeagle
1.10×
KRT bus planner, H3 bus
1.03×

1× = as many as PCBKit

KiCad errors the routing added

DAC 2020’s 11 boards, every router rerun on our machine at 120 s, judged by KiCad 10’s design-rule check.

PCBKit
0
TraceMaker
0
KiCadRoutingTools
2,136
fastroute
2,741
Freerouting
3,349
A four-layer robot controller routed live in a browser tab.

Every comparison, named.

PCBKit against every router and product compared, each on its own benchmark
RivalIts own benchmarkPCBKitThe rivalJudge
tscircuitopen-source autorouterAheadits 5 dashboard datasets, 511 problems: 1 thread, 360 s, its 0.1 mm rule497 / 511 clean: 85, 16, 200, 186, 102–3× faster at the median453 / 511: 85, 16, 183, 159, 10its own DRC, unmodified
TraceMakeropen-source autorouterAheadits own PCBench tiers A–D, 132 boards, 120 s103 clean (40 / 34 / 19 / 10)it uses 1.78× our vias; 2.6 s vs 11.8 s95 clean (40 / 29 / 17 / 9)KiCad 10 DRC (its rule)
Freeroutingopen-source autorouterAheadits own nightly tiers A–C, 1,028 boards961 clean (447 / 476 / 38)trails by 5 on tier A940 clean (452 / 454 / 34), 2.6.0-RC5its checker (its row) / KiCad 10 DRC (ours)
KiCadRoutingToolsopen-source autorouterAheadits own stress corpus, 472 boards in 5 tiers, 120 s276 solvedit uses 3–5× our vias83 solvedKiCad DRC
KRT bus planner (Haas)research planner (arXiv 2610.35601)Aheadits own H3 DDR3 bus, 51 nets, at its rules0 open, 78 vias, 1,189 mm (6 of 6 seeds)pairs less coupled: 0.57 vs ~0.90 open, 80 vias, 1,262 mmits own grader
KRT bus planner (Haas)research plannerAheadits own Zynq-7020 DDR3 bus, 47 nets1 open, 85 viasmore vias2 open, 72 viasits own grader
fastrouteopen-source autorouterAheadDAC 2020: 11 boards it reports on9 / 11 clean1 / 11KiCad 10 DRC, 120 s
DeepPCBAI routing serviceAheadits own comparison: STRF, PocketBeagle, BeagleConnect Freedom100 / 100 / 100 %more vias on Freedom: 241 vs 19199 / 96 / 97 %connections complete (theirs); KiCad 10 DRC (ours)
DeepPCBAI routing serviceAheadits Smart MCU STM32 showcase211 / 211 from bare pads, 5 s210 / 210 from a partly routed board, 18 minKiCad 10 DRC
QuilterAI layout serviceAheadthe same three boards (DeepPCB’s table)100 / 100 / 100 %94 / 82 / 87 %, vias 58 / 163 / 235connections complete
Zap!AI routerAheadits own 25-board scoreboard, 60 min, 1 core19 connected, 59 unrouted, 0 shorts, 83 errorsahead on every column16 connected, 68 unrouted, 0 shorts, 156 errorsKiCad 10 DRC after refill (its judge)
PCBWorld PPOresearch (LG AI Research)AheadPCBWorld-Bench D3-A / D3-B / D3-C, 20 rolloutscompletion 1.00 / 1.00 / 1.00PPO 0.94 (D3-A); Freerouting 0.78 (D3-B)its own evaluator
CopperPilotAI layout projectAheadits own 8-layer Jetson camera carriercomplete, 0 errors, 476 vias, 223 s617 vias, 22 daysKiCad 10 DRC
OrthoRouteopen-source GPU routerAheadits own 1,088-net backplanecomplete from bare pads, 0 shorts, 0 errors, 373 sits routed board: 105 unconnected, 199 shortsKiCad 10 DRC
Last checked on 1 November 2026. Machines: AWS Graviton hosts (32 to 96 cores), each board on the threads its benchmark allows (1 thread where it says so). The commands, machines and records behind every row are in our repository’s benchmark records; write to us to see any row rerun.

Where we still trail.

  • Freerouting tier A. 447 against 452 of 452 boards; on 3 of the 5, KiCad flags any track to the pads (copper text over them, a mask opening of another net, a stated minimum width above every class).
  • DeepPCB’s BeagleConnect Freedom vias. 241 against 191 (theirs at 97 % of the connections, ours at 100 %).
  • Zynq bus vias and pair coupling. 85 vias against the planner’s 72; differential pairs coupled less than its ~0.9 on both bus benches.
  • The designers. 1,055 of 1,157 PCBench boards complete from bare pads against their 1,149.

Against people

Shorter copper than the designers.

PCBench is 1,157 boards people designed and routed by hand. We strip each to bare pads, route it again and judge both boards with KiCad’s own rules check.

  • 0.88×

    the designer’s track length, on the 1,049 boards both complete; shorter on 97 % of them

  • 0.90×

    the designer’s vias on the same boards

  • 1,055/1,157

    boards complete from bare pads, judged by KiCad after a refill

Where people still win. The designers complete 1,149 of these boards and we complete 1,055; most of the rest are a few connections short. Closing that gap is the router team’s first goal.

Agents

An agent’s board, finished on the first try.

We test the whole flow the way a person uses it: a real coding agent (Codex) with the PCBKit plugin installed gets one sentence, a wish like “a USB-C CO₂ monitor with a display” and works alone. The 20 wishes of the sealed set were written for the test and nobody on the team has read them, so nothing can be tuned to them.

  • 12/20

    held-out wishes finished on the first try: placed, routed and verified with no errors

  • 18/20

    first designs the agent wrote that compile as they are

  • 47

    tool calls a board, median

  • 8min

    from the wish to the verified board, median (462 s on a shared host)

The first clean sealed run, 1 November 2026. Our goal is 20 of 20, under a minute and ten calls a board: see the roadmap.

Speed and fidelity

Fast in a browser tab, faithful to KiCad.

One Rust core runs natively and in WebAssembly and gives the same answer in both. A board opened from its link draws its first frame in ~1 s on a phone (a 4G profile, a CPU four times slower than a laptop’s; 11.5 s a day earlier).

A PCBKit board on a phone: the Doom handheld in 3D with the board's state in one line at the top and the toolbar at the bottom.
  • 96.1%

    of 482 curated public KiCad boards import and export with every pad and every connection confirmed by an independent checker

  • 232/235

    human-designed boards where pour connectivity after a refill matches the independent checker

  • 4–26ms

    from an edit to the board on screen, on boards up to 6 MB, in the browser

  • 10µm

    every one of 2,821 silkscreen texts on 46 boards lands within 10 µm of KiCad’s own plot

Routing in a browser tab, 1 thread against 12: seconds, headless Chrome, AMD EPYC 9554
Board1 thread12 threads
USB boardcomplete, 4 vias6.2 s2.0 s
MCU board, 20 netscomplete, 23 vias13.8 s4.4 s
Motor controller, 63 parts, 4 layerssame copper either way86.0 s28.5 s
The same work budget in every run, so the copper is identical byte for byte. One WebAssembly thread is within 10 % of one native thread.

How we measure

The rules we hold ourselves to.

  1. 01

    Their benchmark

    Each tool on its own dataset, judged its own way. We never pick a set that suits us.

  2. 02

    An outside judge

    KiCad’s design-rule check with each board’s rules, or the benchmark’s own checker.

  3. 03

    Rerun here

    Open-source rivals rerun at their pinned release on the same machine, beside their published row.

  4. 04

    One command a row

    Every row reruns with one command; machine, threads and commit are recorded.

  5. 05

    Separate teams

    The team that measures does not tune the router; a guard reruns the rows before router changes land.

How we verify boardsWant a row rerun in front of you? Write to support@pcbkit.io.

How it routes

Six ideas, all on by default.

Routing is a hard search: thousands of connections competing for the same few millimetres. Here is how PCBKit solves it in seconds, on a laptop, inside a browser tab.

  1. Negotiate: All nets are routed at once, overlapping at first. Each pass makes contested space more expensive, until no two nets share it. The search grid has eight directions and spans every layer.NET ANET BGAP COST ↑B DETOURS

    Negotiate

    All nets are routed at once, overlapping at first. Each pass makes contested space more expensive, until no two nets share it. The search grid has eight directions and spans every layer.

  2. Exact where it counts: The grid guides the search, but every clearance is checked against exact geometry, to a fraction of a micron. Fine-pitch escapes with zero slack still fit.exact gap0.4 mm pitch · 0.2 mm track · 0.3 µmgrid

    Exact where it counts

    The grid guides the search, but every clearance is checked against exact geometry, to a fraction of a micron. Fine-pitch escapes with zero slack still fit.

  3. Search the neighbourhood: Next it rips up a window around whatever is still unrouted, routes it again and keeps the result if it is better. Eight candidate states are searched side by side.RIP UP A WINDOWROUTE IT AGAINkept if better

    Search the neighbourhood

    Next it rips up a window around whatever is still unrouted, routes it again and keeps the result if it is better. Eight candidate states are searched side by side.

  4. Pours, live: Copper pours are modelled while routing: the fill, the clearance around other nets, islands and thermal spokes. The router knows which pads a pour actually connects.THERMAL SPOKESISLANDdroppedother net, cut out

    Pours, live

    Copper pours are modelled while routing: the fill, the clearance around other nets, islands and thermal spokes. The router knows which pads a pour actually connects.

  5. Pad access as a set: A pad on a dense part gets up to eight exact, full-width exits. Neighbouring pads negotiate for them instead of each getting a fixed stub.8 WAYS OUT, EXACT, FULL WIDTHneighbours negotiate for them

    Pad access as a set

    A pad on a dense part gets up to eight exact, full-width exits. Neighbouring pads negotiate for them instead of each getting a fixed stub.

  6. Respects the mask: It knows where the solder mask opens, which vias are untented and where thin mask webs sit between pads, and routes so the fab can keep them.MASK WEBUNTENTED VIATENTED

    Respects the mask

    It knows where the solder mask opens, which vias are untented and where thin mask webs sit between pads, and routes so the fab can keep them.

Route a board in the app