Inquire: Call 0086-755-23203480, or reach out via the form below/your sales contact to discuss our design, manufacturing, and assembly capabilities.
Quote: Email your PCB files to Sales@pcbsync.com (Preferred for large files) or submit online. We will contact you promptly. Please ensure your email is correct.
Notes: For PCB fabrication, we require PCB design file in Gerber RS-274X format (most preferred), *.PCB/DDB (Protel, inform your program version) format or *.BRD (Eagle) format. For PCB assembly, we require PCB design file in above mentioned format, drilling file and BOM. Click to download BOM template To avoid file missing, please include all files into one folder and compress it into .zip or .rar format.
How to Generate BOM Files from KiCad: Complete Guide for PCB Engineers
After years of designing boards in KiCad, I can tell you that generating a proper Bill of Materials is one of those tasks that seems simple until your assembly house comes back asking why half the components have no manufacturer part numbers. KiCad’s open-source nature means there are multiple ways to generate BOMs, from quick built-in exports to sophisticated plugin solutions. Knowing which method to use—and when—will save you hours of spreadsheet wrestling.
This guide covers every practical method for generating BOM files from KiCad, including the new features in KiCad 7 and 8 that have significantly streamlined the process.
Understanding the Bill of Materials in KiCad
A Bill of Materials is the shopping list for your PCB assembly. It tells manufacturers which components go where, how many are needed, and ideally provides enough detail to source the exact parts you specified. In KiCad, BOM data comes from two primary sources: the schematic (where component information lives) and the PCB layout (which contains placement coordinates).
Essential BOM Fields for Manufacturing
Every production-ready BOM should include these data columns:
Field
Description
Example
Reference
Component designator on PCB
R1, C5, U3
Value
Component value or identifier
10K, 100nF, ATmega328P
Quantity
Number of identical components
4
Footprint
Physical package type
0805, SOIC-8, QFP-48
Manufacturer
Component maker
Texas Instruments
MPN (Manufacturer Part Number)
Exact part specification
LM7805CT
Supplier Part Number
Distributor catalog number
296-1465-5-ND
Missing critical fields like MPN can result in the assembler substituting parts that don’t meet your specifications, or worse, stopping production to ask clarifying questions.
Two Approaches: Schematic-Based vs PCB-Based BOMs
KiCad offers BOM generation from both the schematic editor (Eeschema) and the PCB editor (Pcbnew). Understanding the difference helps you choose the right approach.
Source
Capabilities
Best For
Schematic (Eeschema)
Full access to all symbol fields, custom parameters, manufacturer data
Production BOMs with detailed component info
PCB (Pcbnew)
Reference, value, footprint only
Quick exports, basic prototypes
For anything going to a professional assembly house, always generate from the schematic. The PCB editor knows nothing about your custom fields like MPN, supplier references, or component specifications beyond what’s on the board.
Method 1: Quick BOM Export from PCB Editor
This is the fastest method when you need a basic component list immediately. It’s limited but gets the job done for simple prototypes.
Step-by-Step PCB BOM Export
Open your PCB in Pcbnew, then navigate to File followed by Fabrication Outputs and select BOM File. Confirm the filename when prompted.
KiCad generates a CSV file with semicolon separators containing these columns:
“Id”;”Designator”;”Package”;”Quantity”;”Designation”;”Supplier and ref”;
The “Supplier and ref” column will be empty unless you’ve specifically added that data to your footprints, which most people don’t do.
Limitations of PCB-Based BOMs
This method extracts only what Pcbnew knows about each component: the reference designator, footprint name, value, and quantity. There’s no access to custom schematic fields, so manufacturer part numbers, supplier information, and technical specifications won’t appear.
Method 2: Symbol Fields Table Export (KiCad 7 and Later)
KiCad 7 introduced a much simpler BOM workflow that doesn’t require external plugins for most use cases. The Symbol Fields Table now includes a direct CSV export feature.
Accessing the Symbol Fields Table
In the Schematic Editor, go to Tools and select Edit Symbol Fields. This opens a spreadsheet-like view of every component in your design with all their associated fields.
Configuring Columns for Export
The table displays all fields attached to your symbols. You can show or hide columns, sort by any field, and filter components. Before exporting, arrange the columns in the order your manufacturer expects.
Common columns to include:
Component Data: Reference, Value, Footprint, Quantity Sourcing Data: Manufacturer, MPN, Supplier, Supplier PN Assembly Data: DNP (Do Not Populate), Description
Exporting to CSV
Click the Export button at the bottom of the Symbol Fields Table dialog. KiCad saves the visible data as a CSV file that can be opened directly in Excel, Google Sheets, or uploaded to assembly houses.
This method works well for projects where you’ve already populated custom fields in your symbols. If your components lack MPN and supplier data, you’ll need to add it here or in the individual symbol properties.
Method 3: Using the Built-in BOM Generator with Plugins
For more control over BOM formatting and grouping, KiCad’s traditional BOM plugin system remains powerful. This approach uses external scripts to process an XML intermediate file.
Setting Up the BOM Generator
In Eeschema, go to Tools and select Generate Bill of Materials. This opens the BOM dialog showing available plugins and their output.
Adding a BOM Plugin
Click the plus (+) button to add a new plugin. Navigate to one of the built-in scripts:
Plugin
Location
Output Format
bom2csv.xsl
KiCad/bin/scripting/plugins/
CSV
bom2grouped_csv.xsl
KiCad/bin/scripting/plugins/
Grouped CSV
bom_csv_grouped_by_value.py
KiCad/bin/scripting/plugins/
Python CSV
Configuring the Command Line
The command line field controls how the plugin runs. The default usually looks something like:
Where %I is the input XML file and %O is the output filename. Change the extension to match your desired format (.csv, .html, .xlsx).
Generating the BOM
Click Generate. KiCad creates an intermediate XML file from your schematic, passes it to the plugin, and produces the final BOM file in your project directory.
Method 4: KiBoM Plugin for Advanced BOM Generation
KiBoM is a popular third-party plugin that provides intelligent component grouping and highly configurable output formatting.
Installing KiBoM
Download KiBoM from the GitHub repository (github.com/SchrodingersGat/KiBoM) and extract it to a location on your computer. Add the KiBOM_CLI.py script as a BOM plugin in Eeschema.
KiBoM Features
Feature
Description
Smart Grouping
Groups components by value, footprint, and custom fields
Multiple Output Formats
CSV, HTML, XML, XLSX
DNF/DNP Support
Automatically excludes Do Not Fit components
Field Joining
Combines multiple fields into single columns
Variant Support
Generate different BOMs for product variants
Color-Coded HTML
Visual distinction between component groups
Configuration with bom.ini
KiBoM uses a configuration file (bom.ini) that lives in your project folder. This file controls grouping behavior, column order, output format, and field aliasing.
Example configuration entries:
ini
[BOM_OPTIONS]output_file_name = %O_bom_%voutput_format = csv[GROUP_FIELDS]ValueFootprint[COMPONENT_ALIASES]c c_small cap capacitorr r_small res resistor
Method 5: Interactive HTML BOM for Visual Assembly
The Interactive HTML BOM plugin creates a self-contained HTML file that visually correlates BOM entries with component locations on the PCB rendering. It’s invaluable for hand assembly.
Installing Interactive HTML BOM
In KiCad 6 and later, open the Plugin and Content Manager from the main KiCad window. Search for “Interactive Html Bom” and install it. After installation, the plugin appears in the PCB Editor’s top toolbar.
Generating an Interactive BOM
Open your PCB in Pcbnew and click the Interactive HTML BOM icon. Configure options in the dialog that appears:
Option
Description
Board Rotation
Adjust PCB orientation in the viewer
BOM Fields
Select which fields appear in the component table
Grouping
How components are grouped (by value, footprint, etc.)
DNP Handling
How to display Do Not Populate parts
Highlight Mode
Color scheme for component highlighting
Click Generate BOM to create the HTML file.
Using the Interactive BOM
The generated HTML opens in your browser. Click any component row to highlight its location on the PCB image. Click any footprint on the PCB to highlight the corresponding BOM entry. This bidirectional linking makes hand-soldering prototypes dramatically faster.
The HTML file is completely self-contained—no internet connection required. You can host it online, email it to collaborators, or package it with your project documentation.
Method 6: JLCPCB Fabrication Toolkit
If you’re ordering assembly from JLCPCB (or similar services), the JLCPCB Fabrication Toolkit plugin generates BOM and CPL files in the exact format their system expects.
Installing the Plugin
Open the Plugin and Content Manager in KiCad and search for “JLCPCB Fabrication Toolkit.” Install it and restart KiCad.
Setting Up LCSC Part Numbers
For automatic part matching, add an “LCSC” field to your schematic symbols containing the LCSC part number (like C25804 for a common capacitor). You can find these numbers in JLCPCB’s parts library.
Generating JLCPCB-Compatible Files
Run the plugin from Pcbnew. It generates:
BOM file: Contains Comment, Designator, Footprint, and LCSC Part Number columns in the exact format JLCPCB expects.
CPL file: Component Placement List with X/Y coordinates, rotation, and layer information for pick-and-place machines.
The plugin handles coordinate origin conversion and rotation adjustments automatically, eliminating common compatibility issues.
Adding Custom Fields to Your Components
The quality of your BOM depends entirely on the data in your component symbols. Here’s how to set up comprehensive component information.
Adding Fields in Symbol Properties
Select a component in your schematic and press E to edit its properties. In the Symbol Properties dialog, click the plus (+) button in the Fields section to add custom fields.
Recommended Custom Fields
Field Name
Purpose
Example Value
MPN
Manufacturer Part Number
RC0805FR-0710KL
Manufacturer
Component maker
Yageo
Supplier
Distributor name
DigiKey
Supplier_PN
Distributor’s part number
311-10KCRCT-ND
LCSC
JLCPCB part number
C25804
Description
Detailed component description
10K 1% 0805 Resistor
Bulk Editing with Symbol Fields Table
Rather than editing components one at a time, use the Symbol Fields Table (Tools > Edit Symbol Fields) to add data to multiple components simultaneously. You can also export to CSV, edit in Excel, and import back into KiCad.
Best Practices for Production-Ready BOMs
Based on years of assembler feedback and rejected quotes, here are the practices that actually matter.
Always Include Manufacturer Part Numbers
Generic descriptions like “100nF capacitor” aren’t sufficient. Assemblers need exact MPNs to source correct parts. Even for passives, specify complete part numbers including tolerance, voltage rating, and package.
Mark DNP Components Clearly
Components that shouldn’t be populated need explicit marking. KiCad 8 added native DNP support—use it. For older versions, add a custom “DNP” or “Populate” field.
Verify Footprint-to-Part Matching
The most expensive BOM mistake is specifying a part number that doesn’t match your footprint. A BGA part number with a QFP footprint will halt production until you clarify the discrepancy.
Include Assembly Notes
Some parts require special handling—specific orientation for polarized components, heat-sensitive parts, mechanical fit requirements. Add a Notes field for assembly-critical information.
Useful Resources for KiCad BOM Generation
Here are the essential tools and references for mastering KiCad BOM workflows:
Plugins and Tools:
KiBoM: github.com/SchrodingersGat/KiBoM
Interactive HTML BOM: github.com/openscopeproject/InteractiveHtmlBom
Even experienced designers encounter these issues occasionally.
Empty or Missing Fields
Problem: Exported BOM has blank columns for MPN, manufacturer, or other custom fields.
Solution: Verify the fields exist in your schematic symbols (not just footprints). The BOM generator pulls from schematic data. Also ensure your plugin or export method includes those specific fields.
Components Not Grouped Correctly
Problem: Identical components appear on separate BOM lines instead of being consolidated.
Solution: Check that Value, Footprint, and any grouping fields match exactly. Even invisible differences like trailing spaces will prevent grouping.
Wrong Quantities
Problem: BOM quantities don’t match actual component count.
Solution: Rerun annotation in the schematic (Tools > Annotate Schematic) to ensure all references are assigned. Check for duplicate reference designators across hierarchical sheets.
Plugin Errors with File Paths
Problem: BOM plugin fails with path-related errors, especially on Windows.
Solution: Avoid spaces in directory names. Move your project to a path without spaces, or modify the plugin command to use quoted paths properly.
FAQs About KiCad BOM Generation
Can I generate a BOM with pricing information directly from KiCad?
Not directly, but the KiCost plugin integrates with distributors like DigiKey, Mouser, and Arrow to automatically fetch pricing based on your MPN fields. It generates a spreadsheet with quantities, prices per unit, and extended costs for your entire BOM.
How do I exclude certain components from the BOM?
KiCad 8 has native DNP (Do Not Populate) support—set the DNP attribute in symbol properties. For older versions, add a custom field like “DNP” set to “Yes” and configure your BOM plugin to filter these out. Most plugins like KiBoM support exclusion patterns in their configuration.
What’s the best format for sending BOMs to assembly houses?
CSV or Excel (.xlsx) are universally accepted. Many assemblers specifically request CSV because it imports cleanly into their manufacturing execution systems. Always confirm the exact format requirements with your specific assembly house—some like JLCPCB have strict column naming requirements.
Can I import component data from a spreadsheet back into KiCad?
Yes. The Symbol Fields Table supports CSV import. Export your fields, edit them in Excel (adding MPNs, supplier info, etc.), then import the modified CSV back. The reference designators must match exactly for the import to work correctly.
How do I handle multiple variants of the same board?
KiBoM and some other plugins support variants through DNF (Do Not Fit) field patterns. You can mark components for specific variants and generate separate BOMs for each. KiCad’s native variant system also works with the Symbol Fields Table export—filter by variant before exporting.
Conclusion
KiCad’s BOM generation has evolved significantly over recent versions. For simple projects, the Symbol Fields Table export in KiCad 7+ provides everything you need without plugins. For production work requiring specific formats, plugins like KiBoM and the JLCPCB Fabrication Toolkit streamline manufacturer compatibility. For hand assembly, Interactive HTML BOM transforms the population process.
The key to good BOMs isn’t the export method—it’s the data in your schematic symbols. Invest time upfront in adding proper MPNs, manufacturer names, and supplier references to your components. That effort pays dividends every time you generate a BOM, send a board for assembly, or need to source replacement parts years later.
Your assembly house will thank you. Your procurement team will thank you. And future-you will definitely thank present-you.
Inquire: Call 0086-755-23203480, or reach out via the form below/your sales contact to discuss our design, manufacturing, and assembly capabilities.
Quote: Email your PCB files to Sales@pcbsync.com (Preferred for large files) or submit online. We will contact you promptly. Please ensure your email is correct.
Notes: For PCB fabrication, we require PCB design file in Gerber RS-274X format (most preferred), *.PCB/DDB (Protel, inform your program version) format or *.BRD (Eagle) format. For PCB assembly, we require PCB design file in above mentioned format, drilling file and BOM. Click to download BOM template To avoid file missing, please include all files into one folder and compress it into .zip or .rar format.