Skip to the content
2 layers45 × 45 mmPCB design, the printed circuit board in 3D

Zero-backend, browser-only forensic workbench - drop a file and it classifies and analyses it entirely on your device (200+ formats, EXIF, hex, spectrograms, on-device AI vocal separation, 3D/CAD viewers). Nothing is uploaded. Also a desktop app.

Size
45 × 45 mm
Copper layers
2
Thickness
1.6 mm
Parts
20
Nets
11
Pads
40
Tracks, vias
49, 110
Routed
Yes
KiCad
KiCad 9.0 (file 20241229)
Created
1 Jun 2026
Updated
29 Oct 2026

Overview

PCB design is an open-source printed circuit board by KostaJovanovic, from the KostaJovanovic/Universal-File-Analyser repository on GitHub, published under the GPL-3.0 licence. It is a 2-layer board of 45 × 45 mm with 20 parts on 11 nets, routed with 49 tracks and 110 vias.

Its parts include 7 connectors, 4 resistors, 2 switches and 1 capacitor.

README

README.md

Download the apps

Download stable release

Analyser banner

Analyser

A zero-backend forensic workbench for files, running entirely in your browser.

Drop in any file and it is classified, parsed and visualised on your device. Nothing is uploaded, ever.

Open Analyser · Supported formats · Samples · About · Changelog

See it work, before you drop a thing, the samples gallery

Download the apps

Download stable release

Why

Most "file inspector" sites work by uploading your file to a server, which is exactly what you do not want for private photos, contracts, disk images or key files. Analyser takes the opposite approach: the page is static, there is no backend at all, and every byte of analysis happens in your browser through the File API and lazy-loaded WebAssembly. It works offline as an installable PWA, and you can verify the no-upload claim with the network tab open.

What it can open

Analyser recognises over 1,350 file types. The depth varies by format: photos, audio, video, documents, 3D models, archives, maps and databases get full viewers and deep analysis, while hundreds of proprietary formats are identified by magic bytes with their header metadata decoded. Anything still unknown gets a hex dump and best-effort identification.

The full, searchable list is at analyser.valjdakosta.com/formats, with a guide page for every supported extension. There is also a compare page that runs two files through the same analysis side by side and highlights every field where they differ, and a samples gallery of example files to try without needing your own.

Beyond identification

Identifying a file is just the entry point. The real work starts once Analyser knows what it is holding, and a lot of that is best shown rather than described.

Audio: spectrograms, isolation and on-device AI

Waveform and spectrogram views (down into the sub-20 Hz range), codec and loudness analysis, reversed playback, and live microphone capture. The frequency-isolation panel lets you carve out bands in real time, and an in-browser AI model separates vocals from instrumentals with no server round-trip.

Spectrogram view with magma colour map and log axis Live frequency isolation panel

https://github.com/user-attachments/assets/a9226e4a-90d0-45d2-8c82-d65578e2b3e8

On-device AI vocal separation: the model runs entirely in the browser, nothing is uploaded.

3D, CAD and manufacturing

STL and STEP/IGES viewers, DWG drawings, SolidWorks and Fusion 360 packages, and a G-code toolpath simulator that rebuilds the print as solid deposited filament, animates the build layer by layer, and can export a shareable video clip of it.

G-code toolpath viewer reconstructing a printed plaque G-code build animation

Electronics

KiCad and Altium PCB projects render as an interactive 3D board you can flip and inspect, alongside schematics, SPICE waveforms and IPC netlists.

Interactive 3D PCB board view from a KiCad project

Creative project files

After Effects, Premiere, DaVinci Resolve and VEGAS projects with previewable composition timelines, EDL/FCPXML/OTIO timelines, PSD and Illustrator files, colour LUTs, animated font specimens, Lottie animations, MIDI scores, subtitles and lyrics.

After Effects project timeline reconstruction Animated font glyph specimen

Folders and archives

Browse ZIP, 7z, RAR and whole dropped folders, with a treemap that breaks down where the size actually goes and lets you click straight into any file to analyse it. Comics (CBZ/CBR), e-books (EPUB/MOBI), DjVu scans and Jupyter notebooks get proper readers.

Treemap size breakdown of a dropped folder

And more

  • File recovery - repair truncated or corrupt JPEG/PNG files, rebuild a damaged JPEG header using a reference photo from the same camera, carve embedded images out of any blob, and salvage unfinalised MP4/MOV recordings with no index by extracting the raw H.264/H.265 stream (with a reference clip as donor if needed).
  • Photos - EXIF and GPS readout, histograms, OCR, QR-code detection, HEIC and camera-RAW conversion, and a "sonify" mode that turns the image into sound.
  • Video - per-frame and stream analysis, scene-change detection, and scrubbing synced between the player and the readouts.
  • Forensics and data - CRC-32, MD5, SHA-1, SHA-256 and SHA-512 hashes, a network-indicator (OSINT) card that pulls URLs, IPs, domains and emails out of any file into click-to-open lookup links (nothing is contacted automatically), plus viewers for SQLite databases, git objects, emails and disk images, and a JSON export of the full analysis.
  • Geodata - GPX tracks, KML and GeoJSON plotted on a map, rendered locally.

