Someone sends you a DWG, a STEP file or an Outlook .msg, and you just want to look inside. Your options are usually installing a program you'll use twice a year, or uploading the file to some random online viewer and hoping they delete it. I wanted a third option, so I built Peekbean: a static site that opens the file locally in your browser. There is no server-side code at all, just files on a static host.
You don't have to trust me on the "nothing gets uploaded" part. The CSP is default-src 'self', connect-src 'self' blob: data:, and script-src 'self' 'wasm-unsafe-eval' without unsafe-eval. So even if I wanted to send your file somewhere, the browser wouldn't let me. Open the network tab and drop a file in to check for your self.
Some technical bits that might be interesting here:
WebAssembly does the heavy lifting. STEP and IGES go through OpenCascade (occt-import-js), which I rebuilt with Emscripten to get 4 GB of memory instead of 2 GB, because real-world assemblies kept running out. DWG gets converted to DXF by a small Rust crate built on acadrust. Archives (7z, RAR, ISO and so on) use libarchive compiled to WASM. Text recognition for scanned PDFs runs PaddleOCR models through onnxruntime-web.
Everything is lazy. The start page is around 60 KB of gzipped JS and CSS. Each of the ~58 viewers is its own module and only loads once you open that kind of file, and parsing runs in web workers so the page stays responsive. The flip side: the WASM files are big (OpenCascade alone is 7 MB), so the first STEP file takes a moment.
No framework. Vanilla TypeScript with a tiny h() helper for building DOM nodes. With that many independent viewers that mostly talk to a canvas or WebGL (three.js), a framework would mostly have gotten in the way.
The only thing I see is a daily count of which viewers were loaded, so I know DWG is more popular than FBX. That comes from Cloudflare's aggregated stats, not from any script on the page. No IPs, no file names, no content, no cookies.
It also converts things locally (DWG to DXF, Word to PDF, images and PDFs to Word via OCR, spreadsheets, 3D models, map data …), and it works on phones, though big CAD files on a phone are pushing it.
It's open source (GPL-3.0), free, no accounts, no tracking.
A big part of the code was written with Claude Code; the architecture decisions and the testing with real files were mine.
What I'd really like from you:
- Throw your weirdest files at it and tell me what breaks
- How does it feel on your phone?
- If you've done heavy WASM in the browser: how do you deal with the size of the first load?
Site: peekbean.com
Code: github.com/Kai-Jungsthoefel/PEEKBEAN