KEMI
/

KEMI Tools

BOM Cleaner

Paste a BOM from KiCad, Altium or Eagle, or drop a CSV or Excel file. Columns are detected automatically, designator ranges expanded, identical parts merged into single lines, and duplicate designators, quantity mismatches, missing MPNs and DNP parts flagged. Download the result as a clean CSV or in JLCPCB SMT format — everything stays in your browser.

① Load your BOM

Drop a CSV, TSV or Excel (.xlsx) file, or click

Works with KiCad, Altium, Eagle, OrCAD and EasyEDA BOMs. Processed right in your browser — nothing you enter is stored.

Try a sample:

How to use

  1. Export your BOM from CAD as CSV or Excel and drop it in, or copy the table in Excel and paste it. First time? Try the KiCad or Altium sample.
  2. In ② check the auto-detected designator, value, footprint and MPN columns and fix any that are wrong.
  3. In ③ fix the red errors first (duplicate designators, qty mismatches) — ideally back in your CAD source.
  4. Review the sorted result in ④, then download the cleaned CSV or JLCPCB file, or request an SMT quote with one click.

Why clean it

A BOM straight out of CAD isn't ready for your assembler

The bill of materials is what an SMT assembly house uses to buy parts, load feeders and decide what goes where on the board. But every EDA tool exports it differently: KiCad uses Reference, Value and Footprint columns; Altium puts the value in 'Comment' and prepends a few lines of project info; Eagle exports semicolon-separated files. Multi-sheet schematics list the same 100 nF capacitor once per sheet, designators show up as ranges like 'R1-R4', do-not-populate parts are mixed in, and some lines have no manufacturer part number at all. Send that as-is and the assembler has to come back with questions — delaying your quote — or, worse, places a part with the wrong rating.

The standard

What a 'good' assembly BOM looks like

ColumnMeaningExampleWhy it matters
DesignatorEvery reference on the boardC1,C2,C4,C5Must match the pick-and-place (CPL) file one-to-one
QtyCount on that line4Must equal the number of designators
Value / CommentValue or part name100nF 16V X7RWhat a human reviews
FootprintPackage0402, SOT-23-5Same value in a different size is a different part
MPNManufacturer part numberCL05B104KO5NNNCThe only unambiguous purchasing key — rating, dielectric, tolerance
ManufacturerMakerSamsungAvoids part-number collisions between vendors
DNP flagNot fittedDNPOmit it and the part gets placed; delete the line and the CPL won't match
The rule is one line per MPN. Same value and footprint with different MPNs must stay separate lines; the same MPN scattered over several lines must be merged.

How it works

What this tool does

  1. Delimiter detection: picks the separator (tab, comma or semicolon) whose count outside quotes is consistent across lines, so Altium and Eagle BOMs with commas inside the designator field split correctly.
  2. Header detection: the row among the first 20 with the most header words (Designator, Reference, Qty, Footprint…) wins, so Altium's project-info preamble is skipped automatically.
  3. Column mapping: falls back to Comment when there's no Value column, recognises 'Manufacturer Part Number 1' as MPN and 'LCSC Part #' as the LCSC number, and ignores distributor columns such as Digi-Key or Mouser part numbers. You can override any mapping on screen.
  4. Designator expansion: 'R1-R4', 'R1 - R4' and 'C1, C2 C3' are expanded to individual references (ranges only when the prefix matches). The table re-compresses them for display; exports list them individually.
  5. Merging: lines with the same value, footprint and MPN are merged and their designators and quantities combined. Values are compared numerically, so 100n, 0.1uF and 100nF — or 4k7 and 4.7k — match. DNP lines never merge with fitted ones.
  6. Validation: duplicate designators, qty ≠ designator count, missing designators, missing MPN, missing footprint, one value/footprint with several MPNs, one MPN with different values or footprints, and DNP parts.
  7. Export: cleaned CSV (with a UTF-8 BOM so Excel shows non-ASCII text correctly), JLCPCB-format CSV, or tab-separated copy for pasting into Excel.

Walking through the sample

