Skip to main content

BOM Formatter & Deduplicator

Paste or upload a messy CSV bill-of-materials. Get a clean, grouped, deduplicated BOM ready for JLCPCB, Digi-Key, or Mouser.

Paste or upload a BOM CSV to get started.

Method & assumptions

Grouping key: (value, footprint). Rows with the same value + footprint merge, reference designators concatenate, quantity sums.

Column headers are auto-detected from common variants (Reference/RefDes/Designator, Value/Val, Footprint/Package, MPN/LCSC/Digi-Key). Multi-reference cells like "R1, R2, R3" are split into individual placements. Everything runs in your browser — no upload to any server.

Why BOMs need cleaning

KiCad's default BOM export lists one row per reference designator — a board with fifty 0.1 µF capacitors gives you fifty rows to upload, which no fab or distributor accepts as-is. JLCPCB, PCBWay, Digi-Key, and Mouser all want grouped BOMs: one row per unique part with the reference list and total quantity.

JLCPCB assembly BOM format

JLCPCB assembly needs Comment / Designator / Footprint / LCSC / Quantity columns. The downloaded CSV from this tool matches that format directly — upload it to the JLCPCB assembly quote page without further editing.

Frequently asked

What columns does the parser recognise?
Reference / RefDes / Designator for the reference, Value / Val for the part value, Footprint / Package / Case for the footprint, and MPN / LCSC / Part Number for the manufacturer part. Case-insensitive.
Do my files get uploaded?
No. All parsing and grouping happens in your browser. Nothing is sent to any server.
Can I upload a JLCPCB CPL file?
This tool handles BOMs, not CPL (component placement) files. CPL is a separate export from your EDA tool.
Which EDA tools' BOM exports work?
KiCad, Altium, Eagle, DipTrace, and most others — the header aliases cover common variants. If yours doesn't parse, rename the columns and try again.
Next step

Starting a new board from a parts list? Name the main parts in a description and PCBEditor works out how they connect.

Generate a schematic from this BOM →
Was this useful?