Feature Guide

Custom components in CircuitSim: turn a SPICE model into a part you can place

Updated July 2026  ·  By the CircuitSim team  ·  8 min read

The CircuitSim component library holds 1,200+ parts, grows every week, and is headed for 5,000+. It will never hold everything — no simulator library does. But nearly every part on the market has a SPICE model, published by its manufacturer, one download away on the product page. The custom component creator turns that download into a part you can place, wire up, and simulate — right in your browser.

This page covers how custom components work: what SPICE definitions you can bring in, how symbols and pins are handled, what imports from KiCad, how sharing works, and — because we would rather tell you ourselves — what the feature does not do yet.

TL;DR — Custom components in 5 lines

  1. Paste a SPICE model, get a part. .model statements, .subckt subcircuits, behavioral sources, transmission lines, and XSPICE code models all become placeable components.
  2. Vendor models work. Compatibility modes handle models written in PSpice, LTspice, and HSPICE dialects, with auto-detection.
  3. Symbols are yours to shape. Draw one in the symbol editor, pick from the symbol library, or import a KiCad .kicad_sym file — including SnapEDA downloads.
  4. Share with one click. Keep a component private, share it with a group at viewer, contributor, or owner level, or publish it to the community library.
  5. Free to start. The Basic plan includes five custom components; paid plans raise or remove the cap.

Vendor datasheet to working part in 3 steps

  1. Get the model. On the manufacturer's product page, download the SPICE model — usually a .lib, .cir, or .txt file containing a .subckt or .model definition.
  2. Paste it into the model editor. Open the custom component creator, paste the text, and the import inspector parses the definition — pins, parameters, and any .include or .lib references it depends on.
  3. Give it a face. Pick a symbol from the library or draw one, confirm the pin mapping the inspector suggests, and save. The part now appears in your palette under My Components, ready to place.

Start from the model, not from scratch

At the center of the custom component creator is the model editor, where you paste or write standard ngspice model text. That is a deliberate choice: the SPICE model is what actually determines simulation behavior, and it is what manufacturers already publish. Instead of asking you to rebuild a device from primitives, CircuitSim asks for the text the vendor wrote and builds the component around it.

As you type, the import inspector reads the definition and shows what it found: pins in order, exposed parameters, local functions and conditional blocks, and any external files referenced via .include or .lib. The definitions CircuitSim understands cover the practical range of what vendors ship:

Definition type What it is Typical use
.modelA parameter set for a built-in SPICE deviceDiodes, BJTs, MOSFETs, JFETs with real part numbers
.subcktA subcircuit — a reusable block of circuitry with its own pinsOp-amps, regulators, sensor macromodels, anything multi-element
BehavioralB-source expressions defining voltage or current mathematicallyIdeal blocks, transfer functions, custom nonlinearities
Transmission lineDistributed line modelsSignal-integrity and cabling work
XSPICECode models from the XSPICE extensionMixed-signal blocks, digital elements
RawNetlist text passed through as writtenEdge cases the categories above do not fit

One practical wrinkle: much of the model text on manufacturer sites is written for PSpice, LTspice, or HSPICE rather than ngspice, and the dialects disagree in small, frustrating ways. CircuitSim has compatibility modes for all three and detects which one a pasted model needs, so a model labeled "PSpice" is not a dead end.

Symbols that earn their place on the schematic

A component is a model plus a symbol — and the symbol is what everyone actually looks at. CircuitSim gives you three ways to get one. Pick a prebuilt drawing from the symbol library. Draw your own in the SVG symbol editor, with grid alignment handled for you. Or import a KiCad .kicad_sym file — the same format SnapEDA exports for millions of real parts — bringing in the drawing, the part's properties such as manufacturer and datasheet link, or both.

A component can also carry more than one symbol. Symbol variants let a single part offer, say, an IEC-style and an ANSI-style drawing, with one set as the default. And symbols do not have to sit still: dynamic symbols can change appearance based on live simulation values — an LED that lights when current crosses a threshold — while interactive symbols respond to clicks, drags, and scrolls, changing a parameter while the simulation runs. A potentiometer you can turn with the mouse wheel is a different teaching tool than one you edit through a properties dialog.

Pins and parameters, without the busywork

The tedious part of component authoring in most EDA tools is reconciling the symbol with the model: pin 3 on the drawing has to mean the third node of the .subckt line, every time, or the netlist is quietly wrong. CircuitSim's editor checks this for you. It compares the pins declared in the model text against the pins on the symbol, flags mismatches, and can generate the missing pins from the model's pin order in one click. Each pin carries an electrical type — passive, input, output, power, or ground — and pins can be marked optional for parts with legs you sometimes leave unconnected.

Parameters get the same treatment. Anything the model exposes — a gain, a supply limit, a temperature coefficient — can be promoted to an editable property on the schematic, with a unit, a category, a default, and rules for when it is visible. The person placing your component never needs to open the model text; they edit "Gain: 40 dB" in the properties panel like they would a resistor value.

