Files shine bright. Dreams take flight.
A pure frontend file viewer for Office, iWork, CAD, panoramas, and more. Local files stay on your device.
English · 简体中文
Pure frontend · WASM conversion, flexible deployment · Fast and tiny
- Pure frontend preview. Parse and render files in the browser. Local previews require neither uploads nor a conversion server.
- WASM conversion, flexible deployment. Run the conversion module directly in the browser or use it independently through CLI / HTTP tools. WASM handles file parsing and conversion; the server manages requests and files.
- Load by format, spend less time waiting. Format-based bundles, lazy loading, worker parsing, and page virtualization reduce download and rendering work. The document conversion WASM is 318.3 KiB Brotli; UI, shared dependencies, and other modules are measured separately in the bundle report.
Native PPTX and iWork previews sit alongside documents, spreadsheets, CAD, 3D, RAW, panoramas, archives, and ebooks. Coverage and fidelity vary by format. See the support matrix for current capabilities and limitations.
Open all three iWork formats, look around camera-original panoramas, and get a fast RAW preview. From presentation slides to the data behind the lens, explore it all in one file workspace.
This comparison selects browser-local projects by specialty.
| Frontend project | Native PPTX preview | iWork | Panorama photos / video | Local RAW preview | CAD / 3D | Performance path and focus |
|---|---|---|---|---|---|---|
| filens | ✅ | ✅ Keynote / Pages / Numbers | ✅ Photos / video ◐ X5 original INSP, Insta360 / DJI distortion and calibration parsing, original-track sync and calibrated DNG stitching |
◐ Embedded JPEG / lightweight development | ✅ DXF / STEP / 3D | Load by format; fast RAW path; panorama redraws on demand |
| vue-office | ✅ PPTX core is not open source | — | — | — | — | Office document previews |
| PPTist | ✅ Import into presentation model | — | — | — | — | Presentation editing and playback |
| SheetJS CE | — | ◐ Numbers table data extraction | — | — | — | Workbook parsing; application supplies the UI |
| Photo Sphere Viewer | — | — | ✅ Photos / video ◐ Generic dual fisheye; no X5 calibration parsing |
— | — | WebGL panoramas, tiles, hotspots, and tours |
| LibRaw-Wasm | — | — | — | ✅ WASM decoding and development | — | Full / half-size development; worker-based image processing API |
| Online 3D Viewer | — | — | — | — | ✅ STEP / IGES / IFC / 3D | Specialist model viewing, inspection, and export |
✅ Available path; ◐ partial or conditional support; — no built-in path found in the project's documentation. See the support matrix for fidelity boundaries. Camera-original stitching is experimental.
- iWork, with a view for each format. Parse Keynote, Pages, and Numbers directly, presenting text, images, shapes, and tables on slide, page, and sheet canvases. See an actual preview.
- Panoramas, from lens parameters to the view around you. Parse supported originals' intrinsics, distortion, and extrinsics, then handle track synchronization, projection, exposure matching, and seams. Reuse static stitching results and adapt video seam-analysis frequency to its measured cost. Implementation and camera validation.
- RAW, with a faster path to a preview. Load the image WASM on demand, extract an embedded JPEG first, and use lightweight sensor development when no preview is available. RAW coverage.
| Files | What you can do | Current limits |
|---|---|---|
| PPTX, Keynote / Pages / Numbers | Browse slides, pages, and worksheets directly. | Native parsing; layout and object fidelity vary by file. |
| DOCX, XLSX / CSV, PDF | Read documents, switch worksheets, and browse PDF pages. | Read-only previews; fonts and advanced styles may differ. |
| DOC / XLS / PPT, WPS / ET / DPS | Normalize legacy documents locally for preview. | Preview-focused conversion strips macros and does not promise full reconstruction. |
| DXF, STEP / STP, 3D models | Explore drawings, orbit solids, and zoom into meshes. | STEP loads separately on demand; geometry and instance placement are retained, while source colors, names, and the assembly tree are omitted. |
| RAW, PPM, images, and icons | View camera originals and P3 / P6, 8 / 16-bit PPM files. | RAW uses embedded JPEGs or lightweight sensor development; camera support varies. |
| 360° photos and video | Look around; stitch supported Insta360 / DJI videos in real time and calibrated DNG photos at load. | Camera stitching is experimental and depends on calibration metadata, companion files, and browser codecs. |
| Archives, ebooks, code, mind maps, and diagrams | Browse folders and chapters, read source, and explore node relationships. | See the support matrix for each format's supported subset. |
The homepage has eight actual preview captures and directly accessible STEP, RAW, PPM, and legacy Office samples. See the panorama package for RAW and panorama integration.
| Module / core | Raw | gzip | Brotli |
|---|---|---|---|
| Conversion core WASM | 872.1 KiB | 395.6 KiB | 318.3 KiB |
| Image / RAW core WASM | 1072.2 KiB | 293.0 KiB | 210.7 KiB |
| Media / panorama preview | 216.9 KiB | 64.1 KiB | 54.7 KiB |
| Optional STEP WASM | 2625.8 KiB | 1020.2 KiB | 797.0 KiB |
Document, image / RAW, and STEP WASM modules load independently on demand. Media preview and image conversion are measured separately. JS rows include their CSS; shared dependencies and workers are listed separately.
All modules and initial loading cost
| Module / core | Raw | gzip | Brotli |
|---|---|---|---|
| Demo entry | 173.1 KiB | 48.9 KiB | 40.8 KiB |
| Shared vendor dependencies | 1319.8 KiB | 369.6 KiB | 305.2 KiB |
| PPTX / core runtime | 288.6 KiB | 76.1 KiB | 65.4 KiB |
| Vue preview host | 69.9 KiB | 16.3 KiB | 14.4 KiB |
| DOCX / XLSX / PDF | 32.5 KiB | 9.8 KiB | 8.8 KiB |
| On-demand PDF engine | 435.2 KiB | 128.1 KiB | 106.9 KiB |
| iWork preview | 26.8 KiB | 8.7 KiB | 7.7 KiB |
| CAD / mind maps / diagrams | 90.2 KiB | 25.2 KiB | 21.6 KiB |
| 3D preview | 133.4 KiB | 37.9 KiB | 32.9 KiB |
| Archive preview | 24.7 KiB | 7.9 KiB | 7.0 KiB |
| Text / ebooks | 22.9 KiB | 8.2 KiB | 7.3 KiB |
| iWork worker | 894.1 KiB | 186.7 KiB | 156.2 KiB |
| PDF worker | 1053.3 KiB | 291.1 KiB | 233.1 KiB |
| STEP loader | 23.0 KiB | 9.5 KiB | 8.7 KiB |
Entry, preloaded JS, and CSS total 499.0 KiB Brotli (2131.8 KiB raw / 596.6 KiB gzip), plus images, video, and samples. Modules share dependencies; these rows are not standalone per-format download totals.
Measured from the demo build. Compression columns describe artifacts; actual transfer depends on hosting. Full report and reproduction.
▶ Watch the 30-second walkthrough — presentations, documents, spreadsheets, Keynote, CAD, and a 360° view, in one workspace.
Stable leads against specialized frontend libraries. At least seven runs per configuration, with 21 for the X5 original; sensor development and preview drawing on five RAW inputs without embedded JPEGs are 1.11–2.14× faster than the measured LibRaw paths.
| Measured task | filens | Current peer | Peer time / filens | Result |
|---|---|---|---|---|
| 11.1 MB, 13-slide PPTX parse | 28.5 ms | pptx-preview 1.0.7: 56.6 ms | 1.99× | SOTA* |
| 11.1 MB, 13-slide PPTX first preview | 48.8 ms | pptx-preview 1.0.7: 71.8 ms | 1.47× | SOTA* |
| 3840×1920 panorama JPEG preview | 154.9 ms | Photo Sphere Viewer 5.15.1: 205.2 ms | 1.32× | SOTA* |
| 11904×5952 original X5 INSP panorama preview | 369.4 ms | Photo Sphere Viewer 5.15.1 dual fisheye: 414.5 ms | 1.12× | SOTA* |
| NEF without embedded JPEG → preview canvas | 152.7 ms | LibRaw-Wasm 1.6.0 half-size: 326.7 ms | 2.14× | SOTA* |
| DNG without embedded JPEG → preview canvas | 167.7 ms | LibRaw-Wasm 1.6.0 fast half-size: 314.4 ms | 1.87× | SOTA* |
| STEP geometry import: cube | 46.5 ms | occt-import-js 0.0.23: 67.6 ms | 1.45× | SOTA* |
| XLSX data read (80,000 cells) | 42.3 ms | SheetJS CE 0.20.3: 109.6 ms | 2.59× | SOTA* |
| XLS → XLSX preview conversion (6 sheets) | 12.3 ms | x2t WASM v9.3.2+3: 49.1 ms | 4.00× | SOTA* |
| 20,000×8 numeric CSV → XLSX | 137.6 ms | x2t WASM v9.3.2+3: 198.8 ms | 1.44× | SOTA* |
* Limited to this machine, measured inputs and listed peers, supported by paired bootstrap 95% intervals; downloads and library cold loading excluded. Apple M4 Pro / Chromium 147; panoramas use SwiftShader software rendering. On the X5 original, PSV's generic dual-fisheye projection visibly repeats scene content across hard seams; filens has lighter, localized ghosting. The speed label covers readable previews of this original. RAW measures development and drawing to a common canvas with different intermediate sizes; STEP targets geometry previews; XLSX compares data reading; XLS compares the main displayed content in the same viewer. Full results, scope and reproduction.
Selection and measurement scope
Entries follow public documentation and browser-local processing paths. SheetJS and LibRaw-Wasm expose APIs that need an application UI. Panorama viewing and vendor-original stitching have different requirements; see the support matrix and Photo Sphere Viewer dual-fisheye guide.
RAW inputs have embedded JPEGs removed and unchanged sensor data. Both LibRaw half-size configurations draw to the same 1280×800 canvas; intermediate resolution, tone and crop differ slightly. Timing includes development, output decode/transfer and drawing. The full Numbers model and several small PPTX first previews still have room to improve; see the full results and preview comparisons.
Requires Node.js 20+ and Rust via rustup. The repository pins the Rust compiler and WASI target.
npm ci
npm run build:wasm
npm run dev --workspace @filens/demoOpen the local demo, then choose a sample or drop in your own file. The website has Chinese and English homepages.
To publish the demo, import the repository into Vercel. Git integration deploys pushes automatically; an optional manual GitHub Actions workflow is also included.
| Looking for… | Start here |
|---|---|
| Vue preview components | Vue integration |
| Format coverage and limits | Support matrix |
| Architecture, comparisons, and performance notes | Project overview |
| Frontend timings, scoped leads, and raw data | Frontend performance comparison |
| CLI / backend integration | Go + wazero example |
| Deployment | Vercel guide |
Try your everyday files and report a reproducible issue. Upcoming work is tracked in the roadmap.
Preview images come from filens itself. Photos: Carsten / CC BY 2.0 (cropped and pale-blue graded) and Greg Zaal / Poly Haven / CC0. The overview, walkthrough, and animated preview are CC BY-SA 4.0. Visual sources and credits. iWork research: dunhamsteve/iwork; CAD lineage: orcastor/cad2x-converter.