Load the 'KiCad BOM' sample and a ten-line BOM becomes nine. C1, C2, C5 and C4 — all 100n 0402 with the same MPN, listed separately because they sit on different sheets — merge into one line of four. R3 appears both inside the 'R1-R4' range and on its own 1 kΩ line, so it's flagged as a duplicate designator. The LED line says qty 3 but lists only D1 and D2, and has no MPN, so it gets both a qty mismatch and a missing-MPN warning. R5 matches the other 10 kΩ resistors on value and footprint but has a different MPN, raising 'several MPNs for one value' — check whether that's deliberate (say, a precision part) or a slip. R6 (0 Ω, DNP) stays in the cleaned BOM marked DNP and is dropped from the JLCPCB file.

JLCPCB format

Comment · Designator · Footprint · LCSC Part #

JLCPCB's assembly BOM needs just four columns: Comment (value or part name), Designator (every reference, comma-separated), Footprint (package) and LCSC Part # (the C-prefixed LCSC number). Matching is done on the LCSC number, so blank entries have to be picked by hand after upload. The tool removes DNP lines from the JLCPCB file — leaving them in gets them placed — and strips KiCad library prefixes such as 'Resistor_SMD:' from footprints. Remember that the designators in your CPL file must match the BOM exactly.

Pitfalls

Common mistakes

  • Treating value + footprint as the same part: a 100 nF 0402 at 6.3 V and at 50 V, or in X7R and Y5V, are different parts. That's why MPN is part of the merge key — and why a blank MPN lets the assembler pick for you.
  • Letting Excel mangle part numbers: opening and re-saving a CSV in Excel can turn '1E3'-style part numbers into 1000 or strip leading zeros. Feed the original CSV straight into this tool, or format the column as Text in Excel.
  • Deleting DNP parts from the BOM: they're still in the pick-and-place file, so the assembler asks about 'missing' parts. Keep the line and mark it DNP.
  • Submitting range notation: people read 'R1-R4', but many assembly systems treat it as a single name. Export individual designators.
  • Forgetting polarity: for diodes, electrolytics and ICs, confirm the CPL rotation matches the silkscreen polarity mark.

In practice

Tips from KEMI's assembly line

The BOMs that get the fastest SMT quotes have every MPN filled in and a second-source alternative noted for hard-to-get parts. For passives a full spec like '0402 100nF 16V X7R ±10%' is enough for us to substitute a well-stocked equivalent, but connectors, ICs and inductors always need an MPN. Mark customer-supplied parts as consigned, and allow a few extra pieces for 0402-and-smaller passives to cover placement losses. Once your BOM is clean, the button below the results sends the file straight to our parts and SMT quote console.

FAQ

Is my BOM stored anywhere?

No. Pasted text, CSV and Excel files are processed right in your browser, and nothing you enter is stored. If you click the quote button, the cleaned file is pre-loaded into the quote form so you don't have to add it again.

How do I convert a KiCad BOM to JLCPCB format?

Export a CSV from KiCad's BOM tool (or the Symbol Fields Table), drop it here, check that Reference, Value, Footprint and your LCSC field are mapped, then click 'JLCPCB format CSV'. Library prefixes are stripped and DNP parts removed automatically.

What about the project-info lines at the top of Altium BOMs?

The header row is detected as the line with the most header keywords among the first 20, so 'Bill of Materials For Project…' lines are skipped. If it guesses wrong, pick the header row manually.

Do I have to fix the 'several MPNs for one value' warning?

Not always — sometimes it's intentional (a few 1 % precision resistors, a higher-voltage cap). Usually, though, it's two different library parts picked by accident, which needlessly adds line items to purchase. Consolidate unless it's deliberate.

Does it work for assemblers other than JLCPCB?

Yes. The cleaned CSV uses a generic layout — Item, Qty, Designator, Value, Footprint, MPN, Manufacturer, LCSC, Description, DNP — that most assembly houses accept as-is, including our own quote console.

How are DNP parts detected?

If there's a DNP/DNI/Fitted/Populate column, its value (DNP, Yes, Not Fitted…) is used; lines whose value is DNP, NC, NF or N/C are also treated as not fitted (you can turn that off). DNP lines stay in the cleaned BOM and are removed from the JLCPCB file.

Related tools & guides

Everything is calculated right in your browser, and nothing you enter is stored. Results are reference values for early design work; for production or installation, part datasheets, manufacturer specifications and your local electrical code take precedence. Privacy Policy