PCBBurn is a web workspace for converting PCB designs into LightBurn-ready LBRN files. It accepts tscircuit Circuit JSON or KiCad .kicad_pcb files, previews the resulting geometry, lets you tune laser settings, and exports a downloadable .lbrn project for laser PCB ablation.
- Converts Circuit JSON or KiCad PCB files to LBRN via
circuit-json-to-lbrn. - Generates live SVG previews for both LBRN output and PCB geometry.
- Lets you adjust laser parameters, layer inclusion, margins, and origin offsets.
- Exports a LightBurn project you can load directly into LightBurn.
- Upload a
.jsonCircuit JSON file or a.kicad_pcbfile in the workspace. - KiCad files are converted to Circuit JSON using
kicad-to-circuit-json. - Circuit JSON is converted to LBRN XML using
circuit-json-to-lbrn. - LBRN XML is parsed/rendered to SVG with
lbrntsfor preview. - Export the
.lbrnfile for LightBurn.
circuit-json-to-lbrn: Converts Circuit JSON into LBRN XML with copper/soldermask options and laser settings.lbrnts: Type-safe library for parsing and generating LightBurn projects + SVG previews.
bun install
bun run devThen open http://localhost:5173.
bun run dev- start Vite dev serverbun run build- typecheck and buildbun run preview- preview production buildbun run lint- run Biome lintbun run format- format with Biome
The workspace settings panel controls the options passed into convertCircuitJsonToLbrn and the laser profile metadata embedded in the exported .lbrn file.
Core LBRN options
includeCopper: include copper traces/pads in the output.includeSoldermask: include soldermask openings for Kapton tape cutting.includeCopperCutFill: include a copper fill region for large-area ablation.includeLayers: choosetop,bottom, or both layers.laserSpotSize: spot size used for raster/crosshatch spacing.traceMargin: clearance margin around traces (mm).copperCutFillMargin: extra margin for copper fill (mm).globalCopperSoldermaskMarginAdjustment: global offset for soldermask openings.solderMaskMarginPercent: percent-based adjustment for soldermask openings.origin:{ x, y }offsets to move the output origin.
Laser profile settings
Laser profiles map directly to LightBurn cut settings for copper and board passes. The panel exposes speed, passes, frequency, and pulse width for each pass type, and presets are defined in lib/components/settings-panel.tsx.
src/main.tsx: App entry wiring for Vite.lib/components: UI views (Landing, Workspace, Demo, etc.).lib/components/workspace-context.tsx: File ingestion + conversion state machine.lib/components/settings-panel.tsx: Laser defaults, upload UX, and LBRN option controls.lib/hooks/preview-hooks.tsx: LBRN + PCB SVG generation and view transforms.examples/: Demo circuit JSON used in the demo route.
- The workspace auto-converts to LBRN when a valid circuit is loaded.
- LBRN previews are generated client-side; no server is required.
- Laser defaults live in
lib/components/settings-panel.tsx.