Skip to content
Real File Viewer

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

FormatEngineHow it runs
PDFpdf.js (Mozilla)Runs in a Web Worker; renders each page to a canvas locally.
Word (DOCX)Mammoth.jsConverts the DOCX XML into semantic HTML locally, in-memory.
Excel (XLSX)SheetJSParses 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 & HEICCanvas 2D + libheif (WASM) for HEIC, UTIF.js for TIFFHEIC/HEIF and TIFF are decoded to a bitmap locally (TIFF page-by-page for multi-page scans) before display.
CSVCustom parserA local, quote-aware CSV/TSV parser builds the table entirely in-browser.
JSONCustom tree rendererParsed with the browser's native JSON parser; rendered as a virtualized collapsible tree.
CodeShikiThe same highlighter that powers VS Code, running entirely in-browser via WASM.
Archive (ZIP, TAR, GZ)JSZip (ZIP) + js-untar and fflate (TAR/GZ)Reads the archive's directory structure and inflates individual entries on demand, locally — .tar.gz is gunzipped with fflate, then unpacked with js-untar in a Web Worker.
AudioWeb Audio API + native <audio>Decoded with the browser's built-in audio engine; nothing is streamed to a server.
VideoNative HTML5 <video>Decoded and played by your browser's built-in video engine, entirely on-device.
EPUBCustom renderer (JSZip + sandboxed iframe)Unzips the EPUB package locally and renders each chapter's XHTML in a sandboxed frame for safety.
STLThree.js (STLLoader)Parses both binary and ASCII STL encodings and renders the triangle mesh with WebGL, locally.
STEPOpenCascade (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.
DXFCustom DXF parser + Three.js rendererParses 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.
DWGPending — see noteDWG 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.
PSDag-psdDecodes the PSD's layer and pixel data directly to canvas elements, entirely in-browser.
XMLNative DOMParserParsed with the browser's built-in XML parser; rendered as a collapsible element tree.
TextShiki (plain-text mode)Shares the same in-browser renderer as the Code viewer, displayed without syntax highlighting.
RTFrtf.jsParses the RTF control-word stream and renders it (including embedded WMF/EMF images) directly to HTML, in-browser.
Fontopentype.js + the browser's FontFace APIReads font metadata with opentype.js, and registers the file with the browser's FontFace API for accurate native text rendering.
EMLCustom MIME parserParses the email's MIME headers and multipart body (RFC 822/2045) directly, entirely in-browser.
MSG@kenjiuno/msgreader + rtf.jsDecodes Outlook's binary CFBF container format directly; rich-text bodies (compressed RTF) are decompressed and rendered via the same RTF engine used by the RTF viewer.
VisioPending — see noteVisio's .vsd/.vsdx format has no well-maintained, permissively-licensed client-side parser we could find, unlike DXF or STEP which have documented open formats and library ecosystems to build on.
MS ProjectPending — see noteMPP is a proprietary binary schedule format with no reliable, permissively-licensed client-side JavaScript parser available today.
MarkdownmarkedRenders Markdown to HTML locally, then displays it inside a sandboxed frame (the same safety treatment as any other untrusted HTML on this site).
HTMLSandboxed iframe + ShikiRenders the HTML inside a sandboxed frame with embedded scripts disabled, entirely on-device; the Source view reuses the Code viewer's Shiki-based highlighting.

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.