What this error means
This check runs only for symbols whose library symbol defines footprint filters — the wildcard patterns on the Footprint Filters tab in the Symbol Editor that narrow the suggestion list in the footprint assignment tools. A symbol with no filters is never tested.
For each filtered symbol, ERC compares the Footprint field against every
filter, case-insensitively, with * (any run of characters, including
none) and ? (exactly one character) as wildcards. A filter containing a
colon is
matched against the full Library:Footprint identifier; one without a
colon is matched against the footprint name after the colon only. One
matching filter clears the symbol; zero means this violation. An empty
Footprint field matches nothing, so filtered symbols with no footprint
assigned yet are flagged too.
The check ships with severity Ignore in both KiCad 9 and 10 — it never fires until you raise it in Schematic Setup → Electrical Rules → Violation Severity. And it reads the filters from the schematic's cached copy of the symbol, so after editing filters in a library you need Tools → Update Symbols from Library… before ERC sees them.
Common causes
1. The filter list doesn't cover a footprint you chose on purpose
The most common case in practice. The footprint is right; the
filter pattern is stale or too literal — so14 against a footprint
named SO-14, a filter written for one vendor's naming scheme, or
a custom footprint you drew after the symbol's filters were set.
2. The footprint really is wrong for the symbol
Assigned from an unfiltered list, pasted from another design, or a leftover from changing the part. This is the mistake the check exists to catch — a resistor symbol carrying a capacitor footprint netlists and routes just fine, so nothing downstream would have complained.
3. No footprint assigned yet
An empty Footprint field matches no filter, so enabling this check flags every filtered symbol you haven't assigned yet — including off-board parts that will never get one.
How to fix it
Widen the symbol's footprint filters
- Right-click the symbol → Edit Library Symbol… to open the library copy in the Symbol Editor.
- Open Symbol Properties (the properties toolbar button, or double-click an empty spot on the canvas) → Footprint Filters tab.
- Edit the pattern so it covers the footprint you actually used — `SO*14` matches both `SO14` and `SO-14`; a filter with a colon must cover the library name too.
- Save the symbol, then run Tools → Update Symbols from Library… in the schematic so the cached copy picks up the new filters, and re-run ERC.
Use when: The footprint is what you intend and the filter list is what's wrong. For symbols from KiCad's stock libraries, copy the symbol to a personal library first — the stock ones are read-only.
Re-assign through the filtered list
- Run Tools → Assign Footprints… and enable the toolbar option that filters the footprint list by the symbol's footprint filters — only matching footprints remain.
- Pick one, apply, and re-run ERC.
Use when: The footprint is wrong or missing. Choosing from the filtered list can only produce assignments this check accepts, which is the whole point of maintaining filters.
When it’s safe to exclude
Freely — this is an advisory lint, and shipping at Ignore means the default state already is the exclusion. Filters only steer the suggestion lists in the assignment tools; the netlist, the board, and every electrical check are unaffected by a mismatch. Leave it at Ignore unless you maintain filter lists deliberately and want them enforced.
If you've enabled it on purpose, excluding individual markers (right-click the marker → Exclude) is reasonable for deliberate one-off substitutions and for off-board parts with no footprint. What an exclusion hides is only ever the second cause above: a genuinely wrong footprint that nothing else in KiCad will ever flag.
Gotchas
- In every KiCad 9.0.x release, and in 10.0.0 through 10.0.4, the
violation is filed under the wrong check: reports tag it
[footprint_link_issues]and it takes "Footprint link issue"'s severity — setting this check to Error in 9.x still yields a warning. Fixed in 10.0.5, where it reports as[footprint_filter]under its own severity. - Enabling the check audits more than mismatches: every filtered symbol with an empty Footprint field is flagged, since empty matches no pattern. Marking a symbol excluded-from-board or DNP does not skip it.
- The manual is wrong about this check twice: its ERC table lists the
severity as Warning (the shipped default in 9 and 10 is Ignore), and
its filter-syntax section claims
?matches zero or one character (SOT?23matchingSOT23). Verified against kicad-cli 10.0.8:?matches exactly one character here, soSOT?23rejectsSOT23. - The PCB editor runs the same comparison as a DRC check, "Footprint doesn't match symbol's footprint filters" (schematic parity), also Ignore by default. Enabling one does not enable the other.
Version notes
- KiCad 9.0: Check introduced in this release.
Minimal reproduction
Place a Device:R (its library symbol ships the filter R_*), set its
Footprint field to any capacitor footprint, raise this check from
Ignore to Warning in Schematic Setup → Electrical Rules → Violation
Severity, and run ERC. KiCad 10.0.5 or later reports:
[footprint_filter]: Assigned footprint (c_0805_2012metric) doesn't match footprint filters (R_0603*)
; warning
The footprint name prints lowercased — the check lowercases both sides
before matching and reports the lowercased copy. KiCad 9.x prints the
same message with a trailing period under [footprint_link_issues].
The checked-in sample data/erc/samples/footprint_filter/ is a project
directory rather than a bare schematic because the .kicad_pro has to
raise the severity for the check to run at all. Its one embedded symbol
carries filter R_0603* and footprint
Capacitor_SMD:C_0805_2012Metric; the single lib_symbol_issues
warning about the missing repro library is a sample artifact.
Changing the footprint to Resistor_SMD:R_0603_1608Metric drops the
violation, which is fix #2 in miniature.
Related errors
FAQ
I got an error message about footprint filters — does it actually matter?
Footprint filters are advisory: they only narrow the suggestion list when assigning footprints, so the mismatch has no effect on the netlist or the board. It matters only when the filter is right and the footprint is genuinely the wrong package — check which side is wrong before dismissing it.
My symbol's filter says so14 and the footprint is SO-14 — why doesn't it match?
Filters are glob patterns, not fuzzy matches. so14 only matches
those four characters (case doesn't matter), so the dash breaks it.
Use so*14, which matches both SO14 and SO-14 — * matches
any run of characters including none, while ? demands exactly
one, so so?14 would reject the dashless form.
Is this footprint filter check new in KiCad 9?
Yes. KiCad 9.0 added it to ERC and added a twin DRC check in the PCB editor, both set to Ignore out of the box. A project migrated from 8.x only starts showing it after someone raises the severity in that project. In 9.x reports it additionally appears under the "Footprint link issue" heading rather than its own.
Why is it flagging parts that aren't on the board, like a panel-mount potentiometer?
The check tests every symbol whose library symbol has filters, and an empty Footprint field counts as a mismatch. Excluded-from-board and DNP markings don't exempt a symbol. Assign the real part's footprint anyway, exclude those markers individually, or keep the check at Ignore if your schematics routinely carry off-board parts.
Sources
- Check implementation — ERC_TESTER::TestFootprintFilters, eeschema/erc/erc.cpp at KiCad 10.0.3
- Check implementation at KiCad 9.0.9.1 — marker filed as Footprint link issue
- Marker type corrected in KiCad 10.0.5 — eeschema/erc/erc.cpp
- Default severity Ignore — eeschema/erc/erc_settings.cpp at KiCad 10.0.3
- KiCad 10 Schematic Editor manual — list of ERC checks
- KiCad 10 Schematic Editor manual — Footprint filters (Symbol Editor)