What this error means

For every sheet symbol, ERC collects two name lists: the sheet pins on the symbol, and the hierarchical labels inside the sheet file it points to. The lists must pair up by exact text, after text variables are resolved. A pin with no matching label reports "Sheet pin X has no matching hierarchical label inside the sheet" (marker on the pin, in the parent); a label with no matching pin reports "Hierarchical label X has no matching sheet pin in the parent sheet" (marker on the label, in the subsheet).

Nothing but the name is compared — the pin's shape (input, output, bidirectional…) is graphics, not electrical data. The check matters because a matched pin/label pair is the only thing that carries a net through a sheet boundary: an unmatched label means the net stops at the subsheet's edge; an unmatched pin means whatever it is wired to in the parent never enters the sheet.

Common causes

1. One side was renamed and the other wasn't

The usual case: a rename or typo that only reached one side. Matching is case-sensitive, so a pin Clk against a label CLK trips both messages. Bus labels match the same way — a pin DATA[0..7] needs the label text to be exactly DATA[0..7].

2. A label was added but its sheet pin never placed (or vice versa)

Adding a hierarchical label inside the sheet does not create the sheet pin on the symbol; that is a separate step. The mirror image is a sheet pin that survived after its label was deleted.

3. The label inside the sheet isn't hierarchical

Only hierarchical labels count. A local or global label with the right name does not satisfy the sheet pin, even if a global label happens to make the connection by other means.

How to fix it

Run the Sync Sheet Pins tool on the offending sheet

  1. Right-click the sheet symbol → Sync Sheet Pins… (KiCad 9) / Sync Selected Sheet Pins… (KiCad 10); for all sheets, Place → Sync Sheet Pins… (9) / Sync All Sheet Pins… (10).
  2. Unmatched sheet pins are listed on the left, unmatched hierarchical labels in the middle, matched pairs on the right.
  3. Use the rename buttons to make one side match the other, Add Sheet Pins / Add Hierarchical Labels to create a missing counterpart, or delete the orphan.
  4. Changes apply immediately; re-run ERC (Inspect → Electrical Rules Checker).

Use when: The reliable route for any mismatch, and the only sane one when a sheet has accumulated several.

Rename one side by hand

  1. Double-click the sheet pin (or select it and press E) and pick the name from the dropdown — it lists the labels that actually exist inside the sheet, which sidesteps typos.
  2. Or open the subsheet, rename the hierarchical label to match the pin, and re-run ERC.

Use when: One pin, one label, and you can see the typo. Case counts.

Import the missing sheet pins

  1. Select the sheet symbol and choose Place → Place Sheet Pins (KiCad 9) / Place Pins from Sheet (KiCad 10).
  2. Each click on the sheet symbol attaches a pin for the next unmatched label until none remain.
  3. Wire the new pins in the parent and re-run ERC.

Use when: You added labels inside the sheet and never brought them out. A pin placed but left unwired trades this error for a dangling sheet-pin violation, so finish the wiring.

When it’s safe to exclude

Almost never. Both directions describe a definite disagreement between two things you named yourself, and one of them is wrong. Excluding the marker (right-click it → Exclude) leaves a net that silently dead-ends at the sheet boundary — the schematic still looks hierarchical, but the connection does not exist in the netlist. If the label really is a stub for future work, delete it until the design grows into it; that costs the same click and hides nothing. Downgrading the check in Schematic Setup → Electrical Rules → Violation Severity turns off the only test that watches sheet boundaries.

Gotchas

  • Matching is case-sensitive and ERC means it: Clk vs CLK fails. The Import/Cleanup tools ignored case for a while (fixed in the KiCad 7.0 series, upstream issue 14415), producing errors the tools then refused to fix; the Sync dialog handles case mismatches now.
  • The Sync Sheet Pins dialog pairs pins and labels by name and shape; ERC compares names only. A pair the dialog shows as unmatched because the shapes differ can still be ERC-clean.
  • One rename produces two violations — the pin side in the parent, the label side in the subsheet — plus a companion on the orphaned label: label_dangling (error) in KiCad 9, isolated_pin_label (warning) in KiCad 10. Fixing the name clears all of them.
Minimal reproduction

Place a hierarchical sheet, add a hierarchical label CLK on a wire inside it, import the matching sheet pin onto the sheet symbol, then rename either side and run ERC. The one typo reports twice, once per sheet:

[hier_label_mismatch]: Sheet pin CLK_IN has no matching hierarchical label inside the sheet
    ; error
[hier_label_mismatch]: Hierarchical label CLK has no matching sheet pin in the parent sheet
    ; error

The checked-in pair data/erc/samples/hier_label_mismatch.kicad_sch (parent, run ERC on this) and hier_label_mismatch_sub.kicad_sch reproduces this with a pin named CLK_IN against a label named CLK. Because the files embed their own symbols, ERC also emits two lib_symbol_issues warnings about the missing repro library — artifacts of the self-contained repro. The orphaned label draws one more companion violation, which differs by version: label_dangling (error) under KiCad 9, isolated_pin_label (warning) under KiCad 10. Renaming the sheet pin to CLK clears everything except the two library artifacts.

FAQ

The sheet pin is right there — why does ERC say there's no match?

The names differ in some way you have not spotted yet: case, a trailing character, or a rename that only reached one side. Open the sheet pin's properties and re-pick the name from the dropdown of labels that exist inside the sheet. If the name you expect is not in the dropdown, the label side is the one that changed.

Do the pin and label shapes (input/output) have to match too?

No. ERC compares names only; the shape is a drawing attribute with no electrical effect, and KiCad does not check direction between a sheet pin and its label. Only the Sync Sheet Pins dialog considers shape, when deciding which pins and labels to pair up.

Can a bus go through a sheet pin?

Yes. Name the sheet pin with the exact bus label text, for example DATA[0..7], and the bus crosses the boundary like any single net. A member range that differs between label and pin is a mismatch.

Sources