If your KiCad schematic has grown into one enormous sheet that no longer fits on a screen, hierarchical design is the fix. Instead of a single canvas, you split the circuit into child sheets — one per functional block — connected through a clean top-level page.
Short answer: A hierarchical schematic in KiCad breaks a large design into multiple linked sheets. A parent sheet holds sheet symbols; each symbol points to a child .kicad_sch file; and connections cross the boundary through hierarchical labels that show up as sheet pins. Use it for big designs and for repeated blocks you want to draw once.
What hierarchical sheets are, and when to use them
A hierarchical sheet is a child schematic embedded in a parent through a sheet symbol — a labeled box on the parent page that represents an entire sub-circuit. Double-click it and you descend into that child sheet; the breadcrumb at the top of the editor shows where you are in the tree.
Reach for hierarchy when:
- The design is large. Past a few hundred components, a single sheet becomes a maze. Splitting it into power, MCU, analog front-end, and connectors makes each page reviewable on its own.
- Blocks repeat. Four identical amplifier channels, eight identical sensor ports, three identical motor drivers — draw the block once and instantiate it multiple times.
- You want a readable overview. The top sheet becomes a block diagram of your product, which is invaluable during review and for anyone reading the design later.
Small boards — a dozen parts on a breakout — don't need any of this. A single flat sheet is faster and clearer.
Flat vs hierarchical
A flat design keeps the whole circuit on one sheet. It's the right call for simple boards: everything is visible at once, and there's no navigation overhead.
A hierarchical design is a tree. One root sheet sits at the top; child sheets hang beneath it, and children can have their own children. Connections between pages are explicit — you can see exactly which nets cross each boundary — which is what makes large designs maintainable.
There's a middle ground people sometimes stumble into: multiple sheets stitched together only by global labels. It works, but the connections are invisible on the page, so it tends to get messy fast. True hierarchy with sheet pins keeps the wiring honest.
Creating a sheet and wiring it up
In KiCad's schematic editor (Eeschema):
- Use Place → Add Hierarchical Sheet (or the sheet button on the right toolbar) and drag a box on the parent page.
- Name the sheet and give it a filename, e.g.
power.kicad_sch. KiCad creates the child file. - Double-click the sheet symbol to open the child and draw the sub-circuit inside it.
To connect the child to the outside world you use hierarchical pins/labels:
- Inside the child sheet, place a hierarchical label (Place → Add Hierarchical Label) on each net that needs to leave the sheet — say
VBUS,3V3,EN. - Go back to the parent. On the sheet symbol, add matching sheet pins: use Place → Add Sheet Pin, and KiCad offers the hierarchical labels you defined in the child so the names stay in sync.
- Wire those sheet pins to nets on the parent page.
That's the whole contract. A hierarchical label inside the child and a sheet pin on the parent, sharing a name, form one net across the boundary. Signals that stay entirely inside the child never need to appear on the parent at all — which is exactly the point.
Reusing a sheet for repeated blocks
This is where hierarchy pays for itself. Suppose you have four identical audio channels. Draw one channel.kicad_sch, then place four sheet symbols on the parent, all pointing at the same file. Each is a separate instance of the same drawing.
KiCad annotates instances independently: the four channels share one schematic, but their components get unique reference designators (R1/R2… in channel A, R20/R21… in channel B, and so on). Fix a bug in the shared sheet once and all four instances inherit it. To differentiate instances electrically — different input nets per channel — wire each sheet symbol's pins to different parent nets.
For repeated blocks that need per-instance values (a different gain resistor per channel), keep the topology in the shared sheet and set those values through the instance, or split the truly-unique parts onto the parent.
Global vs hierarchical vs local labels
Picking the right label type is most of what keeps a hierarchical design clean. KiCad gives you three, each with a different scope:
| Label type | Scope | When to use |
|---|---|---|
| Local | The single sheet it's drawn on | Naming ordinary nets within one page; connecting two points on the same sheet without a visible wire |
| Hierarchical | Its sheet plus its parent, via the sheet pin | Passing a signal in or out of a child sheet — the standard way to cross a hierarchy boundary |
| Global | The entire project, every matching name | Truly project-wide rails and signals, e.g. GND or a system-wide reset — use sparingly |
The rule of thumb: use hierarchical labels to move signals across sheet boundaries, local labels for everything that stays on a page, and reserve global labels for a handful of genuinely global nets. Overusing global labels recreates the invisible-connection problem hierarchy was meant to solve, because a net can silently join anything with the same name anywhere in the project.
Before you finalize wiring, it's worth running the electrical rules check — mismatched sheet pins and stray labels are exactly what it catches. See our guide on KiCad ERC explained for how to read those warnings.
Keeping a big design readable
A few habits make a large hierarchy pleasant to work in:
- One block per sheet, named for its function.
power,mcu,usb,analog— the top sheet reads like a system diagram. - Minimize what crosses boundaries. The fewer sheet pins on a symbol, the clearer the interface. If a sheet needs 40 pins, it may be doing too much.
- Keep a consistent label convention so signals are easy to trace between pages, and lean on well-organized symbol and footprint libraries so parts stay predictable across sheets.
- Don't nest deeper than you need. Two or three levels handles almost any board; deeper trees get hard to navigate.
Hierarchical schematics are a big part of why KiCad handles serious, complex hardware — if you're weighing that, our take on whether KiCad is professional enough goes deeper.
Once your design is organized this way, the manufacturing outputs should keep pace with it. That's what GoForFab does: connect a KiCad project and every push regenerates the full package — Gerbers, BOM, CPL, DRC and ERC reports, 3D renders — straight from your source, using kicad-cli. It's free forever to get started, so your multi-sheet design always has a current, reproducible output set behind it.