KiCad schematic viewer
Open a KiCad schematic (.kicad_sch, KiCad 6–9) with its sub-sheets — files, a folder, a zip or the .kicad_pro — and look round it: every sheet drawn as KiCad draws it, a click on a wire lights up the whole net on every sheet, a searchable part list with LCSC and MPN fields and datasheets, the nets, heuristic review checks (decoupling, I²C pull-ups, floating inputs, footprints, references), and SVG, PNG and netlist exports.
Added
Works with
- KiCad board viewer Electronicsfinds the part you clicked in the board viewer, on the board last opened there
- JLC assembly parts check Electronicschecks the schematic's LCSC numbers against JLCPCB's library, stock and loading fees
- KiCad BOM rollup Electronicsrolls the same schematic up into a BOM for N boards, with stock and prices
How to use it
I wanted to read a schematic without starting KiCad: on a phone at the bench, on a machine without KiCad,
or to follow a net through a design somebody sent me. This reads the .kicad_sch files themselves and draws
them in your browser. Nothing is uploaded.
How to use it
-
Open files… and choose the root
.kicad_schand its sub-sheets together (add the.kicad_proif you like; it names the root sheet). Open folder… takes the whole project folder, and a.zipof it opens too. You can also drop files, a folder or a zip on the drawing. KiCad 6, 7, 8 and 9 files open. Backups and autosaves in the folder are skipped. The last project you opened comes back next time. The sample is a small ESP32-S3 board with USB-C, on two sheets. -
Sheets: the sheet list (and the menu in the toolbar) shows the hierarchy with page numbers. A sheet used twice is listed twice, because each use has its own references and its own local nets. Click a sheet symbol in the drawing for its card, or double-click it to go in. ↑ Up (or Backspace) goes back to the parent.
-
Click a wire, a pin, a label or a junction to light up its net. The net is lit on every sheet it reaches, and the card lists its pins, the parts on it and buttons for the other sheets it is on. Sheets that carry the lit net get a dot in the sheet list. Click it again, or press Esc, to clear it.
-
Click a part for its reference, value, footprint, LCSC number, MPN and other fields, with a link to its datasheet. Find on the board → opens the board viewer with that part selected, on the board you last opened there.
-
Parts: every part, one line per reference (the units of a multi-unit part are one line), searchable by reference, value, footprint, LCSC number or MPN. Click a line to go to the part; Enter jumps to the first match.
-
Nets: every net with its pin count and how many sheets it is on. Click one to light it up and go there.
-
Review: the checks below. Click a finding to go to it.
-
Export (on the Sheets tab): the sheet you are looking at as SVG (1:1 in millimetres, with the lit net) or PNG, the netlist as CSV (one row per pin: net, reference, pin, pin name, pin type, sheet) and the part list as CSV.
Pan by dragging, zoom with the wheel, a pinch or the buttons. Fit zooms to the drawing, Page to the whole sheet. Keys: Esc clears, 0 fits, + and − zoom, Backspace goes up a sheet. ⛶ Full screen gives the drawing the whole screen.
Works in current Chrome, Edge, Firefox and Safari, on desktop and phone.
How it finds the nets
Connections are worked out the way KiCad’s connectivity does it:
-
wires join at their ends, and a pin joins a wire at the wire’s end;
-
a label joins a wire anywhere along it;
-
a junction joins the wires that end on it (KiCad splits wires at junctions when it saves, so a junction left in the middle of a wire joins nothing);
-
local labels join by name within one use of a sheet; a global label also joins local labels of its name on its sheet;
-
global labels and power symbols join by name across the whole design (a KiCad 9 local power symbol only within its sheet), and so do the hidden power-input pins of older library symbols;
-
a hierarchical label joins the sheet pin of the same name on its sheet symbol;
-
buses (
D[0..7],{SDA SCL}) carry their members by name: a global bus label makes its members global, and a bus sheet pin passes its members down to the sub-sheet.
Net names follow KiCad’s choice too: a power symbol’s value, else a global label, else a local or
hierarchical label with its sheet path (/MCU/I2C_SDA), else a name from a pin (Net-(R1-Pad2)).
I checked this against KiCad itself. For the sample and for four real KiCad projects (one of them 13 sheets
with buses and 800 nets), kicad-cli 9 wrote the netlist (sch export netlist), and the viewer puts exactly
the same pins on each net. Some made-up net names differ, as KiCad picks the pin it names a net after by
rules of its own.
Review checks
These are heuristics, not KiCad’s ERC. They go by reference letters, pin types and net names, so they miss things and flag things that are fine. Run ERC in KiCad as well.
-
Missing decoupling: an IC (
U…) with a power-input pin on a supply net, and no small capacitor (1 µF or less) on that sheet from that net to ground for it. Capacitors are shared out nearest first on the drawing, one IC each, so a sheet with two ICs and one 100 nF flags the IC farther from it. A regulator (an IC with a power-output pin) may have a bulk capacitor instead. -
I²C without pull-up: a net named like SDA or SCL with no resistor (
R…) from it to a supply net (a power symbol, a power output, or a name like+3V3,VCCorVDD_IO). -
Unconnected input: an input pin with nothing else on its net and no no-connect flag.
-
Power input not driven: a net with power-input pins and no power output or
PWR_FLAGon it. KiCad’s ERC reports this too. -
No footprint, No LCSC / MPN (a field named LCSC, LCSC Part, JLCPCB Part #, MPN, Manufacturer Part Number and the like), Duplicate reference (two symbols with the same reference and unit), Not annotated (
R?) and Symbol not in the file (a symbol whose library copy is missing from the schematic).
Limits
-
Text is drawn in the system font, not KiCad’s stroke font, so its width differs a little and label boxes are approximate.
-
Images, tables, rule areas and net class flags are not drawn. Buses are drawn and their members followed by name; bus aliases defined in the project file are not.
-
Field text comes from the file as it is: variables such as
${INTERSHEET_REFS}are not filled in. -
KiCad 5 (
.sch) files are not read. Open and save the project in KiCad 6 or later. -
A schematic is read whole into memory; very large designs (tens of megabytes) are slow on a phone.
Privacy
Everything happens in your browser. The schematic is read from the files you choose and kept only in this browser’s storage (IndexedDB), so it opens again next time. Nothing is sent anywhere. The sample comes from this site.
Linking to an example
Share link copies a URL with the sheet you are on. It never includes your schematic, so a link opens on the sample unless the reader has the same project open.
| Parameter | Meaning |
|---|---|
|
A preset (below) |
|
The sheet path, such as |
|
A net to light up, such as |
|
A part to find, such as |
|
The side tab to show |
Feedback is a gift. Something to improve, a feature to add, or a bug? Tell me.
Runs entirely in your browser; nothing you type leaves this page.