makeIRLEngineering notes

KiCad

KiCad 9 vs 8: what changed for day-to-day PCB designers

Compare the KiCad 9 features that changed real PCB workflows, from component classes and zone management to via tenting, pad stacks, DRC, and CLI exports.

Published Updated

First, a version note for 2026

KiCad 9.0 was released in February 2025 as the successor to KiCad 8. KiCad 10 became the current major release in March 2026. This comparison is therefore for teams maintaining KiCad 8 projects, reviewing a move to the 9 file format, or trying to understand which workflow changes first appeared in 9. It is not a claim that 9 is the newest KiCad today.

The safest upgrade target for active work is normally the current supported stable release after your plugins, libraries, and manufacturing scripts have been tested. If a customer or organization standardizes on 9, use the latest approved 9.0 patch rather than 9.0.0.

Component classes made intent easier to carry into layout

KiCad 8 already had net classes and powerful custom DRC expressions. KiCad 9 added component classes, which group symbols and their linked footprints by function or physical requirement. A symbol can belong to more than one class, and class membership follows it to PCB Editor.

That lets rules express intent such as “all high-voltage components need extra courtyard clearance” or “items in the RF frontend class have a placement constraint” without matching a fragile list of reference designators. Component classes can be assigned directly to symbols or through schematic rule areas.

KiCad 9 also allows a net to draw properties from multiple net classes in a defined priority order. This is useful when a net is both, for example, high current and part of a particular interface. Review old custom rules after upgrading: expressions that expect one net-class string may need the newer membership tests rather than literal equality.

Schematic editing gained reusable and safer structure

For larger designs, the most practical schematic additions were:

  • Design blocks for libraries of reusable schematic circuitry.
  • A sheet pin/hierarchical label synchronization tool, reducing manual switching between a hierarchical sheet and its parent symbol.
  • Selection filters in Schematic and Symbol Editors, similar to the filtering already familiar in PCB Editor.
  • Net-class rule areas that assign directives to nets inside a drawn schematic area.
  • Sheet-level DNP, exclude-from-board/BOM, and simulation attributes.

Design blocks are not a reason to stop reviewing copied circuits. A reused regulator block still needs its part fields, net-class assignments, and local requirements checked in the destination project. They are most valuable when the block library is versioned and owned like any other engineering library.

ERC also gained checks such as unconnected endpoints and collisions between local and global labels with the same name. A project that was clean under KiCad 8 can legitimately produce new findings in 9 because the checker now sees cases it did not report before.

Zone Manager improved copper-pour review

KiCad 9’s Zone Manager puts zone priorities and settings into one place with a preview. In KiCad 8, understanding several overlapping zones often meant opening them individually, remembering priority numbers, refilling, and inspecting the result. The manager makes that relationship much easier to audit.

This is particularly helpful for ground planes with local keepouts, higher-priority power islands, and copper cutouts. It does not change the need to refill and inspect the final geometry. The ground-plane walkthrough explains the settings that still matter: net, clearance, minimum width, thermal relief, island handling, and layer.

Via tenting became explicit per side

KiCad 9 added board-level tenting controls for top and bottom, plus per-via overrides. In older workflows, tenting behaviour was often represented indirectly through solder-mask expansion or a less expressive global choice.

The new controls matter when a design needs combinations such as a via covered on the component side but exposed as a test point on the other. After migrating, inspect F.Mask and B.Mask plots rather than assuming the old appearance maps to the intended manufacturing output. Tenting also remains process-dependent: a mask opening setting does not promise that a fab will fill or plug a via.

Pad stacks became more capable

KiCad 9 supports plated through-hole pad stacks with different copper shapes on top, inner, and bottom layers, including unique shapes per copper layer. It also supports vias with per-layer diameter and annular-ring behaviour.

That enables more precise connector, press-fit, RF, and dense escape geometry. It also creates data a downstream CAM tool must interpret correctly. Use ordinary, uniform pads when they satisfy the design; use custom stacks for a documented reason and inspect every copper layer in the generated fabrication data.

Other physical-layout improvements included layer-pair presets, multiple-track drag, interactive positioning, zone corner chamfering, and tools for modifying shapes such as routed internal corners.

DRC learned more physical constraints

KiCad 9 introduced a creepage constraint and corresponding DRC checks. Clearance is the straight-line spacing between conductive objects; creepage is the path along a surface. They are not interchangeable for high-voltage design.

The release also added or improved checks around differential-pair skew, acute angles, physical clearance, and visual indication of failed clearances. Exclusions can carry comments, which turns a waived marker into a reviewable decision instead of a mysterious hidden item. Custom text fields can deliberately raise ERC or DRC warnings and errors for project-specific requirements.

Expect the upgraded board to report more—not necessarily because conversion damaged it, but because the checker has broader coverage. Use the DRC violations guide to resolve each finding against the rule that produced it.

Fabrication and automation expanded

KiCad 9 added ODB++ export, more 3D export formats and controls, multi-page PDF plotting, a net inspector, and additional kicad-cli capabilities. CLI DRC can include schematic parity and emit JSON reports; Gerber, drill, BOM, position, and 3D outputs are available for repeatable pipelines.

Do not assume a KiCad 8 script is compatible just because kicad-cli still exists. Pin the executable, run each subcommand’s --help, and compare generated files before changing the release toolchain. The headless KiCad automation guide uses KiCad 9 syntax for ERC, parity-aware DRC, BOM, Gerbers, and drills.

Upgrade a copy, then prove the outputs

Major KiCad saves are generally forward migrations, not a collaborative format that older releases can keep editing safely. Create a branch or archival copy before opening production sources in the newer major version. Then:

  1. Open the project and resolve library-table or rescue issues.
  2. Inspect custom symbols and footprints against their project libraries.
  3. Run ERC and review new rule categories.
  4. Update PCB from schematic and inspect every proposed change.
  5. Refill zones and use Zone Manager to check priority.
  6. Run DRC with schematic parity and audit exclusions.
  7. Regenerate BOM, Gerbers, drills, placement, and drawings.
  8. Compare layer count, outline, drills, mask, netlist, and critical dimensions with the last approved release.

Keep the earlier release package intact. A successful file conversion only proves that KiCad could read and save the project; the output comparison proves that the migrated project still represents the board you intended to build.