dsn-converter
TypeScript library converting between Specctra DSN files and Circuit JSON for routers and KiCad-compatible DSN output.
What it does and how it connects
dsn-converter is a TypeScript library for converting between Specctra DSN files and Circuit JSON format, in both directions. It parses DSN files into a workable JSON format, converts Circuit JSON back into KiCad-compatible DSN files, and can visualize PCB designs with SVG rendering.
Conversion covers component placement, PCB layers, traces and wiring, padstacks and SMT pads, net definitions and board boundaries, with full TypeScript types for type-safe manipulation. An intermediate DSN JSON representation lets callers edit the parsed structure, for example adding a component to the placement list, before converting onward.
The library installs from bun or npm. The README notes it is built with Bun and uses tscircuit, and points to the related circuit-json-to-kicad converter for the reverse direction from Circuit JSON to KiCad.
Alternatives
Compare side by side- kicad-to-circuit-json
Converts KiCad projects to Circuit JSON, rather than Specctra DSN files.
- tscircuit
Designs boards in TypeScript and React with Circuit JSON under the hood, rather than converting DSN files.
- circuitron
An agent-driven PCB prototyper that turns natural-language requirements into SKiDL scripts and KiCad files, rather than converting DSN files.
Recurring errors it addresses
Error Index entries this tool is built to reduce or work around.
- Components with the same footprint dimensions but different rotations shared one DSN image name, so one overwrote the other's rotated pad offsets in the library and the router would get pads in the wrong place.Error Index
- KiCad's Specctra exporter writes wire coordinates with six significant digits, so past 100 mm a track that starts on a pad centre arrives up to half a micrometre off, and Freerouting only connects a trace end at the exact pin centre. On the 20 PCBench reference-routed boards, the router started with 5,586 unconnected items on boards that were complete in KiCad. With the 1 um snap it is 427, and unrouted-after-one-pass went from 941 to 90. The KiCad bug, #25850, is confirmed upstream but not fixed in the versions people use.Error Index
- Freerouting can insert a complete new route, delete it as a dangling tail before the final endpoint attaches, and still return ROUTED while the connection is missing: on the C4 net of the Corney Island wireless board the maze found a valid 150 um bridge, stub cleanup deleted the whole bridge, the later attachment added only a tiny stub, and KiCad confirms C4 is still disconnected.Error Index
Sources
Not verified
- Pricing: none stated on the repo.
- Real user voices: no real linked post read for this page; the repo has no public issues listed via the API.
- No GitHub releases exist, so latest release fields are null.
- Activity: last push August 2026, so the project looks quiet; no newer release was found.
- A named individual builder: the repository names the tscircuit organization, not a person.
Last verified November 6, 2026. Listings are informational. The evidence score measures public, verifiable evidence and is not an endorsement or a compatibility claim.