# InteractiveHtmlBom: the bill of materials that knows where every part sits

> InteractiveHtmlBom is a MIT-licensed Python plugin generating interactive HTML bills of materials for KiCad, EasyEDA, Eagle, Fusion360 and Allegro PCB designs, correlating BOM rows with component placements on a rendered board so hand soldering becomes searchable. The output is a fully self-contained page needing no internet connection, and the current release is v2.12.0.

**openscopeproject/InteractiveHtmlBom** — Interactive HTML BOM generation plugin for KiCad, EasyEDA, Eagle, Fusion360 and Allegro PCB designer

- Repository: https://github.com/openscopeproject/InteractiveHtmlBom
- Stars: 4,586 · Forks: 583
- Language: Python
- License: MIT
- Published: 2026-09-23 · Updated: 2026-09-23 · Language: en
- Canonical page: https://hysenlabs.com/projects/openscopeproject-interactivehtmlbom

## A BOM that points at the board

The plugin generates a convenient bill of materials listing with the ability to visually correlate and easily search for components and their placements on the PCB, and the use case it names first is the one every hardware engineer knows, hand soldering a prototype, where users quickly find locations of component groups on the board. The correlation runs both directions, the BOM row highlights its footprints, and it is possible to reverse lookup the component group by clicking on a footprint on the board drawing. For a workflow that otherwise means cross referencing a spreadsheet against a layout tool, this one artifact replaces the whole dance, and the demo the README links makes the interaction obvious in a minute.

## Five EDA tools behind one plugin

The tool support is the quiet headline, KiCad in the title and EasyEDA, Eagle, Fusion360 and Allegro PCB designer named beside it, five environments where engineers otherwise maintain different BOM workflows. The mechanism differs per tool but the output converges, and the KiCad path shows the pattern, the plugin utilizes the Pcbnew Python API to read PCB data and render silkscreen, fab layer, footprint pads, text and drawings, so the board in the HTML is drawn from the real design data rather than a simplified export. For the other tools, the integration reads their respective file formats through the same core, which is why the repository has a per-tool installation page on the wiki rather than a single command.

## Fields from netlist, XML, or the board itself

BOM table fields and grouping are fully configurable, and additional columns such as a manufacturer ID can be added in the schematic editor and imported through three routes, the netlist file, the XML file generated by Eeschema's internal BOM tool, or from the board file itself. The three paths match three real workflows, the netlist for traditional flows, the XML for KiCad's own BOM generator users, and the board file for designs where everything was placed without schematic side data. Grouping configuration means the same board can produce a per-component BOM for soldering and a per-value grouped BOM for purchasing, from the same data, chosen at generation time.

## Net highlighting through tracks and zones

There is an option to include tracks and zones data as well as netlist information, allowing dynamic highlight of nets on the board, the feature that turns the artifact from a parts finder into a debugging tool, since clicking a component can light up its nets and show what it connects to. The cost is file size, since embedding geometry for every track and zone grows the output, which is why it is an option rather than a default, and the DATAFORMAT.md file in the repository documents the embedded data structure for anyone building tooling around generated files. For assembly handoff, the combination of grouped BOM, net highlighting and placement search covers the questions assemblers ask boards' designers most often.

## A self-contained page, offline by design

The generated HTML page is fully self contained, doesn't need an internet connection to work, and can be packaged with project documentation or hosted anywhere on the web, a design constraint that shapes everything else. Three JavaScript libraries are embedded into the generated page, Split.js for the resizable panes, PEP.js for pointer events, and a stripped down lz-string for compressing the board data into the file, chosen deliberately so the output never loads a CDN or a font from the network. For a factory floor, a lab bench with no wifi, or an archive meant to outlive its hosting, that property is the difference between a tool and a liability, and the demo page hosted by the project doubles as proof the files travel well.

## Borrowed parts, credited inline

The credits section is precise about the borrowed code, the HTML page uses Split.js, PEP.js and a stripped down lz-string.js, and two Python modules have pedigrees, units.py borrowed from the KiBom plugin under MIT, and svgpath.py heavily based on the svgpathtools module, also MIT. The attribution style, naming the upstream projects and their licenses inline, keeps the provenance auditable for teams with license review processes, and the whole plugin is MIT itself. The pyproject manifest shows the Python side's own dependencies are minimal, wxpython for the dialog interface and jsonschema for validating data, with a generate_interactive_bom command line script for generating without the GUI.

## Tested across five Python versions, released with humor

The engineering hygiene runs deeper than a plugin usually goes, a hatch-based build testing against Python 3.8 through 3.12 in a matrix, pytest with coverage scripts, and a mypy types environment checking the InteractiveHtmlBom package directly. The release history is current and tells its story in the tag names, v2.11.1 subtitled Maining the tenance in March 2026, v2.11.2 as electric boogaloo in May, and v2.12.0, Knock yourself out, on 2026-09-10, the same day as the last repository push, a maintenance cadence with personality. Version numbering derives from a LAST_TAG constant parsed by hatch, and the Development Status classifier reads Production/Stable, matching two decades of community use behind the project.

## Conclusion

Generate an interactive BOM whenever a board moves from CAD to the bench, hand soldering, rework, or assembly handoff, since the correlated BOM and board view answer placement questions faster than flipping between schematic and layout. It reads completed PCB data rather than driving design, so it complements rather than replaces your EDA toolchain. Before using, install through the wiki's per-tool instructions since KiCad, EasyEDA, Eagle, Fusion360 and Allegro each integrate differently, add manufacturer fields in the schematic editor if you want them in the table, and enable the tracks and netlist options when net highlighting is worth the larger file, remembering the output needs only a browser to open.

## FAQ

### What is InteractiveHtmlBom?

InteractiveHtmlBom is a MIT-licensed plugin that generates interactive HTML bills of materials for PCB designs from KiCad, EasyEDA, Eagle, Fusion360 and Allegro. Each BOM row correlates with component placements on a rendered board, supporting click-through search in both directions, and the output is a self-contained HTML file.

### How do you install InteractiveHtmlBom?

Installation instructions are on the project wiki, per EDA tool, since KiCad, EasyEDA, Eagle, Fusion360 and Allegro each integrate differently, with KiCad using the Pcbnew Python API. The package also provides a generate_interactive_bom command line script for use without the plugin dialog.

### Can the generated BOM be shared offline?

Yes, the generated HTML page is fully self-contained and needs no internet connection to work, so it can be packaged with project documentation or hosted anywhere. Three JavaScript libraries, Split.js, PEP.js and a stripped-down lz-string, are embedded into the page rather than loaded from a network.

## Sources

- [Issues](https://github.com/openscopeproject/InteractiveHtmlBom/issues)
- [License: MIT](https://github.com/openscopeproject/InteractiveHtmlBom/blob/master/LICENSE)
- [openscopeproject/InteractiveHtmlBom on GitHub](https://github.com/openscopeproject/InteractiveHtmlBom)
- [README](https://github.com/openscopeproject/InteractiveHtmlBom/blob/master/README.md)
- [Releases](https://github.com/openscopeproject/InteractiveHtmlBom/releases)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/openscopeproject-interactivehtmlbom
