Skip to main content
Importing Modules and Chips

Importing from KiCad

Overview​

You can import KiCad components or projects into tscircuit.

tip

If you're trying to use a footprint from KiCad's standard libraries, you can skip manual importing and reference it directly with the kicad: prefix (e.g. kicad:Resistor_SMD/R_0402_1005Metric). See KiCad Footprints for more details.

To import from KiCad, you should understand the different file formats KiCad uses:

  • Files for KiCad components
    • kicad_mod - PCB footprint file for a single component
    • kicad_sym - Schematic symbol file for a single component
  • Files for KiCad projects
    • kicad_pro - KiCad project file
    • kicad_pcb - KiCad PCB board file
    • kicad_sch - KiCad Schematic board file
info

We're still building KiCad import directly into tscircuit.com, stay tuned for when that's available!

Importing KiCad Components​

Currently the easiest way to import KiCad components is to go to kicad-component.tscircuit.com and upload your kicad_mod and/or kicad_sym file.

Importing KiCad Components using the CLI​

Using tscircuit's open-source KiCad component converter, we can convert KiCad files on the command line.

First install the component converter:

npm install -g kicad-component-converter

Next, run the following command to convert your KiCad files:

# Convert a directory ./my-footprints.pretty to a tscircuit project
kicad-component-converter convert-kicad-directory --input-dir ./my-footprints.pretty --output-dir ./my-tscircuit-footprints

Importing .kicad_pcb files directly​

You can import a KiCad PCB board file as Circuit JSON and place it inside a tscircuit board with <subcircuit />:

import { circuitJson } from "./example.kicad_pcb"

circuit.add(
<board width="10mm" height="10mm">
<subcircuit circuitJson={circuitJson} />
</board>,
)

Importing KiCad Components Programmatically​

bun add kicad-component-converter

Import .kicad_mod and .kicad_sym files directly​

kicad-component-converter registers a bundler loader that lets you import KiCad footprints and symbols like any other modules inside your tscircuit project:

import kicadSym from "./symbol.kicad_sym"
import kicadMod from "./footprint.kicad_mod"

export default () => {
return (
<board>
<chip
name="U1"
footprint={kicadMod}
symbol={kicadSym}
/>
</board>
)
}

Convert KiCad files manually​

If you need to do the conversion yourself (for example inside a build script), you can read the .kicad_mod file and pass it through the parser:

import { parseKicadModToCircuitJson } from "kicad-component-converter"
import { readFileSync } from "node:fs"

const fileContent = readFileSync("SW_SP3T_PCM13.kicad_mod")
const circuitJson = await parseKicadModToCircuitJson(fileContent)
/* [
* {
* "type": "pcb_smtpad",
* "x": 0.345,
* ...
*/

Circuit JSON can then be converted into regular tscircuit modules using circuit-json-to-tscircuit