Difference Between Symbol Field and Property?

104 views
Skip to first unread message

RAY5D

unread,
Mar 17, 2026, 12:12:27 PMMar 17
to KiCad Developers
Hello, Kicad Devs

I'm trying to setup a database library to manage my parts, but got a bit confused with whether to specify component parameters in "fields" or "properties" in the database config file. I found this forum post which showed a rather mixed example and no replies, and this repo issue which seemed to suggest they are synonymous. The Kicad documentation has no mention on how they are different either. Can someone explain if it's really only internal to the code base and doesn't matter in a user's view, or they are different and I should stick to a standard written down somewhere? And maybe the dev team's intention on how to handle the two types of parameters in future updates? Thanks! 

RAY5D

Jon Evans

unread,
Mar 17, 2026, 12:45:06 PMMar 17
to dev...@kicad.org
In general, "property" means something where KiCad code defines its existence and it is a built-in piece of information about an object.

"field" means a special type of child object that some objects (e.g. sheets, symbols, footprints) can have.  Fields are special text objects that can have a name (key) and value.

The place where the lines are blurred here is that KiCad defines "built-in" fields for symbols and footprints.  These are Reference, Value, Footprint, Datasheet, and Description for footprints.

Why are these fields and not properties?  Well, part of it is just down to how the code has evolved over a long time, and part of it is because it is fairly standard to want to have the reference (and often value) show up as fields (text objects that appear on the physical board) rather than just properties (data inside the board).  Should the footprint and datasheet be properties rather than fields?  Probably yes, but that ship sailed long ago.

The database library configuration file pulls out all "first-class" information into top level keys for a library configuration, and uses the "fields" array in the config file for *user-defined fields*.  So for example even though there is a Footprint field on a symbol, you don't put the footprint configuration in the "fields" section.  So, to answer your original question, if you want to add custom data to your symbols/footprints from the database, add them to the fields array in the kicad_dbl file.

-Jon

--
You received this message because you are subscribed to the Google Groups "KiCad Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email to devlist+u...@kicad.org.
To view this discussion visit https://groups.google.com/a/kicad.org/d/msgid/devlist/ab6cc904-21d9-409d-a1f2-84f9a1000e95n%40kicad.org.

RAY5D

unread,
Mar 17, 2026, 10:42:19 PMMar 17
to KiCad Developers, j...@craftyjon.com, RAY5D
Hi, Jon!

(My last message was stuck on sending... rewriting here, will delete duplicates if I see any. )
Thanks for the clarification. So, basically, all built-in objects are properties, except for the 5 you've mentioned that are fields, is that correct? Also, by "Description for footprints", do you mean the description for symbols are different? How about the description for atomic parts in a database library? I tried to modify the database config in some crazy ways, and found out that the description can either be defined as a field or a property, which seems rather strange. Here's what I tried. Let's take the example config in the documentation as a template...

...
"libraries": [
        {
            "name": "Resistors",
            "table": "Resistors",
            "key": "Part ID",
            "symbols": "Symbols",                           // I'm gonna call this the dedicated section
            "footprints": "Footprints",
            "fields": [
                {                                           // this is definitely in fields
                    "column": "MPN",
                    "name": "MPN",
                    "visible_on_add": false,
                    "visible_in_chooser": true,
                    "show_name": true,
                    "inherit_properties": true
                },
...
            ],
            "properties": {
                "description": "Description",               // and these are properties
                "footprint_filters": "Footprint Filters",
...
            }
        }
    ]


and the entries work in these sections:

            Dedicated    Fields    Properties
Reference   Did not test, obviously don't want this to be set by the database :)
Symbols     Yes          No        No
Footprints  Yes          No        No
Value       No           Yes       No
Datasheet   No           Yes       No
Description No           Yes       Yes


Everything seems pretty clear except for the description. Is it expected to work in either places? What is the more preferred/supported place to put it? Thanks!

RAY5D

RafałPiietrak

unread,
Mar 18, 2026, 2:34:00 AMMar 18
to dev...@kicad.org

Hi All,

If I may, a side note: 

some time ago I was working on an external board optimization tool and it required new parameters both to schematic and to board files. i know, that it doesn't tell any good about my dedication, but the project is now shelved once i discovered that both  pcb and sch will either fail on reading such file with unknown property or not preserve it across read / write cycle. 

So: shouldn't such behavior be taken as a bug and fixed? (from what I can tell from sources, it's currently perceived as a required feature).

-R

Reply all
Reply to author
Forward
0 new messages