How Real File Viewer works
No server ever receives your file. Each format is decoded by a small, purpose-built engine that runs entirely inside your browser tab.
How it works
Three steps. No account, no upload, no waiting.
1. Choose or drop a file
Drag a file onto the page or click to browse — nothing is sent anywhere yet.
2. View instantly
The right engine renders it in your browser immediately — no server round-trip, no wait.
3. Download when done
Save the original file, or a converted version, back to your device at any time.
The engine behind each format
| Format | Engine | How it runs |
|---|---|---|
| pdf.js (Mozilla) | Runs in a Web Worker; renders each page to a canvas locally. | |
| Word (DOCX) | Mammoth.js | Converts the DOCX XML into semantic HTML locally, in-memory. |
| Excel (XLSX) | SheetJS | Parses the spreadsheet binary/XML locally and renders each sheet as a table. |
| PowerPoint (PPTX) | Custom renderer (JSZip + slide XML) | Unzips the .pptx and lays out each slide's shapes and text runs on a canvas-sized panel, locally. |
| Images & HEIC | Canvas 2D + libheif (WASM) for HEIC | HEIC/HEIF is decoded to a bitmap locally via a WebAssembly decoder before display. |
| CSV | Custom parser | A local, quote-aware CSV/TSV parser builds the table entirely in-browser. |
| JSON | Custom tree renderer | Parsed with the browser's native JSON parser; rendered as a virtualized collapsible tree. |
| Code | Shiki | The same highlighter that powers VS Code, running entirely in-browser via WASM. |
| Archive (ZIP) | JSZip | Reads the ZIP central directory and inflates individual entries on demand, locally. |
| Audio | Web Audio API + native <audio> | Decoded with the browser's built-in audio engine; nothing is streamed to a server. |
| Video | Native HTML5 <video> | Decoded and played by your browser's built-in video engine, entirely on-device. |
| EPUB | Custom renderer (JSZip + sandboxed iframe) | Unzips the EPUB package locally and renders each chapter's XHTML in a sandboxed frame for safety. |
| STL | Three.js (STLLoader) | Parses both binary and ASCII STL encodings and renders the triangle mesh with WebGL, locally. |
| STEP | OpenCascade (occt-import-js, WebAssembly) | A WebAssembly build of the OpenCascade geometry kernel reads the STEP file's real B-rep geometry and tessellates it into a mesh for WebGL display — the same kernel many desktop CAD tools use internally. |
| DXF | Custom DXF parser + Three.js renderer | Parses the DXF entity and layer tables directly (DXF is a documented, text-based format) and draws each entity locally — no upload needed since there's no binary format to reverse-engineer. |
| DWG | Pending — see note | DWG is AutoCAD's proprietary binary format. The only realistic client-side decoders (WebAssembly ports of LibreDWG) are GPL-3.0 licensed, and bundling GPL code into this site's shipped JavaScript is a licensing decision we haven't made yet — so DWG parsing isn't live. Our DXF viewer shares this same entity/layer renderer and works fully today; most CAD tools can export or convert DWG to DXF. |
How this is actually private
Not just a badge — here's exactly how, so the claim is verifiable.
100% Private
Files never leave your device. There is no server that ever receives your file's contents.
No Uploads
Every format is decoded and rendered locally via WebAssembly or JavaScript. Open your browser's Network tab and confirm nothing is sent.
No Storage
Nothing is written to a server or database. Memory clears the moment you close or reload the tab.
GDPR-friendly by design
There's no file data collection to comply with in the first place — no account, no tracking of file contents, no analytics on what you view.
Verify it yourself: open DevTools → Network tab before opening a file. No request fires with your file's contents — ever.