How to convert KiCad files for JLCPCB
- Export two files from KiCad: a BOM (Bill of Materials) CSV and a position/pick-and-place CSV. See the sections below for exact steps.
- Upload both files above. Nothing leaves your browser — parsing happens entirely in JavaScript on your device.
- Confirm the column mapping. This tool auto-detects KiCad's standard column names (Reference, Value, Footprint, PosX, PosY, Rot, Side, and common variants). If a column is ambiguous, you'll be asked to confirm it rather than have it guessed silently.
- Review the warnings and preview. The tool checks for missing designators, mismatched designators between the two files, unrecognized layer values, and malformed coordinates.
- Download the converted BOM and CPL files and upload them to JLCPCB's SMT assembly order flow, where you should still check the visual placement preview before ordering.
How to export a BOM from KiCad 9/10
KiCad 9 and 10 generate the BOM from the Symbol Fields Table, which replaced the older Python BOM plugin system.
- Open the Schematic Editor.
- Go to Tools → Symbol Fields Table (or Export Bill of Materials, depending on your exact version).
- Make sure the fields you need are shown as columns — typically
Reference,Value,Footprint, and, if you've added it, a part-number field such asLCSC Part #orMPN. - Switch to the Export tab, choose CSV, and export the file.
If you're on an older KiCad release using the legacy BOM plugin dialog, the same general idea applies — just make sure Reference, Value, and Footprint are included as columns in the exported CSV.
How to export a position / pick-and-place file
- Open the PCB Editor.
- Go to File → Fabrication Outputs → Component Placement (.pos, .gbr)…
- Set Format to CSV.
- Set Units to Millimeters — this matches what JLCPCB requires, and lets you skip the unit-conversion step in this tool.
- Export the file.
KiCad's native export produces columns named Ref,
Val, Package, PosX,
PosY, Rot, and Side, with
Side values of top/bottom.
This tool recognizes those column names automatically.
JLCPCB BOM column requirements
Per JLCPCB's own documentation, a BOM file needs:
| Column | Meaning | Required? |
|---|---|---|
Comment | Component value/spec, e.g. "100nF 50V" or "10k" | Required |
Designator | Reference designator(s), e.g. "R1" or "R1,R2" for a grouped row | Required |
Footprint | Package/footprint, e.g. "0603", "SOIC-8" | Required |
LCSC Part # / MPN | Part identifier for automatic sourcing | Strongly recommended — JLCPCB's own pages aren't fully consistent about whether this is required or optional, so include one if you have it |
Accepted file formats: .csv, .xls, or .xlsx (this tool outputs .csv).
JLCPCB CPL column requirements
Per JLCPCB's Pick & Place documentation, a CPL file needs:
| Column | Meaning | Notes |
|---|---|---|
Designator | Component reference, e.g. "C1" | One row per physical component |
Mid X / Mid Y | Geometric center of the component | Millimeters — JLCPCB requires metric units |
Layer | Which side of the board | "Top" or "Bottom" |
Rotation | Component rotation in degrees | Positive values are counter-clockwise, per JLCPCB's documentation |
A note on rotation: JLCPCB does not publish a universal rotation correction table, and neither does KiCad — the "zero degree" reference orientation can differ by footprint library. This tool passes rotation values through unchanged rather than guessing at a correction. Always check the visual placement preview JLCPCB shows during order review before confirming.
Common BOM/CPL upload errors
- Designator mismatch — a component listed in the BOM doesn't appear in the CPL, or vice versa. Often caused by editing one file (e.g. deleting a part) without regenerating the other.
- Wrong coordinate units — exporting the position file in inches when JLCPCB expects millimeters (or the reverse assumption).
- Missing part identifiers — no LCSC part number or manufacturer part number, which can slow down or block automatic sourcing.
- Unrecognized layer/side values — anything other than Top/Bottom (or T/B) in the layer column.
- Duplicate designators — the same reference designator appearing twice, usually from a manual edit or merge error.
- Mismatched origin — the (0,0) coordinate in the CPL doesn't line up with the Gerber files' origin, which shifts every component in the placement preview.
BOM vs CPL: what's the difference?
The BOM (Bill of Materials) lists what goes on the board: every component's value, footprint, and part number, used for sourcing and stocking parts.
The CPL (Component Placement List) — also called the pick-and-place file, position file, or centroid file — lists where each component physically sits on the board: its X/Y coordinates, which side, and its rotation, used by the assembly machine to place parts.
Both files reference the same designators, which is why the two must stay in sync.
FAQ
What's the difference between a JLCPCB BOM and CPL file?
The BOM lists which components go on the board (value, footprint, part number). The CPL/position file lists where each one sits (X/Y coordinates, side, rotation). See the section above for details.
Do I need to install a KiCad plugin to export files for JLCPCB?
No. KiCad 9/10's built-in BOM export (Symbol Fields Table) and position-file export (File → Fabrication Outputs → Component Placement) are enough. Third-party plugins exist and can add convenience features, but this tool works from KiCad's native exports.
Does JLCPCB require millimeters or inches for the position file?
Millimeters. JLCPCB's Pick & Place documentation explicitly states the required unit is metric (mm). If your KiCad export used inches, select "Inches" in this tool's units dropdown and it will convert for you.
Will this tool fix incorrect component rotations automatically?
No. Neither JLCPCB nor KiCad publish a universal rotation-correction rule — the correct "zero degree" orientation can vary by footprint library, and JLCPCB's own guidance treats this as something to check visually in their placement preview, not something to auto-correct. This tool copies rotation values through unchanged rather than guessing.
Is my PCB design data uploaded anywhere?
No. This tool has no backend and makes no network requests with your file data. Parsing and conversion happen entirely in your browser's JavaScript engine.
Does this tool work with KiCad 8?
Yes — KiCad 8's BOM and position-file exports use the same core column names this tool recognizes (Reference/Value/Footprint, and Ref/PosX/PosY/Rot/Side). If your column names differ, use the manual mapping option shown after upload.
What if my BOM and CPL have different designators?
The tool will flag any designator that appears in one file but not the other after conversion, so you can fix the source files in KiCad and re-export before ordering.