## [ 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`.

Letter | Element | Fields
--- | --- | ---
j | current source | name,n1,n2,value
e | voltage source | name,n+,n−,value
r | resistor | name,n1,n2,value
s | short circuit | name,n1,n2
c | capacitor | name,n1,n2,value[,initial voltage]
l | inductor | name,n1,n2,value[,initial current]
m | mutual inductance | name,L1,L2,M
t | ideal transformer | name,n1,n2,N1,N2
o | ideal op-amp | name,n+,n−,n_out
z | z-parameters (impedance) two-port block | name,n1,n2
y | y-parameters (admittance) two-port block | name,n1,n2
h | h-parameters (hybrid) two-port block | name,n1,n2
g | g-parameters (inverse hybrid) two-port block | name,n1,n2
a | a-parameters (ABCD / transmission) two-port block | name,n1,n2
b | b-parameters (inverse transmission) two-port block | name,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.

Prefix | Means | Example
--- | --- | ---
'P | peta, ×1015 | 2'P
'T | tera, ×1012 | 2'T
'G | giga, ×109 | 2'G
'M | mega, ×106 | 4.7'M
'k or 'K | kilo, ×103 | 1'k
'm | milli, ×10−3 | 5'm
'u or 'µ | micro, ×10−6 | 4.7'u
'n | nano, ×10−9 | 10'n
'p | pico, ×10−12 | 33'p
'f | femto, ×10−15 | 100'f
'a | atto, ×10−18 | 5'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).

Upload Input File
Some examples you can try:
Analysis and Settings
Tool
Analysis
Parameters
Node 1 (port terminal)
Node 2 (port terminal / ground)
ω — angular frequency (rad/s, number or symbol)
Do you want to limit the results to save time?
What results are you after? List the variables here: e.g. v_2, i_l1
Settings
Rounding
n
Display use SI prefixes — 0.002 becomes 2 m, 1200 becomes 1.2 k show units — V, A, W, VA, Ω
AC power convention RMS phasors — off means peak amplitude (the ÷2 convention); affects AC power only
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.

Enable Expert Mode
Add equations — one per line, e.g. `v_2 = 6`; parsed the same as circuit values — SI shorthand like `4.7'k` and, in AC, imaginary units (`i`/`j`) both work, but a bare suffix like `4.7k` with no apostrophe doesn't
Add unknowns — comma-separated, e.g. `vx` or `v_x`
Add conditions — e.g. `pr1 > 0` and `v1 = 12`; use `>=` and `<=`, not `=>` and `=<`

## [ O U T P U T S ]

Results
— no analysis run yet —
Evaluate
Evaluate an expression in terms of the results — e.g. `pr1 + pr2` or `p_r1 + p_r2`
Solve
Equation(s) to solve in terms of the results — e.g. `v2 = 6` or `v_2 = 6`, one equation per line
Unknown(s) to solve for — comma-separated; leave blank to solve for whatever is left
Conditions — e.g. `pr1 > 0` and `v1 = 12`; use `>=` and `<=`, not `=>` and `=<`

real solutions only
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.

What to include — saved as an Output File
circuit description equations generated answers found

Plot
Plot type
Variable to plot e.g. v_2 or i_r1
Start time (s)
End time (s)
Points
— 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.