Skip to content
IceWhaleTechPublic

About

🔍【多格式文件预览,一个浏览器搞定】[filens] 📄 Office / PDF / iWork / CAD / 3D / RAW / 全景 🔒 本地解析,无需上传 ⚡ Rust + WebAssembly 驱动 🧩 Vue 3 轻松集成。Open-source, local-first file preview. Your files, your browser.

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Repository files navigation

filens logo

filens

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 · 简体中文

Watch the demo · Try it locally · Supported formats

Eight actual filens previews: presentations, documents, spreadsheets, PDF, Keynote, CAD, 3D, and panoramas

Pure frontend · WASM conversion, flexible deployment · Fast and tiny

A closer look at your files

  • 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.

See more, right in your browser

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.

What you can open today

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.

Small pieces, shared capabilities

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.

Demo

▶ Watch the 30-second walkthrough — presentations, documents, spreadsheets, Keynote, CAD, and a 360° view, in one workspace.

Show an animated preview

A short recording of filens switching between real file previews

The full recording is linked above. Chinese captions · English captions

Measured performance

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.

Quick start

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/demo

Open 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.

Build with filens

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.

About

🔍【多格式文件预览,一个浏览器搞定】[filens] 📄 Office / PDF / iWork / CAD / 3D / RAW / 全景 🔒 本地解析,无需上传 ⚡ Rust + WebAssembly 驱动 🧩 Vue 3 轻松集成。Open-source, local-first file preview. Your files, your browser.

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Contributors

Languages