Wenlan
Wenlan is a source-backed AI knowledge base and LLM wiki for AI work: organize documents and decisions into pages you can find, inspect, and review.
View PDFs, Office documents, CAD drawings, 3D models, photos and hundreds of other formats in your browser. Free and open source: files never leave your device.
ProductivityTypeScript · JavaScriptGitHub @Kai-JungsthoefelOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
Open almost any file in your browser. No install, no upload.
Loading the full README.
Read the full README ↗Peekbean is a file viewer and converter that runs entirely in the browser. Drop a file on the page and it opens: a DWG drawing, a STEP model, an IFC building, a Word document, a camera raw photo, an Access database, a Shapefile and more than a hundred other formats. Nothing is uploaded. The site is purely static, and your files never leave your device.
Someone sends you a file and you just want to look inside. Usually that means installing a program for a format you open twice a year, or uploading the file to some online viewer and trusting a stranger's server with it. Peekbean is the third option: as convenient as a website, as private as a local program.
| BIM: IFC model with storeys, elements and properties | Office: Word and PowerPoint laid out page by page |
| Mind maps: XMind, MindManager, FreeMind | Circuit boards: Gerber and drill files as a finished board |
| CNC: G-code next to its tool paths, with playback | Word: forms, tables, shapes and charts |
| Documents | PDF, Word, PowerPoint, Excel, ODS, Numbers, CSV, RTF, Markdown, LaTeX (typeset by TeX Live), Jupyter, EPUB, FB2, HTML |
| CAD and BIM | DWG, DXF, STEP, IGES, BREP, IFC, FreeCAD, Rhino, HPGL plots, Gerber and Excellon, G-code |
| CAD previews | SolidWorks, Inventor, Solid Edge, NX, Creo, CATIA, Blender (embedded preview and properties) |
| 3D and point clouds | STL, OBJ, PLY, glTF/GLB, 3MF, FBX, DAE, 3DS, USD/USDZ, VRML, VTK, LAS/LAZ and more |
| Images | JPG, PNG, WebP, AVIF, HEIC, JPEG XL, TIFF, PSD, SVG, EMF/WMF, EXR, HDR, DDS, camera raw, and previews of Affinity, InDesign, Figma, EPS |
| Data | SQLite, Access, Parquet, Arrow, Shapefile, KML/KMZ, GPX, GeoJSON, TopoJSON |
| Archives | ZIP (also AES), 7Z, RAR, TAR, GZ, BZ2, XZ, ZST, ISO, CAB and more; comics CBZ/CBR/CB7/CBT |
| Other | E-mail (EML, MSG), mind maps (XMind, MindManager, FreeMind), calendars and contacts, fonts, certificates, shortcuts, audio and video, any text or source code, hex for the rest |
Info shows metadata such as EXIF and GPS, document properties or CAD part numbers. Measure works in 3D, drawings, maps, PDFs and images, with snapping and calibration from a known length. Files inside archives and e-mail attachments open in new tabs.
convert.html converts many files at once. The viewer's Export does the same for the open file. Each conversion says up front what it cannot keep.
| From | To |
|---|---|
| Images | PNG, JPG, WebP, PDF, ICO; Word, text, Markdown, LaTeX by text and formula recognition |
| PNG, JPG; Word, text, Markdown, LaTeX (its own text, scans by text recognition, formulas by formula recognition) | |
| Audio, sound track of videos | WAV |
| Word | PDF, LaTeX (equations as LaTeX formulas) |
| PowerPoint | |
| LaTeX | PDF (typeset by TeX Live), Word (formulas as Word equations; from a ZIP of the project with its pictures and included files) |
| Spreadsheets | XLSX, ODS, CSV, XLS, HTML, JSON, TSV, Markdown |
| JSON, YAML, JSON Lines | JSON, YAML, JSON Lines |
| Subtitles | SRT, VTT |
| 3D models | GLB, STL, OBJ, PLY, USDZ |
| DWG, HPGL | DXF |
| Archives, comics | ZIP, TAR.GZ, CBZ |
| Map data | GeoJSON, KML, GPX, CSV, Shapefile |
| E-mails | EML, HTML, attachments as ZIP |
| Databases | XLSX, CSV, SQLite |
Text recognition runs in the browser as well: PaddleOCR models with onnxruntime-web, and word data per language to choose among unsure readings (src/ocr/). Its files are served from public/ocr/, made by node scripts/build-ocr-data.mjs. Formulas set apart are read as LaTeX by Texo (AGPL-3.0, src/ocr/formula.ts), whose 80 MB load only when a page has formulas.
LaTeX is typeset by TeX Live itself, compiled to WebAssembly (pdfLaTeX, XeLaTeX, BibTeX; src/workers/latex.worker.ts). Every package of TeX Live 2025 is there, packed by peekbean-texlive into bundles that load when a document first reads one of their files, typically 10 to 40 MB per document. The site serves them itself from texlive/: npm run texlive fetches them (about 1.9 GB, kept in ~/.cache/peekbean), the dev server serves them from there, and the build copies them into dist/ on Cloudflare Pages or with PEEKBEAN_TEXLIVE_COPY=1. A whole project typesets from a ZIP archive (as Overleaf exports it) with "Open as LaTeX document", and converts from one in the converter.
dist/_headers as HTTP headers so it also covers web workers.npm install
npm run dev # development server
npm run build # type check, production build into dist/, license check
npm run preview # serve dist/ with the CSP as an HTTP header
npm run samples # regenerate the sample files in samples/
The WebAssembly modules in src/wasm/ are checked in prebuilt, so building needs neither Rust nor Emscripten. Each viewer is a lazily loaded module in src/viewers/, registered in src/core/registry.ts. See CLAUDE.md for the layout and project rules.
GPL-3.0-or-later, see LICENSE. The build checks every shipped dependency against an allowlist of GPL-compatible licenses and writes their texts to dist/third-party-licenses.txt.
Built on pdf.js, SheetJS, three.js, OpenCascade, web-ifc, dxf-viewer, acadrust, libarchive, CodeMirror and many more, plus ooxml-pages for Word and PowerPoint. Design after SOMA, typeface IBM Plex.