Privacy

  • No uploads: files are read with the File API and never leave the device.
  • No accounts, no trackers, ZERO tracking cookies. The only thing counted is an anonymous per-extension tally (see the privacy page).
  • Works fully offline once installed; the service worker precaches the app shell and keeps the WASM engines after first use.
  • Private keys and secrets found inside files are flagged, not transmitted.

The only network call the site ever makes on its own is a single anonymous "file analysed" ping carrying nothing but a lowercase extension string. Those counts feed the public live-usage page, an honest tally of what people drop, with unrecognised types pooled into one row so their names are never shown or stored.

The live-usage stats page

Style

You have probably never seen a file analysis website this stylish. It follows a swiss design inspired layout, colour palette and set of fonts which I am very happy with. I made sure to sacrifice no functionality or readability for the sake of being cool, and hopefully succeeded in that too. Sharp corners, mono type, no clutter. And a... hidden game?

p

Under the hood

The site is plain HTML, CSS and ES-module JavaScript. No framework, no build step, no node_modules. Heavy lifting is done by WebAssembly engines and specialist libraries, loaded lazily only when a file actually needs them:

  • FFmpeg for video remuxing, frame extraction and audio decoding
  • ImageMagick for RAW photo conversion
  • pdf.js and Ghostscript for PDF and PostScript
  • Tesseract for OCR
  • OpenCASCADE for STEP/IGES tessellation (fetched on first use, then cached for offline)
  • sql.js for SQLite, libarchive and xz for archives, OpenJPEG for JPEG 2000
  • exifr, heic2any, jsQR, Leaflet, fflate and friends

Most parsing, though, is hand-written: a couple of hundred binary header parsers organised into lazy per-domain chunks, so the initial page stays small. Deployment is just static assets on Cloudflare; every push to main ships.

Offline install

The "Download for offline use" section in the footer caches Analyser as an installable, fully offline Progressive Web App, in three cumulative tiers: Essentials (the whole app), Everything (adds OCR, maps, QR scanning, HEIC, archives, PostScript, CAD drawings and the samples gallery) and Complete (OCR in 30+ languages plus the on-device AI vocal separation).

The three-tier offline download section in the footer

Desktop app

Analyser also runs as a desktop application for Windows, macOS and Linux. It wraps the same web/ tree the site serves, so there is no fork of the code and nothing in the analysis pipeline changes - and the privacy promise is identical, since everything still happens on your own machine.

The source is in desktop/ (Electron, its own package.json). Build the Windows installer locally with cd desktop && npm install && npm run dist, which writes Analyser-Windows-<version>.exe into desktop/dist/. That one file installs Analyser or unpacks a portable copy. The desktop adds File > Open and Open folder, opens files handed to it from Explorer or the command line, sizes its memory limits from real RAM rather than the browser's clamped figure, and saves the exported report through a native dialog. See desktop/README.md and the docs page.

Android app

An Android app is in development, built the same way as the desktop one: a Capacitor shell around the same web/ tree, with no fork of the code. On top of the website it adds "Open with" and "Share to Analyser", a native save for every download, and a real FFmpeg binary that encodes video on the phone's own hardware (MediaCodec). Early builds are in the latest release, and the app updates from there. The source is in mobile/; see mobile/README.md and the docs page.

Running locally

text
server.bat

This starts a local instance on localhost:3000 and opens it in a browser. It keeps 100% of the functionality since everything was built to be server-independent. The printed network URL also works for phone testing on the same Wi-Fi. There is nothing to install and nothing to build; editing a file and refreshing is the whole dev loop.

Project layout

  • web/ - the entire website (served at the domain root); everything below lives here
  • web/index.html - the drop-and-analyse app
  • web/assets/js/core/formats.js - the single source of truth for every supported file type
  • web/assets/js/renderers/ - one module per top-level type (photo, audio, video, PDF, 3D, ...)
  • web/assets/js/parsers/ - lazy per-domain metadata parsers for the long tail of formats
  • web/assets/js/lib/ - shared binary helpers and WASM loaders
  • web/assets/vendor/ - third-party libraries, served locally so the app stays offline-capable
  • tools/ - Node scripts (in the repo root) that pre-render the /formats SEO pages from the catalog
  • worker/ - the Cloudflare Worker behind the anonymous analysed-file counter (the only server-side code)
  • desktop/ - the Electron desktop shell, which wraps the same web/ tree
  • mobile/ - the Android shell (Capacitor), which wraps it too
  • web/sw.js - the service worker behind the offline support

Versioning