Components that travel

A custom component would be half a feature if it were stuck in one account. Every component you create lives in My Components and moves outward in whichever direction you need. Share it with specific people, or with a group — a class, a lab section, a team — at viewer, contributor, or owner level, and it appears in their component palette alongside the built-in parts. Publish it to the public community library, where anyone can find it, place it, and favorite it. Or export it as a .cscomp file — several at once become a ZIP archive — and import it anywhere, which doubles as a plain-text backup of your work.

For educators, this is the quiet headline feature. Build the idealized op-amp your course uses, share it to the class group, and every student has the identical part — same symbol, same pin order, same parameters — before the first lab. No files to distribute, no "which version do you have" thread.

Best for

Anyone whose circuit depends on a specific real-world part: students simulating the exact op-amp in their lab kit, hobbyists working from a vendor reference design, engineers verifying a design around a particular regulator, and educators who want every student placing the identical component.

How many you get

The free Basic plan includes five custom components — enough to bring in the handful of parts a course or a project actually needs. The Standard plan includes 10, and the Premium plan removes the cap entirely. Limits apply to components you own; components shared with you by a group do not count against yours.

What custom components do not do yet

Three honest caveats. First, the custom component creator is the newest part of CircuitSim and is still rolling out during open beta — if you do not see it on your account yet, email us and we will sort you out. Second, there is no draw-a-schematic-and-wrap-it flow yet: components are defined from SPICE text, not captured from a schematic you have already drawn. If your block exists as a schematic, the path today is via its netlist. Third, LTspice .asc and .asy files do not import directly — the LTspice compatibility mode covers model text, while symbols come from the KiCad importer or the symbol editor. If any of these are blockers for you, we want to hear about it; they are the kind of thing open beta feedback reorders.

Under the hood

Custom components are not a bolted-on macro system. They go through the same pipeline as every built-in part: the schematic generates a SPICE netlist, subcircuit definitions are emitted as standard .subckt blocks, and the whole thing runs on a real SPICE engine compiled to WebAssembly, locally in your browser tab. Nothing about your model is approximated for the web — a .subckt that simulates in a desktop SPICE tool simulates the same way here, in DC operating point, AC small-signal, and transient analysis alike.

CircuitSim is built by Elsewhere Labs — Britt and Sam. We built the custom component creator because a component library, however large, is a list someone else wrote — and the circuit on your screen should never be limited to it.

Get started free at circuitsim.com →

Frequently asked questions

Can I import a manufacturer's SPICE model into CircuitSim?

Yes. Download the SPICE model from the manufacturer's product page, paste the text into the model editor, and the import inspector reads the pins and parameters for you. Standard .model statements and .subckt subcircuit definitions both work, along with behavioral sources, transmission lines, and XSPICE code models.

Does CircuitSim support .subckt subcircuits?

Yes. Paste a .subckt definition into the model editor and CircuitSim wraps it as a component: the subcircuit's pins map to symbol pins, its parameters become editable properties on the schematic, and the definition is passed to the SPICE engine at simulation time. Nested inline definitions and .include and .lib references are supported.

Can I use SPICE models written for PSpice, LTspice, or HSPICE?

Usually, yes. Vendor models are often written in a PSpice-, LTspice-, or HSPICE-flavoured dialect rather than plain ngspice syntax. CircuitSim's component editor has compatibility modes for these dialects and auto-detects which one a pasted model needs. LTspice schematic and symbol files (.asc, .asy) are a different thing — those are not importable today.

Can I import KiCad symbols?

Yes. The component editor imports KiCad .kicad_sym symbol files, including symbols downloaded from SnapEDA. You can import the drawing, the part's properties (manufacturer, part number, datasheet link), or both, and map each field to where it belongs in CircuitSim.

Can I share custom components with my class or team?

Yes. Each component can stay in My Components, be shared with individual people or with a group at viewer, contributor, or owner level, or be published to the public community library. A shared component appears in the group members' component palette like any built-in part.

How many custom components can I create for free?

The free Basic plan includes five custom components. Standard raises that to 10, and Premium removes the cap entirely.

Do custom components work in every analysis type?

Yes. Custom components go through the same netlist and the same SPICE engine as built-in parts, so they behave identically in DC operating point, AC small-signal, and transient analysis.

Can a custom component's symbol respond to the simulation?

Yes. Dynamic symbols can change appearance based on live simulation values — an LED symbol that lights at a threshold current, for example — and interactive symbols can respond to clicks, drags, and scrolls to change a parameter while the simulation runs.


More from CircuitSim:  LTspice online · Online circuit simulator · Best free circuit simulators (2026) · Multisim Live alternatives

LTspice is a trademark of Analog Devices, Inc. PSpice is a trademark of Cadence Design Systems. HSPICE is a trademark of Synopsys, Inc. KiCad is a trademark of the KiCad project. SnapEDA is a trademark of SnapEDA, Inc. CircuitSim is not affiliated with any of these organizations.