Skip to main content
Symbol libraries store reusable schematic components that can be placed in your designs. KiCad provides a comprehensive library management system for organizing, creating, and sharing symbols.

Overview

Symbol library management in KiCad is handled by the SYMBOL_LIBRARY_MANAGER class (source/eeschema/symbol_library_manager.h:27), which maintains working copies of libraries and tracks modifications.

Library Structure

LIB_SYMBOL Class

The core symbol class represents a library component:
Symbols can be derived from parent symbols, inheriting properties and graphics while allowing customization. This enables efficient library organization.

Symbol Types

Standard Symbols

Regular components like resistors, capacitors, ICs

Power Symbols

Special symbols for power and ground nets

Derived Symbols

Symbols that inherit from parent symbols

Working with Libraries

Symbol Buffer System

The library manager uses a buffer system to track changes:

Library Buffer

Each library has a buffer that tracks all symbols:

Creating Custom Symbols

1

Open Symbol Editor

Launch the Symbol Editor from the schematic editor or main project window.
2

Create New Symbol

Start with a blank symbol or derive from an existing one:
3

Add Graphics

Draw the symbol body using:
  • Rectangles for IC packages
  • Circles for discrete components
  • Arcs and lines for custom shapes
  • Text for labels and values
4

Place Pins

Add electrical pins with proper types:
  • Input, Output, Bidirectional
  • Power input/output
  • Passive, Open collector/emitter
  • Not connected
Each pin requires:
  • Pin number (matches footprint pad)
  • Pin name (displayed on schematic)
  • Electrical type (for ERC)
  • Graphic style (line, clock, inverted, etc.)
5

Set Properties

Configure symbol metadata:
  • Reference prefix (R, C, U, etc.)
  • Default value
  • Footprint filter patterns
  • Datasheet URL
  • Keywords for searching
6

Define Units

For multi-unit symbols (e.g., quad op-amp), create separate units:

Symbol Variants

Symbols can have alternate body styles (De Morgan representation):
Use alternate body styles for logic gates to show both standard and De Morgan representations.

Library File Formats

Modern Format (.kicad_sym)

KiCad 6+ uses S-expression format:

Library Management

Adding Libraries

Libraries are managed through symbol library tables:

Library Adapter

The symbol library adapter provides a tree view interface:

Symbol Properties

Required Properties

string
required
Reference designator prefix (R, C, U, etc.)
string
required
Component value or part number
string
Associated PCB footprint
string
URL or path to component datasheet

Custom Properties

Add custom fields for:
  • Manufacturer part number
  • Supplier and supplier part number
  • Tolerance, power rating, voltage rating
  • Cost and availability information

Symbol Inheritance

Derived symbols inherit from parent symbols:
Derived symbols can override specific properties while inheriting graphics and pins from the parent. This is useful for creating symbol families (e.g., resistors with different power ratings).

Embedded Files

Symbols can embed files like datasheets:

Best Practices

  • Match physical package pin numbers exactly
  • Use standard numbering schemes (DIP: 1-N, QFP: clockwise from pin 1)
  • For multi-unit symbols, maintain consistent numbering across units
  • Use IEEE/ANSI or IEC standards for symbol shapes
  • Keep symbols visually balanced and readable
  • Standard pin length: 100 mils (2.54mm)
  • Standard grid: 50 or 100 mils
  • Set visibility appropriately (reference: visible, value: visible, others: hidden)
  • Use footprint filters to constrain compatible footprints
  • Add comprehensive keywords for searchability
  • Group related symbols in dedicated libraries
  • Use clear, descriptive library and symbol names
  • Maintain separate project-specific and shared libraries
  • Version control your custom libraries

Source Code References

Next Steps

Schematic Design

Use symbols in your schematics

Footprint Libraries

Link symbols to PCB footprints