Starting the maths engine… you can start typing a circuit now

Symbulator 9

The best symbolic simulator of linear circuits, since 1999.

[ I N P U T S ]

Describe a linear circuit and specify the analysis type — You can use an Input File. Unsure how? Learn here!

Circuit Description
Circuit syntax reference

One element per line (or separated by :), fields separated by ,; node 0 is ground. See the documentation for a full walkthrough, or pick an example circuit above to see it in practice.

Elements

The first letter of an element's name selects its type. Element letters, element names and node names are not case-sensitive: R1 and r1 are the same resistor, and node A is node a.

LetterElementFields
jcurrent sourcename,n1,n2,value
evoltage sourcename,n+,n−,value
rresistorname,n1,n2,value
sshort circuitname,n1,n2
ccapacitorname,n1,n2,value[,initial voltage]
linductorname,n1,n2,value[,initial current]
mmutual inductancename,L1,L2,M
tideal transformername,n1,n2,N1,N2
oideal op-ampname,n+,n−,n_out
zz-parameters (impedance) two-port blockname,n1,n2
yy-parameters (admittance) two-port blockname,n1,n2
hh-parameters (hybrid) two-port blockname,n1,n2
gg-parameters (inverse hybrid) two-port blockname,n1,n2
aa-parameters (ABCD / transmission) two-port blockname,n1,n2
bb-parameters (inverse transmission) two-port blockname,n1,n2

A value can be a number, a symbol (r_load, vin) or an expression — and an expression referring to another answer, like 2*v_2, makes a dependent (controlled) source. For FD and TR analysis give source values in the s-domain: 5/s for a 5 V step, 1 for a unit impulse.

SI prefixes

Write the apostrophe — 1'k — to say plainly that you mean an SI prefix. A bare 1k also works, but it is ambiguous (one kilo, or one times a variable named k?) and Symbulator will stop and ask.

PrefixMeansExample
'Ppeta, ×10152'P
'Ttera, ×10122'T
'Ggiga, ×1092'G
'Mmega, ×1064.7'M
'k or 'Kkilo, ×1031'k
'mmilli, ×10−35'm
'u or 'µmicro, ×10−64.7'u
'nnano, ×10−910'n
'ppico, ×10−1233'p
'ffemto, ×10−15100'f
'aatto, ×10−185'a

Case matters here. 'M is mega and 'm is milli — a factor of a billion apart. (Both 'k and 'K mean kilo.) Micro accepts either u or µ, so a value pasted from a datasheet works as typed. There is no prefix for exa: E is reserved for scientific notation, where 8E3 means 8000.

Numbers, constants and the imaginary unit

8000, 8000. and 8E3 all mean the same number; the last two are read as approximate rather than exact.

When conducting an AC analysis, or an analysis in the AC mode, i, I, j and J all mean the imaginary unit and cannot be used as variable names — write 3j, 3*j or 3*i and you get the same thing, shown as 3j. Outside AC, those four letters are ordinary variable names like any other. pi is π. Every other name you write is an ordinary variable, so Q, S and beta mean what you intend rather than something out of SymPy. Euler's number is exp(1).

In FD analysis s is the complex frequency and in TR t is time; elsewhere both are ordinary variables.

Expressions

In Evaluate and Solve you can refer to any answer with or without its underscore, in any capitalisation — so i_r1, ir1, i_R1 and IR1 all mean the current through r1. Answers are named v_<node> for node voltages and, per element, i_ current, v_ voltage drop, p_ power, s_ complex power, z_/r_ impedance seen by a source.

About input file (.cir) format

A plain text Input File can hold as many circuits as you like. Each one starts with its name in square brackets, followed by optional settings and then the element lines. Save it with a .cir extension.

# comments start with a hash

[Problem 1 — divider]
analysis: dc
e1,1,0,20
r1,1,2,5'k
r2,2,0,15'k

[Problem 2 — RC transient]
analysis: tr
variables: v_2
e1,1,0,10/s
r1,1,2,2200
c1,2,0,4.7e-6

Settings are all optional: analysis (dc/ac/fd/tr), omega, variables, tool (th/er/port) with n1/n2/kind, and the expert-mode equation, condition and unknowns.

Update this circuit in the input file when it already exists, above, adds the circuit you're describing to it — or updates it, if a circuit by that name is already there. Upload Input File, below, reads a file like this — its circuits become the live Input File in your browser, replacing whatever was there before (nothing is stored on the server). Download this input file, below, appears once you've made a change to it (uploaded a file, or added or updated a circuit).

Some examples you can try:
Analysis and Settings
Settings
SI prefixes apply to numeric answers only; a symbolic answer such as x·vin/(r1 + x) is left as it is. A prefixed value is a decimal, so SI prefixes and exact can't both apply.
Expert Mode

Provide additional equations, unknowns and/or conditions to be considered.


[ O U T P U T S ]

Results
— no analysis run yet —
Evaluate
Solve

About this checkbox

off searches the complex plane too (the calculator's cSolve); on keeps the unknowns real (its solve)

Download output

Download an output file with the information you decide to include.


Plot
— no plot run yet —

About Symbulator 9
What is Symbulator

Symbulator is a program to solve linear electric circuits symbolically and numerically. It accepts inputs with numerical and symbolic values, and provides numerical and symbolic results. The name is a portmanteau of "symbolic simulator". Symbulator is widely regarded as the best symbolic simulator of linear electric circuits ever made for a calculator. [more]

Who made Symbulator

Symbulator was made by Roberto Perez-Franco on a Texas Instruments TI-89 calculator, starting in April 1999 as an engineering student at Universidad Tecnológica de Panamá (UTP). An early version won 1st place at the IEEE Student Paper Contest for Latin America in 2000. Version 5 served as Roberto's graduation thesis in January 2001. He released version 6 in 2013 and version 7 in 2023, along with a port to the TI-Nspire as version 8.

About Symbulator 9

This port of Symbulator to Python and SymPy is version 9 in that lineage. Whereas versions 1 through 8 were written by Roberto entirely by hand, this new version — in a sign of the times — was ported and developed using Anthropic's AI assistant. Claude took care of all the coding, while Roberto provided instructions and feedback, during a week-long collaboration session. It is the author's hope that this port will preserve Symbulator for a new generation and beyond.

Symbulator is free

You do not have to pay anything to use Symbulator. It has always been free of cost, and always will be. Since June 2013, all versions of Symbulator were offered under a Creative Commons License (CC) BY-NC-SA. Since 2026, all versions of Symbulator are free and open-source software, released under the MIT licence: you may use, study, modify and share it, including commercially, with attribution. The solver is published as the symbulator package on PyPI, and the project for the solver and this interface lives on GitHub. Contributions, bug reports and circuits that break it are all welcome.