Contact Sales & After-Sales Service

Contact & Quotation

  • 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.
Drag & Drop Files, Choose Files to Upload You can upload up to 3 files.

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:

FieldDescriptionExample
ReferenceComponent designator on PCBR1, C5, U3
ValueComponent value or identifier10K, 100nF, ATmega328P
QuantityNumber of identical components4
FootprintPhysical package type0805, SOIC-8, QFP-48
ManufacturerComponent makerTexas Instruments
MPN (Manufacturer Part Number)Exact part specificationLM7805CT
Supplier Part NumberDistributor catalog number296-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.

SourceCapabilitiesBest For
Schematic (Eeschema)Full access to all symbol fields, custom parameters, manufacturer dataProduction BOMs with detailed component info
PCB (Pcbnew)Reference, value, footprint onlyQuick 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:

PluginLocationOutput Format
bom2csv.xslKiCad/bin/scripting/plugins/CSV
bom2grouped_csv.xslKiCad/bin/scripting/plugins/Grouped CSV
bom_csv_grouped_by_value.pyKiCad/bin/scripting/plugins/Python CSV

Configuring the Command Line

The command line field controls how the plugin runs. The default usually looks something like:

xsltproc -o “%O.csv” “path/to/plugin/bom2csv.xsl” “%I”

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

FeatureDescription
Smart GroupingGroups components by value, footprint, and custom fields
Multiple Output FormatsCSV, HTML, XML, XLSX
DNF/DNP SupportAutomatically excludes Do Not Fit components
Field JoiningCombines multiple fields into single columns
Variant SupportGenerate different BOMs for product variants
Color-Coded HTMLVisual 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:

OptionDescription
Board RotationAdjust PCB orientation in the viewer
BOM FieldsSelect which fields appear in the component table
GroupingHow components are grouped (by value, footprint, etc.)
DNP HandlingHow to display Do Not Populate parts
Highlight ModeColor 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 NamePurposeExample Value
MPNManufacturer Part NumberRC0805FR-0710KL
ManufacturerComponent makerYageo
SupplierDistributor nameDigiKey
Supplier_PNDistributor’s part number311-10KCRCT-ND
LCSCJLCPCB part numberC25804
DescriptionDetailed component description10K 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
  • KiCost (BOM costing tool): github.com/xesscorp/KiCost
  • Boms-Away (component manager): github.com/Jeff-Ciesielski/Boms-Away

Supplier Part Libraries:

  • JLCPCB Parts Library: jlcpcb.com/parts
  • LCSC Electronics: lcsc.com
  • Octopart (part search): octopart.com
  • SnapEDA (KiCad symbols with MPN): snapeda.com

Official Documentation:

  • KiCad Documentation: docs.kicad.org
  • KiCad Forum: forum.kicad.info

Troubleshooting Common BOM Problems

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.

Leave a Reply

Your email address will not be published. Required fields are marked *

Contact Sales & After-Sales Service

Contact & Quotation

  • 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.

Drag & Drop Files, Choose Files to Upload You can upload up to 3 files.

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.