A few weeks ago I was poking around an open hardware repo on GitHub, trying to remember whether a board I’d cloned a while back had any decent ground stitching. Clicking on the .GTL file brought up a wall of text. Right. GitHub r
enders Markdown, PDFs, STL meshes, GeoJSON maps, even Jupyter notebooks natively in the browser. But Gerbers, the de facto industry format for getting a PCB fabricated, just sit there as raw RS-274X gibberish.
That mild irritation became a weekend project. I now have a Chrome extension that renders Gerber and Excellon drill files inline on any GitHub blob page, with proper top and bottom composite views, mouse wheel zoom, drag pan, 90-degree rotation, and an outline toggle for boards whose edge files are a little messy.
https://github.com/GreenShoeGarage/GitHub_GerberViewer_ChromeExtension
What it does
Open any Gerber or drill file on GitHub. The extension fetches the raw file, parses it client-side using the tracespace v4 toolchain, and drops a preview panel above the raw text view. The original raw view is still there underneath, so nothing is hidden from you.
If the same folder contains a full layer set (top and bottom copper, mask, silkscreen, drill, outline), the extension also calls the GitHub Contents API to fetch the siblings, hands them to pcb-stackup, and assembles realistic Top and Bottom composite renders. Zoom anchors on the cursor, drag-to-pan keeps working in the rotated frame, the whole thing happens in your browser. No file content leaves your machine.
The real problems were the boring ones
The technical core of “render Gerber files in a browser” is well-trodden ground. Tracespace has been doing it for years and the libraries are excellent. The hard parts of this project turned out to be the messy edges of real-world hardware repos.
There’s a board on GitHub whose outline file (.gko) is full of fab markings, fiducials, and disconnected line segments rather than a clean closed polygon. Pass that to pcb-stackup and you get a render with the board boundary mangled where the segments don’t quite meet up. The fix is an Outline toggle that flips between “trust the file” and “use the union of features as the boundary.” Turns out plenty of legitimate boards exhibit exactly this pathology.
There’s also a long-standing quirk where Eagle’s standard drill extension (.drd) gets classified as an outline layer by whats-that-gerber, the upstream library that infers layer types from filenames. Pass an Eagle-style board to pcb-stackup with default settings and the drill positions get treated as additional board-edge geometry, producing weird artifacts and zero visible drill holes. A four-line content sniff that recognizes the Excellon M48 header and overrides the type fixed it.
I also tried to be clever and route the single-layer view through pcb-stackup for a realistic gold-on-FR4 look. Looked great on the Arduino Uno fixtures. Broke a real-world bottom copper layer by silently clipping content. Reverted in the next patch. Lesson logged.
What I keep relearning
Most of the time on this project went into edge cases I could not have predicted from the spec. The 60-request-per-hour unauthenticated GitHub API limit. The fact that some EDA tools encode ground pours as 500-plus thinly stroked lines instead of using G36/G37 region fills. The way GitHub’s React-driven blob view DOM keeps shifting under my content script. Soft navigation handling via Turbo events. None of these are interesting on their own. All of them were necessary.
This is something I keep relearning as a maker. The gap between “I can imagine the tool” and “the tool reliably works on the real-world inputs people will throw at it” is wider than it ever feels at the start. That gap is where most of the craft actually lives. Plan for it. Budget for it. Don’t be surprised by it.
Where to find it
The extension is open source under GPL-3.0. Source, install instructions, and the roadmap (multi-layer composite for inner planes, WASM rendering for dense boards, OAuth to lift the API rate limit) are at [link to repo]. Drag and drop install for now. Chrome Web Store eventually, maybe.
If you spend time browsing hardware repos on GitHub, give it a try and let me know what breaks. There are a lot of weird Gerber files out there and I have only seen a small fraction of them.
If you want me to build something similar for your project, hardware or otherwise, that is what Green Shoe Garage does for a living. Reach out.



