Managing JLCPCB Components in KiCad: From Part Number to Verified Library

The Import Problem

If you design PCBs and plan to use JLCPCB’s assembly service, you want LCSC part numbers baked into your KiCad schematic from the start — not patched in at BOM-export time. The trouble is KiCad’s own library has no direct link to JLCPCB’s component catalog. Every new part means manually tracking down a symbol, a footprint, and a 3D model that actually matches what JLCPCB stocks.

There are a few ways around this. The most direct is JLC2KiCad_lib, a Python script that takes a JLCPCB part number — a C-prefixed string like C1337258 — and generates all three assets from the JLCPCB/EasyEDA library data: symbol, footprint, and STEP/WRL 3D model. You need Python 3.8+, and you can batch multiple parts in one call.

What JLC2KiCad_lib Actually Does

The script queries EasyEDA’s API using the JLCPCB part number, then translates the result into KiCad-native formats. Output lands in symbol libraries (.kicad_sym), footprint libraries (.pretty directories), and 3D model files. Optional flags let you generate only what you need, set custom library names, or reference 3D models via a path variable instead of hardcoded absolute paths.

Worth knowing: the project is now in maintenance-only mode. The author considers it feature-complete and accepts bug fixes, but active development has stopped. That’s not a reason to avoid it — the interface is stable and it works well for the vast majority of JLCPCB parts — but edge cases in uncommon packages won’t get patched quickly.

The README is blunt about it: “Even so I tested the script on a lot of components, be careful and always check the output footprint and symbol.” This caveat matters most for multi-pin connectors, unusual SMD packages, and anything with tight pad tolerances.

KiComp: A TUI on Top of the Import Workflow

KiComp by Rein Bentdal wraps this workflow in a terminal UI. Instead of running shell commands to import parts one at a time and manually keeping track of what you’ve pulled in, you get a browsable interface inside your terminal that shows which components are in each library.

Installation is a pip install . from the repo directory. Once installed, run kicomp from inside an active KiCad project directory. The tool is early-stage — sparse documentation, MIT-licensed, small commit count — but the core loop works: import a component by JLCPCB part number, browse the library contents, swap between multiple library sets.

It sits at a useful middle ground. It’s not a full GUI plugin like kicad-jlcpcb-tools, and it doesn’t try to be. It’s a fast terminal-first workflow for engineers who already live in the command line.

Why Multi-Library Support Actually Matters

KiCad supports global libraries (available to every project on your machine) and project-local libraries (stored inside the project directory). For JLCPCB work, the split has real practical consequences.

A shared library of common passives — 0402 resistors, standard decoupling caps, jellybean diodes — stays consistent across every board you make. Verify those footprints once and move on. Project-specific components go in a project library. That particular MCU variant, the connector chosen for this board’s BOM — if it goes out of stock or you swap suppliers, you update the project lib without touching anything shared.

KiComp’s library-switching maps onto this pattern naturally. You maintain a common library and a per-project library as separate entities and flip between them in the TUI rather than manually editing paths or digging through KiCad’s library manager every time.

Verifying Imports Before You Commit

The biggest risk in any automated import flow is trusting the output blindly. EasyEDA source data is a mix of manufacturer uploads and community contributions, with all the quality variation that implies. A few specific things to check on every import:

  • Pad numbering matches the component datasheet — not just the physical layout. Pin 1 on the footprint must be pin 1 in the datasheet.
  • Courtyard clearances are large enough for your assembly tolerances and pick-and-place constraints.
  • The 3D model origin aligns with the footprint. A mismatch won’t affect manufacturing but breaks mechanical assembly previews in KiCad’s 3D viewer.
  • The LCSC part number field is populated in the symbol properties. JLCPCB’s BOM importer reads this field directly when you upload for assembly.

Other Tools Covering the Same Ground

KiComp is one approach. Several others handle different pieces of the same problem:

  • kicad-jlcpcb-tools is a KiCad plugin installable directly from the official Plugin and Content Manager. It searches the JLCPCB parts database inside the PCB editor and handles BOM and CPL export for assembly orders. It doesn’t generate symbols or footprints — it works with what you already have in the schematic — but the in-editor parts search is fast and the Gerber export is tightly integrated.
  • easyeda2kicad.py is another active EasyEDA-to-KiCad converter with ongoing development. If JLC2KiCad_lib gives you a bad conversion on a specific component, this is the first alternative to try.
  • JLCPCB also publishes a static library of their basic and preferred components as a KiCad library. For standard passives and common active parts, this skips the import step entirely.

For anyone running multiple board designs against the same JLCPCB catalog, a centralized import and browse tool makes the workflow meaningfully faster. KiComp is early, but the concept solves a real friction point.

Sources


Similar Posts