KiCad's interactive router is one of the most underrated parts of the toolchain. Once you understand its three collision modes and a handful of hotkeys, you can route dense boards quickly without fighting the tool.

Short answer: Route with Shove mode most of the time (it pushes neighbours aside), drop to Walk Around in tight corners, and keep Highlight Collisions for when you want manual control. Drive trace widths and diff-pair gaps from net classes, tune length with the dedicated tools (hotkeys 7 and 9), and run DRC after any cleanup pass.

The three router modes

The interactive router behaves differently depending on how it handles obstacles. Press E while routing to open the Interactive Router Settings, or set the default under Preferences → PcbNew → Interactive Router.

Router mode Behavior When to use
Highlight Collisions Draws the track through obstacles and flags conflicts in red; nothing moves Manual, deliberate routing where you want full control over every segment
Shove Pushes existing tracks and vias out of the way to clear a path, respecting clearances Your everyday default — fast routing on medium-to-dense boards
Walk Around Bends the track you are drawing around obstacles instead of moving them Tight areas, connectors, or when you do not want existing routing disturbed

You can switch modes mid-route without restarting the track, which is handy: shove your way across an open plane, then flip to walk-around as you thread between pads.

Push-and-shove routing

Shove mode is what most people mean by "push-and-shove." As you drag a track, KiCad live-recalculates the position of neighbouring tracks and vias so they slide aside to make room — but only within the clearances defined by your design rules. If a shove would violate clearance, the router refuses rather than creating a DRC error.

A few things that make shove feel smoother:

  • Hold Ctrl to toggle 45-degree/free-angle posture while drawing.
  • Press / to switch the corner/posture direction if the router picks the wrong side.
  • Press V to drop a via mid-track; the router will shove around it too.
  • If a shove looks stuck, back the cursor up a segment — the router re-solves from the last committed point.

Shove respects the same clearance and width rules your DRC uses, so a clean route is a route that already passes those checks.

Differential pair routing

KiCad recognises differential pairs by net name: give the two nets matching bases with _P and _N suffixes (for example USB_D_P / USB_D_N). Once named, select the Route Differential Pair tool with hotkey 6 and click either net — KiCad draws both tracks together, maintaining the gap.

The gap and width come from the net class, so set them there rather than eyeballing. For anything speed-sensitive — USB, Ethernet, MIPI — the pair spacing is part of the impedance target, so define it deliberately. If you are chasing a specific ohm value, see our guide on controlled-impedance routing in KiCad for the stackup-and-geometry side of the equation.

When a pair splits around an obstacle, KiCad handles the necking and re-converges automatically. Drop vias in a pair with V and the router keeps both legs symmetric.

Length and skew tuning

High-speed buses often need matched lengths. KiCad gives you three tuning tools:

  • Tune Track Length (hotkey 7) — add serpentine meanders to a single net to hit a target length.
  • Tune Differential Pair Length (hotkey 8) — meander a whole pair to a target.
  • Tune Differential Pair Skew (hotkey 9) — add length to whichever leg is short so P and N match.

Set your target length in the net class (or type it into the tuning dialog), then move along the track. A live gauge shows current vs. target: keep adding meanders until it turns green. Amplitude, spacing, and corner style are all adjustable in the tuning settings dialog (press E while a tuning tool is active). Tune skew before length so you are not re-doing meanders after fixing a mismatch.

Trace width from net classes

The cleanest way to control width is to let the router pull it from the net class. Assign nets to classes (power, signal, USB, and so on), give each class its track width and clearance, and the router uses those values automatically as you draw. No manual width-setting, no forgotten 0.2 mm trace on a 3 A rail.

You can override width on the fly from the width dropdown in the toolbar, but treat that as the exception. Net-class-driven widths are reproducible and reviewable — the same reason we lean on them in our net classes and design rules guide. Keep the rules in the class and your whole board stays consistent revision to revision.

Useful hotkeys and settings

A short list that covers most of interactive routing:

  • X — start routing a track
  • 6 / 7 / 8 / 9 — diff pair route / tune length / tune diff length / tune diff skew
  • V — place a via while routing
  • D — drag a track segment (with shove)
  • E — open settings for the active router or tuning tool
  • / — switch posture/corner direction
  • Backspace — undo the last routed segment
  • Ctrl — toggle free-angle while drawing
  • U — select a connected track for editing

Under Preferences → PcbNew → Interactive Router, enable "Optimize pad connections" and "Smart pads" so tracks enter pads cleanly, and set your default mode to Shove. "Highlight collisions" as the DRC-style visual feedback is worth leaving on.

Cleaning up after autorouting decisions

Whether you used the router aggressively in shove mode or ran an external autorouter, a cleanup pass pays off. KiCad's Tools → Cleanup Tracks and Vias removes redundant segments, merges collinear tracks, and deletes dangling vias. It is safe to run, but review what it proposes before applying.

After cleanup, walk the board once: look for acute angles the shove left behind, vias that could be removed now that a path opened up, and any trace that necked down through a tight spot but never widened back out. Re-run the diff-pair skew tuner on high-speed pairs, since dragging segments can quietly unbalance them.

Then run DRC. Cleanup can occasionally expose a clearance issue that was masked by an overlapping track, and the router's live checks do not catch everything a full DRC pass will. If DRC flags something, our walkthrough on fixing common KiCad DRC errors covers the usual suspects.

Keep your outputs in sync

Good routing is only worth it if the manufacturing package reflects it. That is where GoForFab comes in — connect your KiCad project and every push regenerates the full output set (Gerbers, drill, BOM, CPL, DRC/ERC reports, 3D renders) with kicad-cli, so your fab files always match the board you just routed. It is free forever, and it means you never hand a fab a Gerber set from three commits ago.