Analyser/Docs
Documentation menu

Renderer catalog

A short reference to every module in web/assets/js/renderers/ - what file kind it owns, what it does, and any notable vendored/WASM dependency. Renderer kinds are wired into the ROUTES table in web/assets/js/core/app.js and lazy-loaded on first use (see architecture.md and pipeline.md). There are ~86 modules in renderers/ (a handful - compare.js, folder-archive-shared.js, sonify.js, media-reverse.js, proprietary-formats.js and similar - are shared helpers or data tables rather than top-level routed kinds). For full usage detail (buttons, controls, options), see the features/*.md docs; this is the module-level map.

On this page

Images#

ModuleHandlesNotes
photo.jsPhoto analysis entry pointFile preview, size/MIME/dimensions/aspect ratio, full EXIF/IPTC/XMP/ICC/GPS via exifr, RGB histogram, dominant colours, GPS map (lazy Leaflet+OSM), OCR (lazy Tesseract.js), SHA-256
photo-convert.jsHEIC/HEIF and camera-RAW conversion to JPEG before analysisheic2any for HEIC, embedded-JPEG scan for RAW, ImageMagick-WASM heavyweight fallback
photo-recover.jsBroken/truncated/corrupt still-image salvageStrip junk before JPEG SOI, append missing EOI, rebuild damaged headers from a reference photo, carve embedded images out of a blob
sonify.jsImage -> sound ("sonify")Inverse of spectrogram.js: each image column becomes one instant of frequency content, resynthesised as audio
tiff.jsMulti-page TIFF page extractionWalks IFD chain in pure JS; spins up ImageMagick to render pages to PNG only when there are 2+ pages, then feeds embedded-images.js
mpo.jsMPO / Multi-Picture Format image extractionParses the MPF index in the JPEG APP2 segment; pure parsing, no decode
ico.jsICO/CUR icon directory extractionRebuilds a minimal single-image blob per directory entry (PNG and classic BMP/DIB); no WASM
embedded-images.jsShared "Embedded images" cardPure-DOM layout used by ico.js, mpo.js, tiff.js to show every packed image on a checkerboard with size/format/download

Audio#

ModuleHandlesNotes
audio.jsAudio module entry pointUploaded files, mic recording, live spectrogram; waveform + file info
audio-analysis.jsPure-computation audio metricsLevel stats, spectral centroid, LUFS loudness, pitch (YIN), tempo, stereo metrics - no DOM, no Web Audio
audio-codec.jsContainer/codec sniffingPeeks file header for sample rate/bit depth/codec hints; wraps raw AAC (ADTS) in a minimal M4A container
audio-player.jsCustom <audio> transportPlay/pause, draggable seek track, time readout; shared by audio.js and (via re-export) video.js
spectrogram.jsSpectrogram enginePure-JS FFT/STFT pipeline, no audio-library dependency; also the image-tie-in used by sonify.js's inverse
media-reverse.jsReversed audio playback + downloadFlips channel samples of an already-decoded AudioBuffer, re-encodes as WAV via the AVI module's PCM-WAV encoder

Video#

ModuleHandlesNotes
video.jsVideo module entry pointPlayback, container/codec detection, frame rate, frame capture (routed to photo.js), audio track extraction (waveform+spectrogram via audio.js)
video-avi.jsAVI (RIFF) container parsingReads header for dimensions/codec/audio format, pulls raw MJPEG frames + PCM audio from movi, re-wraps PCM as playable WAV; used when the native <video> path fails
video-recover.jsTruncated/unfinalised MP4-MOV recoveryRecovers playable video with no moov index by carving H.264/H.265 from mdat, borrowing SPS/PPS in-band or from a reference clip
video-sync.js (core/)Shared player↔analysis scrubbing syncNot a renderer module itself but the shared helper video/audio renderers use to sync playback position with readouts
sony-rtmd.jsSony rtmd (Real-Time MetaData) gyro/IMU extractionReads Sony Alpha/FX/RX cameras' timed-metadata track (exposure/lens/GPS + gyro/accelerometer samples)

Animation / frames#

ModuleHandlesNotes
gif-frames.jsGIF frame-by-frame decodeHand-written LZW decoder + disposal/transparency/interlace compositing; pure logic, no DOM
gif-encode.jsAnimated-GIF re-encodingMedian-cut quantisation + custom GIF-variant LZW writer; used by the reverse-playback download feature
webp-frames.jsAnimated WebP frame decodeUses the browser's ImageDecoder (WebCodecs) rather than hand-rolled VP8/VP8L decoding
lottie.jsLottie/Bodymovin JSON vector animation playerPlays via vendored lottie-web; handles plain .json, dotLottie .lottie ZIPs, and Telegram .tgs gzip stickers

Documents#

ModuleHandlesNotes
pdf.jsPDF viewerLazy-loads pdf.js; metadata, text, page thumbnails
paged.jsShared "page preview" presentationMirrors the PDF page experience for formats with no native page geometry (Word/ODF text, spreadsheets, presentations)
djvu.jsDjVu scanned-document viewerVendored pure-JS DjVu.js; decodes pages to ImageData, paints to canvas with prev/next paging
docx.jsDOCX (OOXML) viewerMetadata, formatted text, tables, text extraction
xlsx.jsXLSX (OOXML) viewerEach worksheet as a table with sheet tabs and metadata
xlsb.jsExcel Binary Workbook viewerVendored SheetJS community build decodes BIFF12, rendered with the same table UI as xlsx.js
pptx.jsPPTX slide viewerEach slide as a card: title + body text and embedded images, in order
odf.jsOpenDocument viewer (ODT/ODS/ODP)Converts content.xml into the shared paged.js presentation, reusing the DOCX/XLSX/PPTX-style views
legacy-office.jsLegacy binary Office (DOC/XLS/PPT 97-2003)OLE2/CFBF containers; best-effort text extraction (Word FIB piece table) shown via the page-sheet preview
textdoc.jsText and lightweight-markup familyRTF (control words stripped), AbiWord, FictionBook, HWPX, MHTML, plus DITA/TEI/JATS/reStructuredText/AsciiDoc/Org/Textile/TeX/BibTeX as selectable source
iwork.jsApple iWork viewer (Pages/Numbers/Keynote)Shows the baked-in QuickLook preview (Preview.pdf via pdf.js, or the largest thumbnail) - iWork's real content (Snappy-compressed protobuf) isn't reconstructable
epub.jsEPUB readerMetadata, cover, chapter-by-chapter reading with navigation
mobi.jsKindle/Mobipocket e-book readerVendored foliate-js mobi.js decodes MOBI6/KF8; section-by-section sandboxed-iframe reader
mdb.jsMicrosoft Access database viewerVendored mdb-reader; lists tables with columns/row counts + sample rows
notebook.jsJupyter notebook (.ipynb) viewerRenders markdown/code/raw cells with captured outputs (text, images, errors)
markdown.jsMarkdown rendererSelf-contained CommonMark-ish + GFM parser (headings, tables, task lists, fenced code); all text HTML-escaped

Design / CAD / 3D#

ModuleHandlesNotes
svg.jsSVG inspectorRenders at actual size; stats, element counts, colour palette, text content; strips active/unsafe content
illustrator.jsAdobe Illustrator (.ai) viewerModern .ai is PDF-compatible, opens via pdf.js; older EPS-based .ai falls back to identification
psd.jsPhotoshop PSD/PSB viewerLightweight header read (dimensions, colour mode, embedded thumbnail) plus a full composite render + layer tree
paint.jsKrita/Procreate raster appsReads the baked-in flattened preview (mergedimage.png / Thumbnail.png); per-layer data isn't reconstructable
diagram.jsdraw.io/diagrams.net and DXF vector diagramsDecodes mxGraph XML (incl. deflate+base64) or DXF entities to an SVG preview
lut.jsColour LUT (.cube) viewer + visualiserParses Adobe/Iridas/Resolve LUT text format; also handles .look Adobe SpeedGrade grade stacks
font.jsFont specimen viewer (TTF/OTF/WOFF/WOFF2/TTC)Live FontFace API specimen (true rendering, variable-font axis sliders) plus vendored opentype.js for glyph grid/metadata
stl.jsSTL 3D viewerParses binary+ASCII STL; self-contained WebGL viewer (orbit/zoom/spin) with geometry stats
model3d.js3MF / STEP / IGES / OBJ / PLY / glTF / FBX viewer3MF parsed natively (fflate+regex); STEP/IGES tessellated via lazy OpenCASCADE WASM; shares stl.js's WebGL viewer
gcode.jsUniversal G-code analyser & 3D reconstructorParses slicer and CNC/CAM G-code dialects; reconstructs deposited filament (not just centreline) in an interactive WebGL viewer
unity.jsUnity asset viewerParses Unity's YAML object-stream dialect (scenes, prefabs, materials, animators, .meta)
dwg.jsAutoCAD DWG viewerVendored libredwg-web (WASM, lazy) parses the drawing to an entity database, rendered as an SVG 2D preview
solidworks.jsSolidWorks part/assembly/drawing readerOlder files (OLE2) expose a render preview + metadata; modern encrypted files are identify-only
f3d.jsAutodesk Fusion 360 (.f3d/.f3z) readerZstd-compressed ZIP; shows the baked thumbnail + manifest/contents - the proprietary BREP geometry isn't reconstructable

EDA / NLE#

ModuleHandlesNotes
altium.jsAltium Designer schematic/PCB/library viewerOLE2 Compound Files (shared cfbf.js reader), rebuilt as an interactive vector view
kicad.jsKiCad schematic/PCB/library/project viewerS-expression text format (KiCad 6-9), rebuilt as an interactive vector view
spice.jsSPICE/LTspice raw waveform viewerBinary or ASCII .raw dumps from ngspice/LTspice; parses header key/value block + sample data
ipcnet.jsIPC-D-356(A) fabrication/test netlist viewerFixed-column text format: parameter lines + one feature record per test point
aftereffects.jsAdobe After Effects project (.aep) viewerReverse-engineered RIFX (big-endian RIFF) chunk-list parser rebuilding comp timelines
premiere.jsAdobe Premiere Pro project (.prproj/.prel) viewerGzip-compressed XML object graph (ObjectID/ObjectUID references) rebuilt into sequences
davinci.jsDaVinci Resolve project (.drp/.drt) viewerZIP of exported XML documents; rebuilds each timeline's track/clip layout
vegas.jsSony/MAGIX VEGAS Pro project (.veg/.vf) viewerRIFF-GUID container; per-event/track layout keyed by undocumented GUIDs, so recoverable metadata is surfaced rather than a full timeline
timeline.jsEditing-timeline viewer (EDL/FCPXML/OTIO)Normalises the standard NLE interchange formats into one visual tracksĂ—time clip view

Data / archive#

ModuleHandlesNotes
csv.jsCSV/TSV previewDelimiter detection, quoted-field parsing, per-column type inference, numeric stats, first-100-row preview
gcsv.jsGyroflow .gcsv IMU log viewerParses the generic IMU-log interchange text format (gyro/accelerometer traces)
dataview.jsHAR / JSON5-JSONC-Hjson / .nfo text-art viewersThree lightweight viewers sharing a "show what people care about" goal
gitobject.jsGit object viewerLoose objects inflated with the browser's DecompressionStream (no library); pack files/indexes read for header info
email.jsEmail message viewer (.eml/.emlx/.mbox)Parses RFC 822/MIME headers (RFC 2047 decoding) and walks the MIME tree for a displayable body
archive.jsZIP archive inspectionLazy-loads fflate; shares folder-archive-shared.js for treemap/breakdown/tree views
zip.jsShared ZIP readerCentral-directory-first reads with ranged fetches per entry (order-independent, no full-file load); sequential fallback for truncated archives
folder.jsDropped-folder overviewRecursive webkitGetAsEntry walk; treemap + summary via the shared folder/archive modules
treemap.jsNested squarified treemap (WizTree-style)Canvas-based, files sized by bytes and coloured by category, with hover tooltips and click-to-analyse
folder-archive-shared.jsShared folder/archive helpersCategory classification, breakdown cards, view toggle (treemap/tree), used by folder.js and archive.js
comic.jsComic book archive viewer (CBZ/CBR/CBT/CB7)Metadata card + page-thumbnail grid + lightbox reader; CBZ is ZIP, CBT is TAR, CBR/CB7 via lazy libarchive WASM
midi.jsStandard MIDI File (.mid/.midi) readerHand-written SMF parser: tempo map, time/key signature, track names, GM instruments, note counts - no playback
subtitles.jsSubtitle files (SRT/WebVTT/ASS/SSA/MicroDVD/SubViewer)Parses cues into a timed list with counts/timing/styling; sniffs which format an overloaded .sub actually is
lrc.jsLRC timed-lyric filesParses ID tags and timestamped lines, including word-level enhanced tags
geo.jsGeospatial files (GPX/KML/GeoJSON)Tracks/placemarks/features with distance/bounds/time span; plotted on lazy-loaded Leaflet/OSM
tablekit.jsTable-analysis workbenchMounted below CSV/XLSX/XLSB/ODS analyses: virtualised grid, stats bar, hand-drawn chart builder, PNG/JSON/CSV export
vssolution.jsVisual Studio solution (.sln/.slnx) manifest viewerLine-based text parser for projects + build configurations

Cross-cutting / fallback / infrastructure#

ModuleHandlesNotes
unknown.jsUnknown-file inspector (fallback renderer)Magic-byte format guess, hex/ASCII dump, SHA-256, enhanced previews for text/JSON/XML; can hand off to photo-recover.js
proprietary.jsProprietary-format identificationIdentifies 200+ formats by extension/magic bytes; dispatches to lazy parsers/parsers-<chunk>.js modules for deeper metadata
proprietary-formats.jsProprietary format catalog (data only)The FORMATS table proprietary.js drives; pure data, no logic
compare.js/compare two-file side-by-side viewRuns each file through its normal renderer off-screen, merges readout cells into Field | A | B tables

See docs/features/*.md for the user-facing usage detail behind each of these modules, and parsers-and-libs.md for the lazy parser chunks and shared binary/WASM helpers they depend on.