Electronics
The PCB viewer opens a circuit board's fabrication files - Gerber RS-274X with its X2 attributes and Excellon drill files, one by one or as the ZIP a design tool exports - and shows the board as it will be made: copper under a solder mask in the colour you choose, plated pads in gold or tin, white silkscreen and drilled holes, from the top or the bottom. Or see the layers stacked in colours and switch each one on and off.
Click a pad or a track to light up its whole net and name its part and pin; find a part or a net by name; measure between pads, snapped to their centres; pin notes to the board for the board house or the next revision; read the drill table; and save the view as SVG, PNG or a PDF to scale. The readers also come as a module for checks in a build.
Try it with your own files in confidence: they are opened by your browser, on your device. Nothing is uploaded, no copy reaches us or anyone else, and nothing is kept once you close this tab.
A sensor board, as it will be made
An invented two-layer board, 60 by 40 mm: a microcontroller, a sensor on I²C, a crystal, a programming header and a connector, its fabrication files written by the viewer's own sample. Find a part, follow a net, turn the board over, change its colour - or open your own board's Gerber and drill files.
// Node 18 or later, from the Gold package: every release's fabrication files checked and pictured before they go out.
import { readdirSync, readFileSync, writeFileSync } from 'node:fs';
import { readBoard, boardStats, boardSvg } from './dist/node/bmx-pcb-viewer.mjs';
const files = readdirSync('fab/rev-c').map(name => ({ name, data: readFileSync(`fab/rev-c/${name}`) }));
const board = await readBoard(files);
const stats = boardStats(board);
if (stats.smallestTrack < 0.15) throw new Error(`A track of ${stats.smallestTrack} mm is under the board house's 0.15 mm`);
writeFileSync('rev-c-top.svg', boardSvg(board, { view: 'top' }));
console.log(`${stats.width} × ${stats.height} mm, ${stats.copperLayers} layers, ${stats.holes} holes, ${stats.components} parts`);
Notes for the board house
The same board as layers, with three notes pinned to it before it is ordered. Measure between two pads, add a note of your own where you click, and keep them all as JSON for your page to save - or put them in a PDF with the board.