Every commit is its own version (currently in the 5.x era), stamped automatically at commit time. The full history, one entry per commit, is on the changelog.

Credits

The idea and need for this website was mine, originally made as a simple tool for generating spectrograms and reading a photo aspect ratio, that spiraled out of control pretty quickly. Many thanks to my parents, who encouraged me to continue by finding this cool, and to friends who tested this for me on platforms I do not possess or use frequently (Linux Arch and Debian, macOS). Since this project was made possible with Claude, and having in mind the moral and ethical dilemmas regarding AI usage, I decided to make the source available to the public.

License

Copyright © 2026 Kosta. Licensed under the GNU General Public License v3.0.

Analyser is free software: you are free to use, study, modify and share it, for any purpose including commercially. The condition is reciprocity, if you distribute it or a modified version, you must pass on the same freedoms, releasing your source under the GPL too. It comes with no warranty.

This licence covers the code I wrote. Third-party libraries under web/assets/vendor/ remain under their own licences (Ghostscript under AGPL-3.0 and LibRaw under LGPL among them), each shipped with its licence alongside it and credited in the site footer.

Documentation

For a deeper look at the codebase, architecture, the drop-to-render pipeline, every renderer module, and a full usage reference for every feature on the site, see analyser.valjdakosta.com/docs.

Parts

20
QtyValueFootprintReferences
4Conn_01x01_PinConnector_PinHeader_2.54mm:PinHeader_1x01_P2.54mm_VerticalJ1, J3, J4, J5
4MountingHoleMountingHole:MountingHole_3.2mm_M3_ISO14580_Pad_TopBottomH1, H2, H3, H4
2100kResistor_SMD:R_1206_3216Metric_Pad1.30x1.75mm_HandSolderR1, R3
247kResistor_SMD:R_1206_3216Metric_Pad1.30x1.75mm_HandSolderR2, R4
2Conn_01x03_PinConnector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalJ6, J7
2SW_SPDTPEP_library:SW-TH_2MS1T1B1M1QES-5SW1, SW2
147uCapacitor_SMD:C_1206_3216MetricC1
1LOGOPEP_library:petnica_logoG***
1Screw_Terminal_01x02TerminalBlock_Phoenix:TerminalBlock_Phoenix_MKDS-1,5-2-5.08_1x02_P5.08mm_HorizontalJ2

The 19 most common of 20 parts.

Similar boards

  • 2 layers66.9 × 74.5 mmDeskHop Rev1, the printed circuit board in 3D

    DeskHop Rev1

    hrvach/deskhop

    Fast Desktop Switching Device

    20 parts7.9kGPL-3.0
  • 2 layers86.4 × 64.8 mmSlot machine, the printed circuit board in 3D

    Slot machine

    google/google-ctf

    Google CTF

    20 parts5.1kApache-2.0
  • 2 layers36.2 × 26.8 mmEsp32 minimal, the printed circuit board in 3D

    Esp32 minimal

    atopile/atopile

    Design circuit boards with code! ✨ Get software-like design reuse 🚀, validation, version control and collaboration in hardware; starting with electronics ⚡️

    20 parts4kMIT
  • 2 layers108.1 × 393.8 mmSweep compact ble, the printed circuit board in 3D

    Sweep compact ble

    davidphilipbarr/Sweep

    Sweep - a small promicro based keyboard inspired by the Ferris.

    20 parts2.1k
  • 2 layers26 × 15.9 mmTPS54340 Buck Regulator, the printed circuit board in 3D

    TPS54340 Buck Regulator

    rusefi/rusefi

    rusefi - GPL internal combustion engine control unit

    20 parts1.2k
  • 2 layers67.6 × 30.5 mmRgb to hdmi, the printed circuit board in 3D

    Rgb to hdmi

    hoglet67/RGBtoHDMI

    Bare-metal Raspberry Pi project that provides pixel-perfect sampling of Retro Computer RGB/YUV video and conversion to HDMI

    20 parts1kGPL-3.0
  • 2 layers44.3 × 28.7 mmLin bus adapter esp32, the printed circuit board in 3D

    Lin bus adapter esp32

    hackclub/OnBoard

    💡 Join 1,000 teenagers and make your first PCB with a $100 grant!

    20 parts915
  • 2 layers89.5 × 61.6 mmFreeDeck TH 2020-02, the printed circuit board in 3D

    FreeDeck TH 2020-02

    FreeYourStream/freedeck-hardware

    all the stuff you need to build your own FreeDeck

    20 parts772

Questions

How big is the PCB design PCB?

It measures 45 × 45 mm and has 2 copper layers, 1.6 mm thick.

What parts does the PCB design use?

20 parts. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the PCB design KiCad files?

From the KostaJovanovic/Universal-File-Analyser repository on GitHub, at the commit this page was made from: the board is web/samples/PCB-design.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.

Can I use the PCB design design in my own project?

Its repository publishes it under the GPL-3.0 licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).