document-svg
Preview documents and technical drawings as SVG pages in your application.
A Rust library and CLI with Node.js and Python bindings. Convert PDF, PowerPoint, Excel, Word and draw.io files into one SVG per page, display them in a browser, and inspect conversion warnings before sharing the result.
日本語 · 简体中文预览指南 · Examples · Releases
Project site (English / 日本語 / 中文) — use cases, the full format map, and a live sample gallery
Available on npm for Node.js,
PyPI for Python, and
crates.io for Rust and the docsvg CLI.
What you can do
| Task | API or command |
|---|---|
| Get SVG strings for an application preview | Node.js preview(), Python preview() |
| Save a document as SVG pages | docsvg, Rust convert_path(), Node/Python convert() |
| Optimize or transform SVG markup | docsvg transform, Node/Python transform() |
| Display an SVG in your frontend | document-svg/preview-ui |
| Copy an SVG image or its source | copySvgToClipboard() |
| Put SVG pages into an Office or CAD file | docsvg reverse, Node/Python reverse() |
Supported inputs include PDF/FDF/XFDF form data (.fdf, .xfdf), legacy Word Binary .doc/.dot, text-only legacy PowerPoint Binary .ppt, Microsoft Project XML (.xml with the Project namespace; .mspdi alias), generic XML (.xml fallback), legacy Excel .xls and binary Excel .xlsb, legacy Visio Binary .vsd/.vss/.vst/.vsw, Autodesk DWG (.dwg) and Rhino/OpenNURBS 3DM (.3dm), Microsoft Access (.accdb, .accde, .mdb, .mde), Dassault 3DXML (.3dxml), Apple iWork Pages/Numbers/Keynote (.pages, .numbers, .key), SYLK spreadsheets .slk and DIF interchange tables .dif, Office Open XML Transitional/Strict and Flat OPC single-XML packages (.flatopc, .fopc, .flatopc.xml) (including Visio .vsdx, .vsdm, .vstx, .vstm and legacy XML .vdx), Apple iWork packages (.pages, .numbers, .key), Autodesk DWG (.dwg) and Rhino/OpenNURBS 3DM (.3dm), Microsoft Access (.accdb, .accde, .mdb, .mde), Dassault 3DXML (.3dxml), RTF, iCalendar .ics/vCalendar .vcs, vCard contact files .vcf, MIME e-mail .eml, Apple Mail messages .emlx, Outlook .msg and mailbox archives .mbox, MHTML web archives (.mht, .mhtml), XPS/OpenXPS/DWFx (.xps, .oxps, .dwfx), OpenDocument Text, spreadsheets, presentations, and drawings (.odt, .ott, .fodt, .sxw, .stw, .sxg, .ods, .ots, .fods, .sxc, .stc, .odp, .otp, .fodp, .sxi, .sti, .odg, .otg, .fodg, .sxd, .std), HTML, DocBook (.dbk, .docbook), DITA topics/maps (.dita, .ditamap), HWPX (.hwpx), XMind (.xmind), NIfTI (.nii, .nii.gz), FITS (.fits, .fit, .fts, .fits.gz), MRC (.mrc, .map, .mrc.gz), SQLite (.sqlite, .sqlite3, .db), mmCIF/PDBx (.cif, .mmcif), Tripos MOL2 (.mol2), RDF Turtle/N-Triples (.ttl, .nt, .nq), EPS/PostScript (.eps, .ps), EPUB, FictionBook 2 (.fb2, .fb2.zip), PalmDOC/MOBI (.mobi, .prc), JATS article XML (.jats, .nxml), TEI P5 scholarly XML (.tei, .tei.xml), ALTO OCR/layout XML (.alto, .alto.xml), METS archive XML (.mets, .mets.xml), MARCXML (.marcxml, .marc.xml), MARC21 ISO 2709 (.marc, .iso2709), MODS XML (.mods, .mods.xml), CBZ comic archives, SubRip/WebVTT/TTML subtitles, Jupyter notebooks (.ipynb), Quarto/R Markdown (.qmd, .Rmd, .rmarkdown), Markdown and plain text, AsciiDoc, reStructuredText (.rst, .rest), Org-mode (.org), XLIFF localization files (.xlf, .xliff), GNU gettext translation catalogs (.po, .pot), BibTeX bibliographies (.bib, .bibtex), PDB coordinate models (.pdb, .ent), FASTA/FASTQ, GFF3/GTF, BED/BEDGraph, VCF, SAM, WIG, MAF, Newick, Stockholm, CLUSTAL and NEXUS bioinformatics files (.fa, .fastq, .gff3, .bed, .vcf, .sam, .wig, .maf, .nwk, .sto, .aln, .nex), GenBank flat files (.gb, .gbk, .genbank), EMBL-Bank flat files (.embl, .emb), UniProtKB/Swiss-Prot protein flat files (.dat, .uniprot, .swissprot), RIS bibliography (.ris), SPICE/ngspice netlists (.cir, .sp, .spice, .ckt, .net), KiCad legacy Eeschema schematics (.sch), KiCad 6+ S-expression schematics (.kicad_sch), LTspice schematics (.asc with Version signature), Autodesk EAGLE XML schematics (.sch with eagle signature), V2000 and core V3000 MOL/SDF chemical structures plus V2000 RXN reactions (.mol, .sdf, .sd, .rxn), diagrams (draw.io, GraphML (.graphml), GEXF (.gexf), XGMML (.xgmml), Graph Modeling Language (.gml), BPMN 2.0, CMMN 1.1, DMN 1.5, ReqIF 1.0.1/1.2, XMI 2.1–2.5, DOT, Mermaid, PlantUML, D2, Excalidraw), tables and graphics (OpenAPI/Swagger (.openapi.json, .swagger.json, .openapi.yaml, .swagger.yaml), AsyncAPI (.asyncapi.json, .asyncapi.yaml, .asyncapi.yml), JSON Schema (.schema.json, .jsonschema, .schema.yaml, .schema.yml), HAR (.har), WARC (.warc, .warc.gz), WACZ (.wacz), Postman Collection v2.1 (.postman_collection.json), GraphQL SDL (.graphql, .graphqls, .gql), Protocol Buffers (.proto), Kubernetes (.k8s.yaml, .k8s.yml, .kubernetes.yaml, .kube.yaml), Docker Compose (compose.yaml, compose.yml, docker-compose.yaml, docker-compose.yml), GitHub Actions workflows (.github/workflows/*.yaml, .github/workflows/*.yml), JUnit XML reports (junit.xml, test-results.xml, TEST-*.xml), SARIF 2.1.0 reports (.sarif, .sarif.json), Terraform JSON plans (tfplan.json, .tfplan.json), CycloneDX BOMs (bom.json, bom.xml, *.cdx.json, *.cdx.xml), SPDX JSON/tag:value (spdx.json, sbom.spdx.json, *.spdx.json, .spdx, .spdx.txt), JaCoCo/Cobertura coverage XML (jacoco.xml, cobertura.xml, coverage.xml), LCOV tracefiles (.info, lcov.info, coverage.info), JSON Patch (.jsonpatch, .json-patch, .patch.json), JSON Merge Patch (.mergepatch, .json-merge-patch, .merge-patch.json), CSL-JSON (.csl.json, .csl-json, .cite.json), JSON Feed (.jsonfeed, .json-feed, .feed.json) and CloudEvents JSON (.cloudevent.json, .cloud-event.json, .cloudevents.json, .ce.json, .cloudevent, .cloudevents) and FHIR JSON (.fhir.json, .fhirjson, .fhir, .bundle.fhir.json, .fhir-bundle.json) and Avro JSON schemas (.avsc, .avpr, .avro.json, .avro-schema.json) and OTLP JSON (.otlp.json, .otlp.trace.json, .otlp.metrics.json, .otlp.logs.json) and OCEL JSON (.jsonocel, .ocel.json, .ocel-json) and JSON:API (.jsonapi, .json-api.json, .jsonapi.json), NetCDF classic (.nc, .nc3, .cdf), HDF5/CGNS (.h5, .hdf5, .hdf, .h5part, .cgns) and Exodus II (.e, .exo, .ex2, .ex2m, .exii), ARFF (.arff), JSON-LD (.jsonld, .json-ld), CSV/TSV, generic JSON (.json), TOML configuration (.toml), YAML 1.2 configuration (.yaml, .yml), Java Properties (.properties), RFC 7464 JSON Text Sequences (.jsons, .jsonseq, .jsonl), GeoJSON, RFC 8142 GeoJSON Text Sequences (.geojsons, .geojsonl), TopoJSON (.topojson), GeoRSS, GPX, GML, KML/KMZ, ESRI ASCII Grid rasters (.asc), dBASE III/III+ attribute tables (.dbf), GeoPackage vector and raster-tile maps (.gpkg), ESRI Shapefile map data (.geojson, .rss, .atom, .georss, .gpx, .gml, .kml, .kmz, .shp), WKT/EWKT geometry (.wkt, .ewkt), chart JSON, LaTeX math, QR, raster PNG/JPEG/BMP/GIF/WebP, Netpbm PBM/PGM/PPM/PAM (.pbm, .pgm, .ppm, .pnm, .pam), and standalone JPEG 2000 (.jp2, .j2k, .j2c, .jpc, .jpx) images including multi-page TIFF), SVG/SVGZ, and technical formats (OpenSCAD .scad, AMF .amf, PLMXML .plmxml/.plm.xml, STEP-XML .stepxml/.stpx, QIF .qif/.qif.xml, TMX .tmx/.tmx.xml, TBX .tbx/.tbx.xml, gbXML .gbxml/.gbxml.xml, FHIR XML .fhir.xml/.fhirxml, Adobe IDML .idml, XPDL .xpdl/.xpdl.xml, ONIX .onix/.onix.xml, OAI-PMH .oaipmh/.oai.xml, CDA .cda/.cda.xml, ISO 20022 .iso20022.xml/.pain.xml/.pacs.xml/.camt.xml, SBML .sbml, CellML .cellml, OCEL XML .xmlocel, EnergyPlus IDF .idf, EnergyPlus EPW .epw, RINEX .rnx/.obs/.nav, ACIS SAT .sat, SED-ML .sedml, SBGN-ML .sbgnml, COMBINE/OMEX .omex, XDMF .xdmf, VTK PVD .pvd, FDS .fds, AbiWord .abw, NeuroML .nml, BioPAX .biopax, XML Schema .xsd, XSLT .xsl/.xslt, XSL-FO .fo/.xslfo, ANSYS CDB .cdb, Abaqus .inp, LS-DYNA Keyword .k/.key, Nastran Bulk Data .bdf/.nas, UNV/UFF .unv, MEDIT .mesh/.meshb, SU2 CFD meshes .su2, OpenFOAM polyMesh cases .foam, ASAM OpenDRIVE road networks .xodr, ASAM OpenSCENARIO scenarios .xosc, Tecplot ASCII CAE meshes .dat/.tec, EnSight Gold ASCII cases .case/.geo, PLOT3D ASCII structured grids .p3d/.plot3d/.p3, VRML97 meshes .wrl/.vrml, OFF polygon meshes .off, IFC4 BIM Industry Foundation Classes .ifc/.ifcxml/.ifczip, buildingSMART BCFZIP issue packages .bcfzip, PCL point clouds .pcd, ASCII XYZ point clouds .xyz, ASTM E57 point clouds .e57, Leica PTS/PTX point clouds .pts/.ptx, ASPRS LAS/LAZ point clouds .las/.laz, KiCad PCB boards .kicad_pcb, DXF, Gerber, HP-GL, G-code, Excellon, STL, 3MF, glTF .gltf/.glb, COLLADA .dae, X3D .x3d, STEP, IGES, OBJ, PLY, Gmsh, VTK Legacy/XML .vtk/.vtu/.vtp/.vti/.vtr/.vts). See the format matrix below for extensions and fidelity notes.
DICOM Part 10 image files (.dcm, .dicom) render as PNG-backed SVG pages; DICOM Structured Reports are recognized by their SR SOP Class and rendered as bounded content tables; multiframe objects produce one page per frame. JPEG 2000 Part 1 lossless and general transfer syntaxes are decoded after checking each codestream's declared dimensions, component count, and sample precision against the bounded DICOM attributes.
The media directory file DICOMDIR (or .dicomdir) follows Directory Record offsets and resolves referenced image File IDs inside the directory tree; each referenced frame becomes a page.
Encapsulated PDF Storage objects are recognized by SOP Class and application/pdf MIME type; the bounded embedded stream goes through the same PDF renderer. DICOM patient/study attributes are not copied, but content already in the PDF remains, so this does not de-identify the report.
Reverse export supports PPTX, DOCX, XLSX, draw.io, CAD/CAM/3D (DXF, G-code, Gerber, HP-GL, Excellon, STL, 3MF, OBJ, PLY, STEP, IGES), Gmsh/VTK, DOT/Mermaid, Markdown/CSV, LaTeX, React/Vue/Svelte, HTML, WebP, SVG path data, PNG, and Data URI.
Supported format matrix
Conversions are classified into three fidelity tiers:
- A (Deterministic): 1:1 syntax mapping, exact geometric projection, or lossless metadata round-tripping.
- B (Vectorization): Raster image processing and contour tracing from pixel data.
- C (Heuristic Reconstruction): Structural inference from unannotated 2D geometries (e.g., cell clustering for tables, topological parsing for graphs).
| Format Category | Extensions | Forward (to SVG) |
Reverse (from SVG) |
Description / Fidelity notes |
|---|---|---|---|---|
| Office & Documents | .pdf |
A | A | Evaluates PDF vector streams and annotation appearances; missing FreeText/text/choice-Widget appearances use bounded text fallbacks, checkbox/radio widgets get simple state markers, and password values are masked. Simple grayscale/RGB/CalGray/CalRGB JPX images are preflighted and decoded to PNG, preserving a single embedded alpha channel for SMaskInData=1, supported DeviceGray/DeviceRGB/CalGray/CalRGB matte unblending for SMaskInData=2, and bounded simple external grayscale soft masks. Explicit masks, unsupported matte/color spaces, and other JPX features warn; PDF-level masks may be lost when raw JPEG 2000 data is retained. Layout is approximate. Optional --outline-embedded-pdf-text.Reverse: packaged as a multi-page PDF document with exact MediaBox dimensions and compressed raster imagery. |
.pptx, .docx, .xlsx |
A | A / C | Reads Office Open XML Transitional and ISO/IEC 29500 Strict namespace variants for Word, Excel, and PowerPoint. Forward: slides, sheets, and pages.Reverse: packaged as embedded vector image with PNG fallback (A); semantic shape reconstruction is C. | |
.flatopc, .fopc, .flatopc.xml or content-sniffed Flat OPC |
A | - | Microsoft Flat OPC single-XML Office packages are validated, bounded, reconstructed in memory as DOCX/XLSX/PPTX parts, and rendered by the existing Office engines. XML and base64 parts are confined to an in-memory package; macros, external relationships, URLs, active content and filesystem extraction remain inert. Limits: 128 MiB input, 128 MiB cumulative expanded parts, 100,000 parts, 16 MiB/part and 500,000 XML events. Source: Microsoft Flat OPC API. | |
.aasx or content-sniffed AASX |
A | - | Asset Administration Shell OPC packages. Follows bounded root/origin relationships to locate AAS XML/JSON specification parts, renders shell/submodel/concept/element counts, and reports supplementary-file/thumbnail counts. Identifiers, values, URLs, CAD/manual payloads, signatures and encryption material remain inert. Limits: 128 MiB input and cumulative expanded metadata, 100,000 entries, 16 MiB/part, 500,000 XML events and 300,000 XML nodes. Source: IDTA AASX Part 5. | |
.xml (Microsoft Project namespace), .mspdi |
A | - | Bounded Microsoft Project XML interchange preview: task hierarchy, supplied Start/Finish dates, progress bars, milestones, and simple predecessor arrows. XML is routed only when the root uses the Project namespace; .mspdi is a convenience alias. Calendars, working-time rules, dependency types/lags, resources, and schedule recalculation are omitted. Limits: 64 MiB input, 1,000,000 XML events, 100,000 tasks, 500,000 predecessor links, and 25 tasks per page. |
|
.doc, .dot |
C | - | Legacy Word Binary documents/templates (Word 97–2007 subset) extract the main story from the CFB WordDocument stream and flow it into bounded A4 SVG pages. Piece tables and simple contiguous text are supported. UTF-16 and common compressed code pages are decoded; unknown code pages warn and fall back to Windows-1252. Tables are flattened to cell-separated text. Page layout, styles, images, headers, footnotes, comments, and OLE objects are not reconstructed; encrypted files are rejected and macros are never executed. .dot is routed here only when it is a CFB Word template; text Graphviz .dot remains a diagram input. |
|
.ppt |
C | - | Legacy PowerPoint Binary (97–2003) follows the live edit/persist directory to resolve slides in presentation order and extracts text from OfficeArt textboxes/placeholder references. Text flows onto A4 pages. Slide geometry, styling, images, backgrounds, charts, tables, and embedded media are omitted; encrypted presentations are rejected and macros/external content are never opened or executed. | |
.xls |
A | - | Legacy BIFF Excel workbooks render cached cell values in bounded sheet pages. Hidden worksheets are included. Formula recalculation, cell styling, merged geometry, charts, and drawings are not reproduced; macros are never executed. | |
.xlsb |
A | - | Excel Binary Workbook values are streamed from bounded ZIP parts into worksheet pages. Cached values are shown without formula recalculation. Hidden sheets are included; macros, styles, charts, and drawings are omitted. | |
.slk |
A | - | SYLK/ Symbolic Link spreadsheet records. Cell coordinates and cached values render as bounded paginated tables; formulas are shown as inert annotations and formatting/metadata records are ignored. | |
.dif |
A | - | DIF/Data Interchange Format spreadsheet tuples. TABLE/VECTORS/TUPLES/DATA headers, BOT/EOD rows, numeric/string/status cells render through bounded table pages. Formulas and metadata are inert; dimension declarations do not drive unbounded allocation. | |
.fa, .fasta, .fna, .faa |
A | - | FASTA sequence records. Definition lines, sequence length, GC ratio, ambiguous-base count, and a bounded sequence preview render as inert tables; identifiers are not resolved as paths and no alignment is performed. | |
.fq, .fastq |
A | - | FASTQ sequence plus per-base quality records. Sequence/quality lengths and printable quality bytes are validated; quality ASCII ranges and bounded sequence previews are shown without assuming a Phred encoding or running analysis. | |
.gff, .gff3 |
A | - | GFF3 nine-column genome-feature annotations. Sequence IDs, source/type, 1-based coordinates, score/strand/phase and attributes render as inert tables; directives and embedded ##FASTA sections are omitted. |
|
.gtf |
A | - | GTF nine-column gene/transcript annotations with quoted attributes. Coordinates and attributes render as inert tables; hierarchy, sequence analysis, external links and execution are not performed. | |
.bed |
A | - | UCSC BED3–BED12 genomic intervals. Zero-based half-open coordinates, optional score/strand/thick/itemRgb fields and BED12 block lists render as inert tables; track/browser directives and reference-genome lookups are omitted. | |
.bedgraph, .bg |
A | - | UCSC bedGraph four-column continuous values. Zero-based half-open intervals and finite data values render as bounded tables; track directives and remote tracks are never loaded. | |
.vcf |
A | - | Variant Call Format v4.x. Eight fixed variant columns, optional FORMAT/sample columns, metadata and symbolic alleles render as an inert table. ##reference URLs, genotype interpretation, phasing and embedded FASTA are not resolved or executed; vCard .vcf files remain distinguished by content. |
|
.sam |
A | - | SAM text alignment records. Header lines, 11 mandatory alignment columns, CIGAR syntax, SEQ/QUAL length and optional tags render as inert tables. Reference genomes, CIGAR projection, genotype interpretation and external resources are never loaded. | |
.wig, .wiggle |
A | - | UCSC Wiggle continuous signals. FixedStep and variableStep declarations expand to bounded one-based closed intervals with finite values; track/browser directives and remote track references are omitted. | |
.maf |
A | - | UCSC Multiple Alignment Format blocks. a alignment blocks and s sequence rows render with bounded coordinates, strand, size, score and sequence previews; optional metadata rows remain inert. |
|
.nwk, .newick, .tree |
A | - | Newick phylogenetic trees. Parentheses/comma topology, quoted labels, branch lengths and bounded comments render as a directed graph; only the first tree is previewed and no taxonomy or sequence lookup is performed. | |
.sto, .stockholm |
A | - | Stockholm 1.0 multiple-sequence alignments. Split sequence rows and #=GF/#=GS/#=GC/#=GR annotations are bounded and rendered as inert tables; no profile or sequence database is loaded. |
|
.aln, .clustal, .clustalw |
A | - | CLUSTAL block alignments. Sequence fragments, optional residue counts and consensus rows are validated and rendered as inert tables; no alignment calculation or external lookup is performed. | |
.nex, .nexus |
A | - | NEXUS phylogenetic tree blocks. The first TREE/UTREE statement is rendered through the bounded Newick graph parser; TAXA and TRANSLATE metadata remain inert. |
|
.gb, .gbk, .genbank |
A | - | GenBank flat-file records. LOCUS, DEFINITION, ACCESSION, feature counts, and bounded ORIGIN sequence previews render as inert tables; accessions and feature locations are never resolved. | |
.embl, .emb |
A | - | EMBL-Bank flat-file records. ID, AC, DE, FT feature counts, and SQ sequence previews render as inert tables; cross-references and feature locations are never resolved. | |
.dat, .uniprot, .swissprot |
A | - | UniProtKB/Swiss-Prot protein flat files. Entry/review status, accessions, protein/gene/organism metadata, feature counts, and SQ sequence previews render inertly; cross-reference links are not followed. | |
.ris |
A | - | RIS citation records. TY/ER, title, authors, dates, journal, pages, DOI, URL, keywords and abstract text render as inert bibliography rows; DOI/URL links are never fetched. |
|
.csl.json, .csl-json, .cite.json or content-sniffed CSL-JSON |
A | - | Citation Style Language JSON bibliography items render ID, type, title, author/editor, publication year and DOI/URL presence. Styles/locales, abstracts, DOI/URL resolution and external resources remain inert; values are not executed. Source: CSL-JSON schema. | |
.cir, .sp, .spice, .ckt, .net |
A | - | SPICE/ngspice circuit netlists. Element cards, node names, values and source lines render as inert tables; dot commands, .include paths and simulation controls are never executed. |
|
.xlsm, .xltx, .xltm.docm, .dotx, .dotm.pptm, .potx, .potm, .ppsx |
A | A / C | Extended Office formats (macro-enabled, templates, slide shows) mapped to respective OOXML engines. | |
.rtf |
A | - | RTF Unicode escapes, ANSI text, paragraphs, explicit page breaks, and bounded embedded PNG/JPEG pictures. Declared goal dimensions are used when present; picture anchoring, crop and wrapping are approximated. Other picture types and objects are omitted with warnings. | |
.eml |
A | - | RFC 5322/MIME e-mail; displays common headers and the first safe HTML body or plain-text body, including RFC 3676 flowed-text joining. Bounded PNG/JPEG parts referenced by Content-ID are embedded; exact Content-Location matches are accepted in the same or an enclosing multipart/related. CSS/layout is approximated, other attachments are omitted, and external resources are never fetched. |
|
.emlx |
A | - | Apple Mail single-message wrapper; the decimal byte count isolates the bounded RFC 5322/MIME message, then the usual safe e-mail preview is rendered. The trailing property list is ignored and reported; it is never parsed or executed. | |
.msg |
A | - | Outlook CFB message; displays subject, sender/recipient fields, and safe HTML or plain-text body. Scripts, remote image URLs, transport headers, and attachment payloads are omitted; the bounded CFB reader does not extract attachments. | |
.mbox |
A | - | RFC 4155 mailbox archives; renders each full From_-separated message as sequential SVG pages with the same header/body and attachment limits as .eml. |
|
.ics |
A | - | RFC 5545 iCalendar calendars; one page per VEVENT/VTODO/VJOURNAL/VFREEBUSY component. Folded content lines and text escapes are decoded; recurrence and time-zone rules are displayed without expansion or conversion. | |
.vcs |
A | - | Legacy vCalendar 1.0 contacts/events; bounded previews of VEVENT/VTODO components reuse the safe calendar renderer. Unsupported reminders/properties are warned and omitted; alarms and external resources are not executed or fetched. | |
.vcf, .vcard |
A | - | vCard 2.1/3.0/4.0 contact files; one page per card with formatted/structured names, organization, communication fields, addresses, notes, and URLs. vCard 2.1 quoted-printable and CHARSET parameters are decoded. PHOTO/LOGO/KEY and other media are omitted without fetching external resources. | |
.xps, .oxps, .dwfx |
A | - | OPC fixed-page print documents and Autodesk DWFx (XPS-compatible) packages; reads fixed-document order, solid-color vector paths, Canvas transforms/opacity, Unicode Glyphs, and embedded PNG/JPEG ImageBrushes clipped to Path bounds. Embedded fonts, exact glyph advances, gradients, tiled/cropped brush mapping, resource dictionaries, and classic DWF payloads have explicit fallback or omission warnings. | |
.html, .htm |
A | A | Semantic multi-page HTML typesetter (headings, paragraphs, lists, code blocks, tables, CJK Kinsoku Shori). Relative same-directory-tree PNG/JPEG <img> references, including the first srcset candidate when src is absent, are embedded as centered flow blocks; CSS sizing/wrapping and responsive candidate selection are approximated, and remote, escaping, or unsupported image resources are omitted with warnings.Reverse: standalone responsive HTML5 viewer with dark-mode support and centered layout. |
|
.mht, .mhtml |
A | - | MIME web archives; honors the multipart/related start root (or the first part when omitted) and renders its HTML through the safe subset. Bounded PNG/JPEG images referenced by Content-ID or URI-resolved Content-Location in the same or an enclosing related structure are embedded; HTML srcset uses its first candidate when src is absent. HTML <base href>, MIME Content-Base/Content-Location, and the thismessage:/ fallback resolve relative URIs; CSS, scripts, unmatched resources, and other attachments are omitted. |
|
.epub |
A | - | Electronic book EPUB packages (container XML, OPF package manifest, spine XHTML flow); package-linked PNG/JPEG <img> resources, including the first srcset candidate when src is absent, are embedded with bounded input, pixel and URI budgets, while remote, CSS, SVG and other image resources are omitted with warnings. |
|
.fb2, .fb2.zip |
A | - | FictionBook 2 XML e-books, including ZIP-wrapped single-book distributions; first main body/section flow, title/author metadata, paragraphs, headings, tables, and embedded base64 PNG/JPEG <binary> images referenced by xlink:href are rendered. Notes bodies, external links, unsupported binary media, macro execution, and exact reader layout are omitted or warned. XML/image/resource limits apply. |
|
.mobi, .prc, .azw |
A | - | PalmDOC/MOBI e-books and non-DRM AZW-compatible records; bounded Palm Database record offsets, uncompressed and PalmDOC LZ77 text records, UTF-8/Windows-1252 decoding, and safe HTML-like body preview. Huff/CDIC compression, DRM/encryption, image records, scripts, CSS, links, KF8-specific structures, and exact reader layout are not decoded. | |
.jats, .nxml |
A | - | JATS journal-article XML; bounded metadata, abstract, sections, paragraphs, captions, simple tables, and local PNG/JPEG graphic/inline-graphic assets. External links, MathML evaluation, publisher extensions, and exact journal layout are approximated or omitted. |
|
.tei, .tei.xml or content-sniffed TEI P5 |
A | - | TEI P5 scholarly XML renders bounded teiHeader title/author/date metadata and text/body divisions, headings, paragraphs, notes, lists, figures and table-cell counts. Targets, URLs, facsimiles, identifiers, external images, scripts and entities are omitted; no linked resource or document code runs. Limits: 64 MiB input, 1,000,000 XML events, 500,000 nodes, depth 128 and 200,000 rows. Source: TEI P5 Guidelines. |
|
.alto, .alto.xml or content-sniffed ALTO XML |
A | - | ALTO OCR/layout XML renders bounded page, text-line, OCR-string and word-confidence rows. Source-image filenames, URLs, styles, alternatives and processing details are omitted; images, scripts and external resources are never opened. Limits: 64 MiB input, 1,000,000 XML events, 500,000 nodes, depth 96 and 200,000 rows. Source: Library of Congress ALTO. | |
.mets, .mets.xml or content-sniffed METS XML |
A | - | METS archive XML renders fileSec/fileGrp/file MIME and size metadata plus logical/physical structMap div hierarchies and fptr/mptr counts. FLocat/MDRef URLs, embedded payloads, ALTO/image files, scripts and external resources are omitted and never followed. Limits: 64 MiB input, 1,000,000 XML events, 500,000 nodes, depth 96 and 200,000 rows. Source: Library of Congress METS. | |
.marcxml, .marc.xml or content-sniffed MARCXML |
A | - | MARC 21 XML collections/records render leader, controlfield, datafield, subfield code and safe value rows with record/field counts. 856 and other URL values are omitted, identifiers and extension payloads remain inert, and no catalog/schema/network operation runs. Limits: 64 MiB input, 1,000,000 XML events, 500,000 nodes, depth 96 and 200,000 rows. Source: Library of Congress MARCXML. | |
.mods, .mods.xml or content-sniffed MODS XML |
A | - | MODS 3.x collections/records render title/subtitle, personal/corporate names, publisher/date, genre, subject, identifier and location structure. Authority/value/location URLs, notes, arbitrary extension values and external resources are omitted or redacted; no catalog, schema or network operation runs. Limits: 64 MiB input, 1,000,000 XML events, 500,000 nodes, depth 96 and 200,000 rows. Source: Library of Congress MODS. | |
.marc, .iso2709 or content-sniffed MARC21 ISO 2709 |
A | - | MARC21 binary leader/directory records render control fields, data-field indicators, subfield codes and bounded safe values. 856/URL values and unrecognized payloads are omitted, record boundaries and offsets are validated, and no catalog/schema/network operation runs. .mrc remains reserved for MRC/CCP4 microscopy volumes. Limits: 64 MiB input, 100,000 records, 500,000 fields, 1,000,000 subfields and 200,000 rows. Source: MARC 21 record structure. |
|
.premis, .premis.xml or content-sniffed PREMIS XML |
A | - | PREMIS 2.x/3.0 preservation metadata renders object, event, agent and rightsStatement types, safe dates/names and relationship counts. Checksums, URIs, rights text, detailed event payloads, external resources and preservation actions are omitted or redacted; no application or network operation runs. Limits: 64 MiB input, 1,000,000 XML events, 500,000 nodes, depth 96 and 200,000 rows. Source: Library of Congress PREMIS. | |
.iiif.json, .iiif-manifest.json, .manifest.json or content-sniffed IIIF Presentation 2/3 |
A | - | IIIF Manifest/Collection labels, Canvas order/labels/dimensions, painted image counts, annotation counts, ranges and metadata-entry counts render as inert rows. Manifest IDs, image/service URLs, thumbnails, annotation bodies and external resources are omitted and never fetched. Limits: 64 MiB input, depth 100, 300,000 JSON values, 100,000 Canvases, 300,000 annotations and 200,000 rows. Source: IIIF Presentation API 3.0. | |
.ead, .ead.xml or content-sniffed EAD2/EAD3 |
A | - | Encoded Archival Description finding aids render repository/title metadata and bounded archival component (c/c01–c12) levels, titles, dates and counts. Digital-object URLs, identifiers, scope text, external images, scripts and entities are omitted; no archival resource is opened. Limits: 64 MiB input, 1,000,000 XML events, 500,000 nodes, depth 128 and 200,000 rows. Source: Library of Congress EAD. |
|
.eac-cpf, .eac-cpf.xml, .eac or content-sniffed EAC-CPF |
A | - | EAC-CPF authority records render entity type, identity name entries, existence-date/description counts and CPF/resource/function relation counts. Authority IDs, URIs, biographies, relation targets and external resources are omitted or redacted; no authority lookup or network operation runs. Limits: 64 MiB input, 1,000,000 XML events, 500,000 nodes, depth 96 and 200,000 rows. Source: EAC-CPF Tag Library. | |
.dc.xml, .dublin.xml, .dublin-core.xml or content-sniffed Dublin Core XML |
A | - | DCMI metadata elements render title, creator, subject, publisher, date, type, format and language values with field counts. Identifier/relation/rights/description payloads and URLs are omitted or redacted; no OAI-PMH, catalog, schema or network operation runs. Limits: 32 MiB input, 500,000 XML events, 300,000 nodes, depth 80 and 100,000 rows. Sources: DCMI XML guidelines, DCMES 1.1. | |
.iso19115, .iso19115.xml, .iso19139, .gmd.xml or content-sniffed ISO 19115/19139 XML |
A | - | ISO 19115 geographic metadata encoded as ISO 19139 XML renders bounded identification title/date/topic, hierarchy/language, CRS codes, geographic bounding boxes, quality/distribution sections, and link/contact counts. Abstract/lineage text, identifiers, contact payloads and online-resource URLs are omitted or redacted; no network retrieval or CRS transformation runs. Limits: 64 MiB input, 1,000,000 XML events, 500,000 nodes, depth 96 and 200,000 rows. Sources: ISO 19115-1, ISO 19115-3 XML implementation. | |
.ubl, .ubl.xml or content-sniffed UBL 2.x XML |
A | - | OASIS Universal Business Language Invoice, Order, CreditNote, DebitNote, Catalogue, transport and related business documents render bounded document type/version, dates/currency, line, party, payment, tax/total, adjustment, reference and attachment counts. Party/addresses, identifiers, item descriptions, amounts, account data, attachment payloads and URLs are omitted or redacted; no schema fetch, script, payment/procurement operation or network access runs. Limits: 64 MiB input, 1,000,000 XML events, 500,000 nodes, depth 128 and 100,000 rows. Source: OASIS UBL 2.4. | |
.xbrl, .xbrl.xml, .xbrli or content-sniffed XBRL 2.1 instance |
A | - | XBRL facts, contexts, units, periods, numeric precision, taxonomy/linkbase reference counts, dimensions, tuples and footnote counts render as bounded rows. Entity identifiers, taxonomy labels, URLs and linkbase payloads are omitted or redacted; no taxonomy/schema/linkbase fetch, formula evaluation, validation or network operation runs. Financial values may be confidential and the preview is not de-identification. Limits: 64 MiB input, 1,000,000 XML events, 500,000 nodes, depth 128, 100,000 contexts/units and 200,000 facts. Source: XBRL 2.1. | |
.landxml, .landxml.xml or content-sniffed LandXML 1.2 |
A | - | LandXML civil/survey exchange documents render version/date/units, surface names with TIN point/face counts, alignment segment counts, survey-point, parcel and pipe-network counts. Coordinate payloads, boundary geometry, design profiles, external schema URLs and survey metadata are omitted; no terrain calculation, stationing, external reference or network operation runs. Limits: 64 MiB input, 1,000,000 XML events, 500,000 nodes, depth 128 and 200,000 rows. Sources: Autodesk LandXML support, Trimble LandXML overview. | |
.mathml, .mathml.xml, .mml or content-sniffed MathML 3 |
A | - | MathML presentation markup renders bounded formula text and counts for tokens, fractions, scripts, roots, fences and matrices/tables. annotation/annotation-xml, mglyph images, URLs, scripts, semantic metadata and external resources are omitted; no symbolic algebra or active content runs. Limits: 32 MiB input, 500,000 XML events, 300,000 nodes, depth 96, 24 MiB text and 20,000 rows. Source: W3C MathML 3. |
|
.xmp, .xmp.xml or content-sniffed Adobe XMP packet |
A | - | XMP RDF metadata renders bounded descriptive title/creator/subject/date/producer/tool/format properties and packet/omitted-property counts. Identifiers, rights/description payloads, thumbnails, URLs, arbitrary private schemas and embedded binary data are omitted or redacted; no schema fetch, metadata reconciliation or external resource access runs. Limits: 32 MiB input, 500,000 XML events, 300,000 nodes, depth 96 and 100,000 rows. Source: Adobe XMP Specifications. | |
.xdp, .xdp.xml or content-sniffed Adobe XDP/XFA package |
A | - | XDP packet structure, template/dataset/config/PDF packet counts, XFA field names and script/event/submit/reference counts render as bounded rows. Field values, embedded PDF/XML/binary packets, URLs, connections and private payloads are omitted; calculate/validate/event logic, XFA layout/recalculation, external resources and PDF rendering never run. Limits: 64 MiB input, 1,000,000 XML events, 500,000 nodes, depth 128 and 100,000 rows. Sources: Adobe PDF/XFA reference, Adobe XFA/XDP overview. | |
.spreadsheetml, .xmlss, .excel.xml or content-sniffed Microsoft Excel 2003 XML SpreadsheetML |
A | - | Workbook/Worksheet/Table/Row/Cell/Data values render as bounded tables with sheet/cell/type/value and formula-presence rows. Styles, charts, drawings, macros, named ranges, external links and formula recalculation are omitted; formulas are never evaluated. Limits: 64 MiB input, 1,000,000 XML events, 500,000 nodes, depth 96 and 200,000 rows. Source: Microsoft SpreadsheetML structure. | |
.cml, .cml.xml or content-sniffed Chemical Markup Language |
A | - | CML molecule/reaction/spectrum XML renders molecule names with atom/bond counts, element distribution and structural counts. Coordinates, charges, property values, dictionaries, conventions, URLs and external resources are omitted; no reaction evaluation, geometry, valence repair or chemical calculation runs. Limits: 64 MiB input, 1,000,000 XML events, 500,000 nodes, depth 128 and 100,000 rows. Source: CML specifications. | |
.rdf, .rdf.xml or content-sniffed RDF/XML |
A | - | RDF/XML descriptions render bounded predicate/literal rows and subject, blank-node and IRI counts. Subject IRIs, resource URLs, nested XML literals, vocabularies and linked resources are omitted or redacted; no URI dereference, schema fetch, inference or SPARQL runs. Limits: 64 MiB input, 1,000,000 XML events, 500,000 nodes, depth 96 and 200,000 rows. Source: W3C RDF 1.1 XML Syntax. | |
.s1000d, .dmodule, .dmodule.xml or content-sniffed S1000D |
A | - | S1000D technical-publication data modules render DMC code attributes, title, issue/security metadata and bounded description/procedure/step/note/list/table text. DM/ICN references, URLs, graphics, XInclude, scripts and external resources are omitted and never resolved. Limits: 64 MiB input, 1,000,000 XML events, 500,000 nodes, depth 128 and 200,000 rows. Source: S1000D. | |
.dbk, .docbook |
A | - | DocBook 4/5 articles and books; bounded titles, sections, paragraphs, lists, source blocks, simple tables, and local PNG/JPEG imagedata/graphic assets. DTDs, XInclude, external links, MathML, scripts, publisher extensions, and exact print typography are omitted or warned. |
|
.dita, .ditamap |
A | - | DITA 1.3 topics and maps; bounded titles, short descriptions, sections, paragraphs, lists, code blocks, simple tables, and local PNG/JPEG image assets. Maps resolve only local topicref targets. Key resolution, DTDs, XInclude, external links, foreign content, and exact publishing layout are omitted or warned. |
|
.hwpx |
A | - | Hancom HWPX/HWPML packages; bounded section paragraphs, simple tables, and package-local PNG/JPEG BinData images. External resources, controls, OLE objects, scripts, unsupported image types, and exact Hancom layout are omitted or warned. | |
.cbz |
A | - | ZIP-based comic archives; PNG/JPEG page images are sorted by natural filename order and embedded one per SVG. Other image formats are skipped with a warning; ComicInfo metadata, EXIF orientation, and image color profiles are not applied. | |
.odt, .ott, .fodt, .sxw, .stw, .sxg |
A | - | OpenDocument Text, templates and legacy OpenOffice Writer XML (old application/vnd.sun.xml.writer* mimetypes) support headings, paragraphs, lists, tables and bounded text styles; package-linked PNG/JPEG images are embedded as centered flow blocks. Exact layout and external resources remain approximate/inert. |
|
.ods, .ots, .fods, .sxc, .stc |
A | - | OpenDocument spreadsheets/templates plus legacy OpenOffice Calc XML (application/vnd.sun.xml.calc*); sheet tables, cached values and bounded package images render while anchors, charts and formulas remain approximate/inert. |
|
.odp, .otp, .fodp, .sxi, .sti |
A | - | OpenDocument presentations/templates plus legacy OpenOffice Impress XML (application/vnd.sun.xml.impress*); slide order, dimensions, common shapes, text and bounded images render while external media remains inert. |
|
.odg, .otg, .fodg, .sxd, .std |
A | - | OpenDocument drawings/templates plus legacy OpenOffice Draw XML (application/vnd.sun.xml.draw*); page order, common shapes and bounded text/images render while external resources remain inert. |
|
.vsdx, .vsdm, .vstx, .vstm, .vdx |
A | - | Visio Open XML and legacy Visio XML drawings/templates; page order, direct ShapeSheet styles, common paths, one-dimensional connector endpoints, and text. Master inheritance, groups, foreign objects, arrowheads, and curved connector routing are omitted or approximated with warnings. External relationships are not fetched and macros are never executed. | |
.vsd, .vss, .vst, .vsw |
A | - | Legacy Visio Compound File Binary drawings/stencils/templates/workspaces are validated and rendered as bounded stream/storage metadata. Opaque ShapeSheet geometry, text, styles, macros, OLE payloads, and external links remain inert. | |
.pages, .numbers, .key |
A | - | ZIP-backed Apple iWork Pages/Numbers/Keynote packages are validated and rendered as bounded package and known-marker metadata. Opaque IWA protobuf records, document text/formulas/slide geometry, previews, embedded media, scripts, and external links remain inert. .key is distinguished from LS-DYNA by ZIP signature. |
|
.dwg |
A | - | Autodesk DWG binary drawings are preflighted from their six-byte AC10xx version header and file size without decoding compressed sections, entities, blocks, layers, proxy graphics, macros, or external references. | |
.3dm |
A | - | Rhino/OpenNURBS 3DM files are preflighted from the stable 3D Geometry File Format marker and bounded file metadata. NURBS/mesh chunks, layers, materials, textures, plug-ins, and external resources remain inert. |
|
.accdb, .accde, .accdr, .mdb, .mde, .mda, .mdt, .accdt, .ade |
A | - | Microsoft Access ACE/Jet database headers are inspected for the engine marker and page-size metadata. Tables, rows, queries, forms, reports, attachments, VBA/macros, linked databases, and encryption payloads remain inert. | |
.3dxml |
A | - | Dassault 3DXML ZIP packages validate the local Manifest→Root relationship and render bounded ProductStructure/Reference3D/Instance3D/Representation counts. Binary 3DRep tessellation, exact geometry, textures, and external resources remain inert. | |
.op2 |
A | - | Nastran Output2 result databases are preflighted from bounded record framing and known table labels such as GEOM1/OUGV1/OES1. Model geometry, element connectivity, result vectors, subcase semantics, external paths, and solver operations remain inert. | |
.ipc2581, .ipc-2581, .cvg |
A | - | IPC-2581 PCB design/manufacturing/assembly/inspection XML is summarized by Content, BOM, ECAD, AVL, board, layer, component, net, route, padstack and feature counts. Coordinates, material values, tool paths, inspection payloads, external references and manufacturing operations remain inert. | |
.jt |
A | - | Siemens JT files are preflighted from the fixed 80-character Version header and byte-order marker. TOC/LSG segments, tessellation, Parasolid XT B-Rep, PMI, attributes and external resources remain inert. | |
.md, .markdown, .txt, .text |
A | A / C | Multi-page Markdown and plain-text documents (headings, lists, code fences, blockquotes, tables, hr) or standalone tables. Standalone and paragraph  PNG/JPEG references embed bounded files within the input directory tree as flow blocks; exact inline positioning is approximated. Other contexts retain alt text.Reverse: heuristic row/column clustering or metadata restore. |
|
.adoc, .asciidoc |
A | - | AsciiDoc technical documentation (section titles, lists, source blocks, tables, paragraphs, and block image::target[attrs] macros). Relative imagesdir PNG/JPEG targets inside the input directory are embedded as centered flow blocks; external/escaping/unsupported images are omitted with warnings, and dimensions, alignment, captions, links, inline images, and other layout are approximated. |
|
.rst, .rest |
A | - | reStructuredText sectioned documents (adorned headings, lists, tables, literal/code blocks, admonitions and bounded local images). File-insertion and raw-output directives are not evaluated. | |
.org |
A | - | Org-mode outlines, TODO headlines, lists, tables, source/example blocks, quote blocks, and bounded local PNG/JPEG file links (#+ATTR_ORG :width N up to 4096 px). Babel code, #+INCLUDE, formulas, and raw export blocks are never executed. |
|
.po, .pot |
A | - | GNU gettext translation catalogs; shows message contexts, source/translated strings, plural forms, notes, and fuzzy status. Format-string directives are treated as text; obsolete entries are omitted. | |
.bib, .bibtex |
A | - | BibTeX bibliography entries; renders type/key and fields such as author/title/year/DOI. Nested braces, quoted fields, and comments are handled. @string macro expansion, BibTeX styles, crossrefs, and TeX execution are not performed. |
|
| Chemical structures | .mol, .sdf, .sd |
A | - | V2000 and core V3000 MOL/SDF atom and bond tables render as one SVG page per molecule. V3000 supports continuation lines, nonsequential atom IDs, CHG, MASS, and simple bond CFG. Coordinates, implicit carbon vertices, element labels, formal charges/isotopes, common bond orders and up/down single-bond wedge/hash marks are shown. SDF data fields, Sgroups, enhanced stereo, query semantics, atom mapping, and chemical calculations are omitted or unsupported. Input, record, atom/bond, page, and SVG-node limits apply. |
.rxn |
A | - | V2000 RXN records render up to two reactants and two products as bounded molecule panels connected by an arrow. Component coordinates and supported bond depiction are reused from MOL/SDF. V3000 RXN containers, reaction conditions, agents, stereochemical reaction logic, and chemical validation are not interpreted. | |
.pdb, .ent |
A | - | Protein Data Bank fixed-column ATOM/HETATM coordinate records; each MODEL becomes a page, optional CONECT records become simple bonds, and element labels are shown. 3D coordinates project onto XY; alternate locations other than blank/A, crystallographic metadata, symmetry, secondary structure, bonds absent from CONECT, and biological assembly semantics are omitted or warned. | |
.srt, .vtt |
A | - | SubRip/WebVTT subtitle cues with normalized start/end timestamps and source-order captions. WebVTT comments and style/region blocks are omitted; cue layout/style is flattened with warnings. WebVTT requires UTF-8; SRT also accepts BOM-marked UTF-16 or Windows-1252 fallback. No external resources or active content are loaded. | |
.ttml, .dfxp |
A | - | Text-profile TTML/DFXP cues; reads paragraph text and media-clock/offset begin, end, and dur timing, including inherited parallel-container begin offsets. Parent-container end/dur clipping is not applied. Styles, regions, animations, image-profile content, and exact layout are omitted with warnings. Sequential timing containers and non-media time bases are rejected. |
|
.xlf, .xliff |
A | - | XLIFF 1.2/2.x localization units show source/target text, language labels, segment state, notes, contexts, and inline-code placeholders. Alternate translations and binaries are omitted; external content is never loaded. | |
| Diagrams | .drawio, .dio, .xml |
A | A / C | mxGraph XML models and stencils.Reverse: 100% editable with --embed-drawio-source (A); otherwise embedded picture (A) or heuristic recovery (C). |
.cmmn |
A | - | CMMN 1.1 case plans render CMMNDI case boundaries, plan-item tasks/milestones, and dotted connectors from explicit Bounds/waypoints. Case-file references, sentries, criteria, lifecycle rules, and expressions remain inert; no case execution occurs. Limits: 32 MiB input, 500,000 XML events, 200,000 XML elements/rendered nodes, depth 80, 100 diagrams/pages, coordinates within ±10,000,000. Source: OMG CMMN 1.1. | |
.graphml |
A | - | GraphML 1.0 graph documents. Nodes, edges, directed/undirected defaults, labels, and common yFiles basic shapes are rendered through the bounded layered diagram layout. Nested/compound nodes, hyperedges, custom key semantics, coordinate preservation, and external resources are omitted or warned; DTDs are rejected. | |
.gexf |
A | - | GEXF 1.3 graph exchange documents, including static node/edge topology, directed/undirected defaults, labels, and namespace-qualified labels. Dynamic spells, attributes, layouts, plugins, compound structures, and external resources are omitted or warned; DTDs are rejected. | |
.xgmml |
A | - | XGMML/Cytoscape graph XML. Graph, node, edge, labels, directed flag, and simple att/graphics diagnostics are handled through the bounded layered diagram renderer. Attribute columns, layout coordinates, nested subgraphs, and external resources are omitted or warned; DTDs are rejected. |
|
.gml (Graph Modeling Language) |
A | - | Bracketed GML graph documents (graph [ ... ]) with node/edge records, labels, comments, and directed flag. The .gml extension is disambiguated from geographic GML XML by content sniffing; arbitrary attributes, graphics coordinates, and non-UTF-8 encodings are omitted or rejected. |
|
.bpmn, .bpmn2 |
A | - | BPMN 2.0 process diagrams render model names and BPMN Diagram Interchange shapes/waypoints for events, tasks, gateways, pools/lanes, and sequence flows. DI coordinates are required. Message flows, data objects, event-definition icons, and process execution are omitted or warned; the model is never executed. Limits: 32 MiB input, 500,000 XML events, 200,000 XML elements/rendered nodes, nesting 80, 100 diagrams/pages, coordinates within ±10,000,000. Source: OMG BPMN 2.0.2. | |
.excalidraw, .excalidraw.json |
A | - | Excalidraw virtual whiteboard scenes (rectangles, ellipses, diamonds, arrows, lines, freedraw, text). | |
.puml, .plantuml |
A | - | PlantUML text diagrams (sequence diagrams, graph diagrams with participants, actors, lifelines). | |
.d2 |
A | - | D2 declarative architecture diagrams (shapes, containers, directed/undirected connections, labels). | |
.dot, .gv |
A | A / C | Graphviz hierarchical layout.Reverse: metadata restore (A) or topological text/edge recovery (C). | |
.mmd, .mermaid |
A | A / C | Flowcharts & sequence diagrams.Reverse: metadata restore (A) or heuristic extraction (C). | |
| CAD / CAM / 3D | .dxf |
A | A | ASCII and AutoCAD Binary DXF, with 2D/3D entities. Forward: 2D/3D entities.Reverse: packages SVG paths and text into AutoCAD R12 DXF. |
.gbr, .gerber, .gtl, .gbl, .gts, .gbs, .gto, .gbo, .gko, .gm1, .gm2 |
A | A | PCB RS-274X apertures/flashes across all standard layer extensions.Reverse: CAM photo-plotter commands. | |
.kicad_pcb |
A | - | KiCad board S-expressions: board/footprint graphics, copper segments/arcs, vias, common pads, and cached zone fills in millimeter coordinates. Images, 3D models, custom pads, complex curves, non-unit scaled footprints, design rules, DRC, and zone refill are omitted; rotated text stays horizontal. | |
.scad or content-sniffed OpenSCAD source |
A | - | Scans OpenSCAD CAD source as inert code, counting modules/functions, primitives, transforms, booleans, assignments and import/use/include references. Geometry, expressions, loops, libraries and external files are never executed or opened. Limits: 128 MiB input, 2,000,000 lines, 1 MiB/line and 100,000 displayed rows. Source: OpenSCAD Language Reference. | |
.amf or content-sniffed AMF 1.2 |
A | - | ISO/ASTM 52915 Additive Manufacturing File Format XML. Object-local vertices and volume triangles are converted to the existing shaded OBJ renderer; units are retained as metadata, while materials, textures, color, lattice, slices and external references remain inert. Limits: 128 MiB input, 500,000 XML events, 300,000 nodes, 2,000,000 vertices and 200,000 triangles. Source: ISO/ASTM 52915. | |
.plmxml, .plm.xml or content-sniffed PLMXML |
A | - | Siemens PLM XML product/assembly documents. Product definitions, parts, structures, instances, representations, construction geometry, attributes and external-reference counts render as inert metadata. XT/Parasolid geometry, IDs, attribute values, URLs and external files remain unopened. Limits: 128 MiB input, 1,000,000 XML events, 500,000 nodes, depth 128 and 200,000 rows. Source: Siemens PLMXML schema. | |
.stepxml, .stpx, .step.xml or content-sniffed STEP-XML |
A | - | ISO 10303-28 STEP-XML/AP242 product-data documents. Common product, product-definition, assembly-occurrence, representation, geometric-item, point, direction, property and external-reference counts render as inert metadata. EXPRESS rules, external schemas, IDs, URLs and referenced CAD geometry are never evaluated or opened. Limits: 128 MiB input, 1,000,000 XML events, 500,000 nodes, depth 128 and 200,000 rows. Source: ISO 10303-28. | |
.qif, .qif.xml or content-sniffed QIF |
A | - | Digital Metrology Standards Consortium Quality Information Framework XML. Product, product-definition, measurement-plan/result, feature, characteristic, datum, traceability and external-file-reference counts render as inert metadata. Measured values, tolerances, IDs, URLs and external CAD/inspection files remain unopened. Limits: 128 MiB input, 1,000,000 XML events, 500,000 nodes, depth 128 and 200,000 rows. Source: QIF overview. | |
.b2mml, .b2mml.xml or content-sniffed B2MML |
A | - | ISA-95/MESA B2MML manufacturing XML. Production schedule/performance/request/response, product, material, equipment, personnel, process-segment, capability, maintenance, transaction and external-reference counts render as inert metadata. Operations, values, credentials, URLs and external resources are never executed or fetched. Limits: 128 MiB input, 1,000,000 XML events, 500,000 nodes, depth 128 and 200,000 rows. Source: B2MML validation schema. | |
.jdf, .jdf.xml, .jmf, .xjdf or content-sniffed JDF/JMF/XJDF |
A | - | CIP4 Job Definition/Messaging Format XML. Job nodes, resources/resource pools/links, processes, products, devices, media, layouts, run lists, audits and file/URL links render as inert metadata. Device commands, production operations, URLs, credentials and linked files are never executed or fetched. Limits: 128 MiB input, 1,000,000 XML events, 500,000 nodes, depth 128 and 200,000 rows. Source: CIP4 JDF/XJDF. | |
.tmx, .tmx.xml or content-sniffed TMX 1.4b |
A | - | Translation Memory eXchange structure and language counts render as inert metadata; segment text, IDs, notes, DTDs, skeleton files and external resources remain omitted. Limits: 128 MiB input, 1,000,000 XML events, 500,000 nodes, depth 128 and 200,000 rows. Source: TMX 1.4b. | |
.tbx, .tbx.xml or content-sniffed TBX/MARTIF |
A | - | ISO 30042 terminology-entry, term, language-set, description and metadata counts render without exposing terms, definitions, IDs or URLs. Limits: 128 MiB input, 1,000,000 XML events, 500,000 nodes, depth 128 and 200,000 rows. Source: ISO 30042 TBX. | |
.gbxml, .gbxml.xml or content-sniffed gbXML |
A | - | BIM/building-energy XML renders Campus, Building, Space, Zone, Surface, Opening, Construction, Material, Schedule and system counts. Geometry, coordinates, formulas, schedules and external resources remain inert. Limits: 128 MiB input, 1,000,000 XML events, 500,000 nodes, depth 128 and 200,000 rows. Source: gbXML current schema. | |
.fhir.xml, .fhirxml or content-sniffed FHIR XML |
A | - | HL7 FHIR resource/Bundle type, entry, contained, narrative and extension counts render as inert metadata. Clinical values, identifiers, narrative XHTML, references and terminology services remain omitted. Limits: 64 MiB input, 1,000,000 XML events, 500,000 nodes, depth 128, 100,000 resources and 100,000 rows. | |
.idml or content-sniffed Adobe IDML |
A | - | InDesign Markup Language ZIP packages render bounded designmap, story, spread, master-spread, text, hyperlink, graphic and resource counts from in-memory XML. IDs, story text, images, fonts, links and external resources remain inert. Limits: 256 MiB input/expanded XML, 100,000 entries, 32 MiB/entry, 20,000 XML parts and 200,000 rows. Source: Adobe IDML specification. | |
.xpdl, .xpdl.xml or content-sniffed XPDL |
A | - | Workflow Process Definition Language XML renders workflow-process, activity, transition, participant, application, data-field and pool/lane counts without executing expressions, scripts or applications. Limits: 128 MiB input, 1,000,000 XML events, 500,000 nodes, depth 128 and 200,000 rows. Source: WfMC XPDL. | |
.onix, .onix.xml, .onix3 or content-sniffed ONIX |
A | - | ONIX for Books messages render release, product, identifier, descriptive/collateral, publishing, supply, contributor, language, subject, price and resource counts without exposing ISBNs, titles, prices, descriptions or URLs. Limits: 128 MiB input, 1,000,000 XML events, 500,000 nodes, depth 128 and 200,000 rows. Source: ONIX specification. | |
.oaipmh, .oai-pmh, .oai.xml or content-sniffed OAI-PMH |
A | - | Open Archives Initiative response envelopes render verb, record, header, metadata, set, error and resumption-token counts; HTTP harvesting, paging, identifiers and payloads remain inert. Limits: 128 MiB input, 1,000,000 XML events, 500,000 nodes, depth 128 and 200,000 rows. Source: OAI-PMH. | |
.cda, .cda.xml, .ccd.xml or content-sniffed HL7 CDA |
A | - | Clinical Document Architecture renders section, entry, observation, act, encounter, procedure, organizer, author, participant, narrative and template counts. PHI, identifiers, narrative XHTML, coded values and references remain inert; this is not de-identification. Limits: 128 MiB input, 1,000,000 XML events, 500,000 nodes, depth 128 and 200,000 rows. Source: HL7 CDA. | |
.iso20022.xml, .pain.xml, .pacs.xml, .camt.xml or content-sniffed ISO 20022 |
A | - | ISO 20022 financial messages render document/header/message, payment, transaction, party, account, amount, date and remittance counts without exposing accounts, names, amounts, identifiers or URLs. Limits: 128 MiB input, 1,000,000 XML events, 500,000 nodes, depth 128 and 200,000 rows. Source: ISO 20022 catalogue. | |
.sbml, .sbml.xml or content-sniffed SBML |
A | - | Systems Biology Markup Language renders level/version, model, compartment, species, reaction, parameter, rule, event, unit, function and annotation counts. Values, MathML equations, IDs and simulations remain inert. Limits: 128 MiB input, 1,000,000 XML events, 500,000 nodes, depth 128 and 200,000 rows. Source: SBML specifications. | |
.cellml, .cellml.xml or content-sniffed CellML |
A | - | CellML models render component, variable, unit, connection/map, import, encapsulation, reset, MathML and annotation counts. Values, equations, IDs, imports and simulations remain inert. Limits: 128 MiB input, 1,000,000 XML events, 500,000 nodes, depth 128 and 200,000 rows. Source: CellML specifications. | |
.xmlocel, .ocel.xml or content-sniffed OCEL XML |
A | - | OCEL 2.0 XML renders event-type, event, object-type, object, attribute, relationship and attribute-type counts. IDs, timestamps, values and process-mining operations remain inert. Limits: 128 MiB input, 1,000,000 XML events, 500,000 nodes, depth 128 and 200,000 rows. Source: OCEL XML. | |
.idf, .energyplus.idf or content-sniffed EnergyPlus IDF |
A | - | EnergyPlus Input Data File object-type/object/field counts render as inert metadata; schedules, formulas, paths, IDD, macros, external weather and simulation remain unopened. Limits: 128 MiB input, 2,000,000 lines, 1 MiB/line, 200,000 objects and 2,000,000 fields. Source: EnergyPlus quick start. | |
.epw, .energyplus.epw or content-sniffed EnergyPlus EPW |
A | - | EnergyPlus Weather File headers and hourly-row structure render bounded counts while location, timestamps, weather values and conversion remain inert. Limits: 128 MiB input, 2,000,000 lines, 1 MiB/line, 100 columns and 2,000,000 hourly rows. Source: EnergyPlus weather documentation. | |
.rnx, .rinex, .obs, .nav, .gnav or content-sniffed RINEX |
A | - | RINEX 2–4 GNSS headers, observation types, epochs, satellite rows and navigation-like records render as inert metadata; station data, coordinates and measurements remain omitted. Limits: 256 MiB input, 5,000,000 lines, 2,000,000 epochs and 20,000,000 satellite rows. Source: IGS RINEX. | |
.sat or content-sniffed ACIS SAT |
A | - | ASCII ACIS body/solid/lump/shell/face/loop/coedge/edge/vertex/surface/transform entity counts render without tessellation or geometry values. Binary SAB and Boolean operations remain inert. Limits: 256 MiB input, 2,000,000 lines, 500,000 entities and 200,000 rows. Source: Autodesk SAT. | |
.sedml, .sedml.xml, .sed-ml.xml or content-sniffed SED-ML |
A | - | Simulation Experiment Description Markup Language renders model/simulation/task/data-generator/output/change/range counts without resolving model paths, MathML or algorithm URIs. No simulation engine runs. Limits: 128 MiB input, 1,000,000 XML events, 500,000 nodes, depth 128 and 200,000 rows. Source: SED-ML. | |
.sbgn, .sbgnml, .sbgn.xml or content-sniffed SBGN-ML |
A | - | SBGN-ML map language, glyph, arc, label, port, box, clone-marker, state, terminal, callout and submap counts render as inert metadata. IDs, coordinates, biological semantics and external resources remain omitted. Limits: 128 MiB input, 1,000,000 XML events, 500,000 nodes, depth 128 and 200,000 rows. | |
.omex, .omex.zip, .combine or content-sniffed COMBINE/OMEX |
A | - | Manifest-backed scientific-model ZIPs render archive/content, SBML, CellML, SED-ML, metadata and external-reference counts without extracting or executing members. Limits: 256 MiB input/expanded metadata, 100,000 entries, 32 MiB/entry, 500,000 XML events, 300,000 nodes and 200,000 rows. Source: COMBINE Archive. | |
.xdmf, .xmf or content-sniffed XDMF |
A | - | XDMF 3.0 XML renders domain/grid/topology/geometry/attribute/DataItem/time/reference/function counts without opening HDF5/Binary arrays or evaluating expressions. Limits: 128 MiB input, 1,000,000 XML events, 500,000 nodes, depth 128 and 200,000 rows. Source: XDMF model and format. | |
.pvd or content-sniffed VTK PVD |
A | - | VTK Collection/DataSet timestep/group/part/file counts render without opening referenced VTK sidecars or URLs. Limits: 128 MiB input, 1,000,000 XML events, 500,000 nodes, depth 128 and 200,000 rows. Source: VTK file formats. | |
.fds or content-sniffed Fire Dynamics Simulator input |
A | - | FDS namelist block types and line counts render as inert metadata; meshes, fire parameters, paths, devices and CFD execution remain disabled. Limits: 128 MiB input, 2,000,000 lines, 1 MiB/line, 500,000 blocks and 200,000 rows. Source: FDS-SMV manuals. | |
.abw or content-sniffed AbiWord AWML |
A | - | AbiWord XML renders bounded section, paragraph, character, table/cell, image, bookmark, hyperlink, field and equation counts. Text, styles, links and embedded objects remain inert. Limits: 128 MiB input, 1,000,000 XML events, 500,000 nodes, depth 128 and 200,000 rows. | |
.nml, .neuroml, .neuroml.xml or content-sniffed NeuroML |
A | - | NeuroML 2 renders bounded cell, morphology, segment, network, population, projection, connection, synapse, input, channel and include counts. Parameters, coordinates, equations and imported models remain inert. Limits: 128 MiB input, 1,000,000 XML events, 500,000 nodes, depth 128 and 200,000 rows. Source: NeuroML. | |
.biopax, .biopax.xml or content-sniffed BioPAX |
A | - | BioPAX Level 3 RDF/XML renders pathway, interaction, physical-entity, protein, small-molecule, complex, reaction, control, cross-reference and ontology-import counts without OWL inference or external URI resolution. Limits: 128 MiB input, 1,000,000 XML events, 500,000 nodes, depth 128 and 200,000 rows. Source: BioPAX. | |
.xsd, .xsd.xml, .schema.xsd or content-sniffed XML Schema |
A | - | W3C XML Schema declarations, complex/simple types, groups, compositors, derivations and include/import dependencies render as inert metadata. Schema dependencies and instance validation are never fetched or executed. Limits: 128 MiB input, 1,000,000 XML events, 500,000 nodes, depth 128 and 200,000 rows. Source: W3C XML Schema. | |
.xsl, .xslt, .xsl.xml or content-sniffed XSLT |
A | - | XSLT stylesheet template, variable/param, loop/condition, key, include/import, output, script and function counts render without evaluating XPath, document access or transformations. Limits: 128 MiB input, 1,000,000 XML events, 500,000 nodes, depth 128 and 200,000 rows. Source: W3C XSLT 3.0. | |
.fo, .xslfo, .xsl-fo.xml, .fo.xml or content-sniffed XSL-FO |
A | - | XSL Formatting Objects layout-master/page-sequence/flow/region/block/inline/table/graphic/link/bookmark/page-number/list/footnote counts render without running an FO formatter or loading external media. Limits: 128 MiB input, 1,000,000 XML events, 500,000 nodes, depth 128 and 200,000 rows. Source: W3C XSL 1.1. | |
.xpl, .xproc, .xproc.xml or content-sniffed XProc |
A | - | XProc pipeline declarations render step, input/output, option, variable, pipe, control, file and HTTP operation counts without executing pipelines or XPath. Limits: 128 MiB input, 1,000,000 XML events, 500,000 nodes, depth 128 and 200,000 rows. Source: XProc 3.0. | |
.wadl, .wadl.xml or content-sniffed WADL |
A | - | WADL REST resources, methods, requests, responses, representations, parameters, grammars and links render as inert metadata; endpoints and HTTP requests remain unopened. Limits: 128 MiB input, 1,000,000 XML events, 500,000 nodes, depth 128 and 200,000 rows. Source: W3C WADL. | |
.osdd, .opensearch, .opensearchdescription.xml or content-sniffed OpenSearch |
A | - | OpenSearch descriptor URL/query/language/encoding/image/rights counts render without contacting search services or URL templates. Limits: 64 MiB input, 500,000 XML events, 300,000 nodes, depth 96 and 100,000 rows. Source: OASIS OpenSearch. | |
.saml, .saml.xml, .saml-metadata.xml or content-sniffed SAML metadata |
A | - | SAML IdP/SP descriptors, endpoints, keys, certificates, attributes, organizations, contacts and signatures render as bounded metadata; entity IDs, certificates and authentication remain inert. Limits: 128 MiB input, 1,000,000 XML events, 500,000 nodes, depth 128 and 200,000 rows. Source: OASIS SAML metadata. | |
.xacml, .xacml.xml, .policy.xml or content-sniffed XACML |
A | - | XACML Policy/PolicySet rules, targets, conditions, matches, attributes, obligations, advice, references and functions render without policy evaluation or PDP/PEP calls. Limits: 128 MiB input, 1,000,000 XML events, 500,000 nodes, depth 128 and 200,000 rows. Source: OASIS XACML 3.0. | |
.sch |
A | - | KiCad legacy Eeschema schematics. Components, wires, labels, notes, and junctions render as a bounded mil-coordinate approximation; cache libraries, external symbols, images, models, and DRC are never loaded. | |
.kicad_sch |
A | - | KiCad 6+ schematic S-expressions. Common symbols, wires/buses, labels, text, and junctions render through bounded parsing; embedded library definitions and pin/DRC semantics remain inert. | |
.asc (LTspice signature) |
A | - | LTspice schematics. UTF-8/UTF-16 BOM text, WIRE, FLAG, SYMBOL/SYMATTR, TEXT and basic graphics render as a bounded approximation; ESRI ASCII Grid remains separately detected. | |
.sch (EAGLE XML signature) |
A | - | Autodesk EAGLE XML schematics. Parts, instances, wires, labels and plain text render as a bounded approximation; library package geometry, scripts, external files and DRC/ERC are never loaded. | |
.plt, .hpgl |
A | A | HP-GL pen plotter vectors.Reverse: pen motion commands. | |
.gcode, .nc, .ngc, .tap |
A | A | CNC toolpaths.Reverse: G0/G1/G2 toolpath generation. | |
.drl, .drd, .xln |
A | A | Excellon CNC drill holes.Reverse: drill coordinate extraction. | |
.stl, .obj, .ply |
A | A (2.5D) | 3D mesh isometric projection with diffuse shading; vertex-only PLY point clouds render bounded points and retain separate RGB properties, quantized only above 512 color groups.Reverse: 2.5D extruded 3D geometry. | |
.asc |
A | - | ESRI ASCII Grid with NCOLS/NROWS, matching lower-left corner or center coordinates, CELLSIZE, optional NODATA_VALUE (default -9999), and row-major cell values. Produces a PNG-backed SVG heatmap with transparent NoData cells and a value legend; an all-NoData grid remains transparent and omits the numeric scale. CRS reprojection and class/color-table breaks are not applied. Bounds: 128 MiB, 5 million cells, 100,000 cells/side and 32 MiB PNG. |
|
.xyz |
A | - | ASCII point rows with optional named X/Y/Z, intensity/reflectance, RGB, or normal columns; unknown named columns are ignored. Without a header, homogeneous 3/4/6/7/9/10-field rows mean XYZ, XYZI, XYZRGB, XYZI-RGB, XYZN, or XYZI-RGB-normal. Whitespace/comma separators and #/// comments are accepted. Six fields are interpreted as XYZRGB; seven as XYZI-RGB. RGB integer bytes or decimal [0,1] channels are retained (including black); intensity is linearly scaled to its observed finite range. Units, CRS, and sensor pose are not inferred; normals are omitted. Invalid/out-of-range XYZ rows are skipped. Bounds: 128 MiB, 1 MiB/line, 5 million rows, 200,000 preview points, 32 MiB PLY text. |
|
.pcd |
A | - | PCL PCD v0.5–0.7 ASCII, little-endian binary, and LZF-compressed point clouds; bounded XYZ marks preserve packed or separate RGB colors, quantized only when there are over 512 color groups. Other fields are ignored with a warning, and non-default VIEWPOINT poses are not applied. | |
.e57 |
A | - | ASTM E57 1.0 point clouds: CRC-checked XML and point-data pages, one page per scan, applies each scan pose, converts spherical coordinates, retains RGB or renders intensity in grayscale. Input up to 2 GiB, XML up to 50 MiB/1 million events/250,000 nodes/depth 64, at most 10,000 scans/20 million decoded points/128 attributes per scan, and a deterministic 200,000-point preview. Scan images, CRS transformations, returns, timestamps, grouping and numeric extension attributes are omitted; string attributes are unsupported. | |
.pts |
A | - | Leica PTS ASCII point clouds with a point-count header and 4-field XYZ/intensity or 7-field XYZ/intensity/RGB records. Legacy integer intensity in [-2048, 2047] and normalized decimal intensity in [0, 1] render as grayscale. RGB is retained; Leica's (0, 0, 0) no-color value uses a blue fallback. Coordinate origin is valid. Deterministic sampling caps the preview at 200,000 points. Scanner pose/grid order and additional scalar attributes are not shown. |
|
.ptx |
A | - | Leica PTX structured, multi-scan point clouds. Applies each scan's bounded 4×4 cloud transform, keeps RGB colors (Leica's reserved (0, 0, 0) “no color” value uses a blue fallback), and maps intensity-only scans to grayscale. No-return cells are omitted; scanner pose metadata is not shown. At most 200,000 points are sampled deterministically across the file. |
|
.las, .laz |
A | - | ASPRS LAS 1.0–1.4 and LAZ point clouds; deterministically sampled XYZ/RGB previews. Large uncompressed LAS files are read by point seeks; LAZ decode is limited to 20 million source points. CRS transforms and other point attributes are not applied. | |
.3mf |
A | A (2.5D) | 3MF package mesh preview follows build items, component references/transforms, and declared units; geometry is normalized to millimeters for isometric projection. Materials and overlap union are not evaluated; required extensions are rejected.Reverse: 2.5D extruded 3D mesh geometry in 3MF XML archive. | |
.gltf, .glb |
A | - | glTF 2.0 JSON and GLB scenes; default-scene node transforms and triangle/line primitives, with meters scaled to millimeter preview units. External buffers are local and directory-confined; materials, textures, skins, and animation are not evaluated. | |
.step, .stp |
A | A | CAD Part 21 ASCII geometric models.Reverse: ISO 10303-21 curve set / manifold surfaces. | |
.ifc |
A | - | IFC-SPF IFC4 previews indexed triangle/polygon meshes and IfcExtrudedAreaSolid with rectangle, circle (64-segment approximation), or closed IfcPolyline profiles. Applies product/local placements and reused IfcMappedItem instances with bounded 3D uniform-scale/rotation/translation transforms. Concave profiles are triangulated only through 256 vertices; model units are not interpreted and geometry is auto-fitted. B-rep/CSG, tapered/hollow/rounded and other unsupported swept profiles, nonuniform mapped transforms, polygon holes, materials, properties and georeferencing are omitted or warned. |
|
.ifcxml |
A | - | buildingSMART IFCXML subset with the same supported tessellations, extruded profiles, placements and mapped instances. Internal XML IDs/references are resolved without opening external URIs; DTDs are rejected. | |
.ifczip |
A | - | Bounded IFCZIP archive with exactly one root-level .ifc model. Sidecar files are not extracted or loaded; ambiguous/missing models and ZIP/input/expanded-size limits are reported. |
|
.bcfzip or content-sniffed BCFZIP |
A | - | BIM Collaboration Format ZIP issue packages. Reads bcf.version, project name, and bounded markup.bcf topic/comment/viewpoint/document-reference/component counts plus topic title/status/priority. Snapshot images, IFC/model payloads, document URLs, GUID payloads and collaboration actions remain inert; no external resource or network operation runs. Limits: 128 MiB compressed input and 128 MiB cumulative expanded metadata, 100,000 ZIP entries, 16 MiB/entry, 500,000 XML events, 300,000 nodes, depth 96 and 100,000 rows. Source: buildingSMART BCF. |
|
.iges, .igs |
A | A | Initial Graphics Exchange Specification (lines, circular arcs, coplanar B-splines, isometric projection).Reverse: IGES entity 100/102/106 geometric wireframes. | |
| Windows Metafile | .emf, .wmf |
A | - | Windows Enhanced Metafile & Windows Metafile vector graphics. |
| Simulation & CAE | .foam |
A | - | OpenFOAM ASCII constant/polyMesh cases opened from a .foam marker. Standard gzip-compressed ASCII sidecars (points.gz, etc.) are boundedly decompressed; binary mesh files remain unsupported. The points/faces/owner/neighbour/boundary lists are checked, mesh face edges render as an isometric wireframe, and boundary patches are highlighted orange. Time folders, fields, patch labels and solver settings are omitted; reads stay inside the canonical case root and do not execute directives or follow external paths. |
.foamfield, .foam-field or content-sniffed OpenFOAM field files |
A | - | Standalone OpenFOAM volScalarField/volVectorField and surface-field files render FoamFile class/object/location, uniform or nonuniform entry count, local finite min/max (vector magnitude), and boundary patch count. Value lists, dimensions, patch dictionaries, case paths, directives and solver operations are omitted; no case traversal or solver runs. Source: OpenFOAM field files. |
|
.xodr, .opendrive, .opendrive.xml, .open-drive.xml or content-sniffed ASAM OpenDRIVE |
A | - | ASAM OpenDRIVE road reference lines render line and constant-curvature arc plan-view geometry as a bounded planar map with road/junction counts. Local metre coordinates are normalized for display; spiral/poly3/paramPoly3, lanes, profiles, signals, objects, links and simulator behavior remain inert. Limits: 64 MiB input, 1,000,000 XML events, 500,000 nodes, 96 depth, 100,000 roads, 200,000 geometries and 500,000 positions. Source: ASAM OpenDRIVE specification. | |
.crg, .opencrg or content-sniffed ASAM OpenCRG |
A | - | ASAM OpenCRG clear-text header sections render section names and line counts. ASCII/binary road-surface payloads and $ROAD_CRG_FILE references are omitted; no tire, vehicle or surface evaluation runs. Limits: 64 MiB input, 1,000,000 lines, 1 MiB/line and 100,000 sections. Source: ASAM OpenCRG. |
|
.xosc, .openscenario, .openscenario.xml, .open-scenario.xml or content-sniffed ASAM OpenSCENARIO XML |
A | - | ASAM OpenSCENARIO XML renders FileHeader revision, entity, Story/Act/Maneuver/Event/Action hierarchy, parameter and catalog-reference counts, and RoadNetwork presence. Catalogs, road files, controllers, expressions, triggers and simulator behavior remain inert; no external files are opened. Limits: 64 MiB input, 1,000,000 XML events, 500,000 nodes, depth 96 and 200,000 rows. Source: ASAM OpenSCENARIO XML. | |
.openlabel.json, .openlabel, .open-label.json or content-sniffed ASAM OpenLABEL JSON |
A | - | ASAM OpenLABEL 1.0 annotation JSON renders bounded collection counts for objects, actions, events, contexts, relations, frames, streams, tags, ontologies, resources and coordinate systems, plus schema and nested object-data counts. Sensor payloads, coordinates, annotation values, ontology URLs and external resources are omitted; no sensor data or network resource is opened. Limits: 64 MiB input, depth 100, 300,000 JSON values, 100,000 entries and 2 MiB strings. Source: ASAM OpenLABEL. | |
.su2 |
A | - | SU2 native ASCII 2D/3D unstructured meshes: line, triangle, quad, tetrahedron, hex, prism, and pyramid element codes plus named boundary markers. 2D cells render as a mesh; 3D volume cells render as deduplicated wireframe edges after XY projection. Marker edges are highlighted orange; marker names/solver settings are omitted, higher-order cells are skipped with warnings, and no solver runs. | |
.dat, .tec, .tecplot, .tp |
A | - | Tecplot ASCII finite-element and ordered zones. POINT/BLOCK FETRIANGLE, FEQUADRILATERAL, FETETRAHEDRON and FEBRICK zones plus I/J ordered grids render through the shared bounded CAE mesh view. X/Y are required; an optional value variable is shown as an inert scalar field. Advanced zone metadata is warned or omitted; no solver or macro is executed. | |
.case, .geo |
A | - | EnSight Gold ASCII case manifests and geometry sidecars. A single local geometry model, parts, coordinates, and common linear bar/triangle/quad/tetrahedron/penta/pyramid/brick elements render through the shared CAE mesh view. Case sidecars stay inside the case directory; binary cases, variable files, external paths, and unsupported element blocks are rejected or warned. | |
.p3d, .plot3d, .p3 |
A | - | NASA PLOT3D formatted ASCII structured grids. Single- and multi-block 2D/3D coordinate arrays render as bounded quadrilateral cells; 3D blocks emit only boundary surfaces. IBLANK, solution .q, unformatted Fortran records, and solver metadata are omitted or warned. |
|
.wrl, .vrml |
A | - | VRML97 text geometry. Coordinate point arrays with IndexedFaceSet and IndexedLineSet connectivity render through the shaded 3D mesh view. Texture coordinates, transforms, appearances, scripts, routes, and external URLs are ignored or warned; no active content is executed. | |
.msh |
A | A | ASCII Gmsh MSH 2.x/4.0/4.1 plus binary MSH 2.2 and 4.0/4.1 (both byte orders), common volume-cell wireframes and NodeData/ElementData fields. Binary 4.0 mixed node records and mandatory Entities are handled; partitioned sections remain rejected.Reverse: 1D boundary wireframe mesh generation. | |
.mesh, .medit, .meshb |
A | - | MEDIT ASCII and binary mesh files. Binary versions 1–4 accept both byte orders and validated keyword offsets; linear vertices/edges/surfaces/volumes are rendered. High-order and solution sections are skipped with a warning; 3D is projected onto XY. | |
.off |
A | - | ASCII OFF/COFF/NOFF/CNOFF polygon meshes rendered as shaded isometric 3D surfaces. Vertex normals/colors and face colors are ignored with a warning; binary and 4D OFF variants are unsupported. | |
.inp |
A | - | Abaqus mesh-only input decks: flat meshes and meshed part/instance assemblies with translation-before-rotation positioning; common C3D/CPS/CPE/CAX/shell/beam elements. Midside nodes are omitted, 3D is projected onto XY, fields/loads/materials are not rendered, and unsupported element blocks or external includes are warned. | |
.cdb |
A | - | ANSYS Mechanical APDL coded database files. Blocked NBLOCK node and EBLOCK element sections plus basic unblocked N/EN cards render as bounded XY-projected mesh wireframes. Other APDL commands, loads, materials, components, solver settings and includes remain inert; no APDL is executed. |
|
.bdf, .nas, .nastran |
A | - | Nastran Bulk Data free-, small- and large-field mesh decks; common shell, beam/rod, tetrahedron, hexahedron, wedge and pyramid elements. Midside nodes are omitted, 3D is projected onto XY, analysis/results are not rendered, and external includes or recognized unsupported elements are warned. | |
.unv |
A | - | I-DEAS Universal/UFF node datasets 15/2411 and element dataset 2412; common beams, shells and volume outlines with selected high-order corner projections. Non-global node coordinate systems are rejected, Z is projected to XY, and result/property datasets are omitted with warnings. | |
.k, .key |
A | - | LS-DYNA Keyword decks with standard fixed and comma-separated free-format *NODE and common shell, beam and solid element cards. Long-format + records are rejected; midside nodes are omitted, 3D is projected onto XY, analysis/results are not rendered, and external includes or unsupported element keywords are warned. |
|
.vtk, .vtu, .vtp, .vti, .vtr, .vts |
A | A | VTK Legacy ASCII and big-endian binary UnstructuredGrid/PolyData, XML UnstructuredGrid/PolyData/ImageData/RectilinearGrid/StructuredGrid points, cells and active point/cell scalar fields; XML accepts base64 inline/appended and raw appended binary arrays, including zlib-compressed arrays. Other compressors and parallel VTK XML are unsupported.Reverse export writes Legacy VTK POLYDATA. | |
| Computational notebooks | .ipynb |
A | - | Jupyter nbformat 4 cells: Markdown, source code, text/HTML/JSON outputs, errors, embedded PNG/JPEG results, and validated Markdown cell attachment PNG/JPEG images referenced by attachment:name. Code is displayed but never executed; SVG/interactive outputs and unsupported attachment formats are omitted, and image/text/cell limits apply. |
| Computational documents | .qmd, .Rmd, .rmarkdown |
A | - | Quarto/R Markdown YAML front matter, Markdown prose, and fenced code chunks. Simple title/author/date are shown; code, inline expressions, filters, includes, cross-references, and generated results are not evaluated. |
| Data & Math | .md, .markdown |
A | C | Markdown tables.Reverse: heuristic row/column clustering from text and lines. |
.arff |
A | - | Weka Attribute-Relation File Format datasets. Flat @relation/@attribute headers and @data records render as inert tables; numeric/date columns align right, nominal/string values remain text, and dense plus sparse records are supported. Relational attributes and value evaluation are omitted. Limits: 64 MiB input, 1,000,000 lines, 256 attributes, 50,000 records and 1,000,000 cells. Sources: Weka ARFF format. |
|
.nc, .nc3, .cdf |
A | - | NetCDF classic CDF-1 and 64-bit-offset CDF-2 scientific arrays. Dimensions, global/variable attributes, fixed arrays, and unlimited record variables render as inert tables with big-endian type decoding. CDF-5 and NetCDF-4/HDF5 are rejected explicitly; values are never evaluated. Limits: 512 MiB input, 1,024 dimensions, 1,024 variables, 4,096 attributes, 200,000 values per variable and 1,000,000 values total. Source: Unidata NetCDF classic format. | |
.h5, .hdf5, .hdf, .h5part |
A | - | HDF5 scientific containers are preflighted by signature and superblock version/width metadata without walking groups, datasets, links, compression filters, or external payloads. User-block signature offsets are supported and large files are inspected without loading the full file. Limits: 2 GiB input and 64 signature probes. Source: HDF5 File Format Specification. | |
.cgns |
A | - | CGNS/HDF5 CFD databases use the same bounded HDF5 superblock preview. CGNS SIDS nodes, grids, solution arrays, external links, and solver operations remain inert. Source: CGNS/HDF5 mapping. | |
.e, .exo, .ex2, .ex2m, .exii |
A | - | Exodus II NetCDF-based finite-element mesh/result files reuse the bounded NetCDF classic reader with dimensions, attributes, and indexed values. Exodus topology, element blocks/sets, result semantics, and solver operations are not reconstructed. | |
.jsonld, .json-ld |
A | - | JSON-LD 1.1 linked-data documents. @id, @type, compact predicates, @value literals, @list, @included, and named @graph members render as inert subject/predicate/object tables. Contexts stay compact and remote context/import references are never fetched or expanded. Limits: 64 MiB input, depth 100, 200,000 JSON values/statements, 512 characters per displayed term and 64 MiB rendered text. Source: W3C JSON-LD 1.1. |
|
.openapi.json, .swagger.json, .openapi.yaml, .swagger.yaml |
A | - | OpenAPI/Swagger 2.0 and 3.x descriptions render title/version, servers, component counts, and an inert path/method/operation/response inventory. $ref, externalDocs, server URLs, callbacks, links, examples, and security schemes are never resolved, fetched, or executed. Limits: JSON input 64 MiB; YAML input 16 MiB; depth 100, 300,000 values, 200,000 operations and 2 MiB displayed strings. Source: OpenAPI Specification. |
|
.wsdl, .wsdl.xml or content-sniffed WSDL 1.1/2.0 |
A | - | WSDL service descriptions render bounded service, port, binding, portType/interface, operation, message, import/include and embedded-schema counts with names. Endpoint addresses, schema/import URLs, documentation, credentials and message payloads are omitted; no SOAP/HTTP request or code generation runs. Limits: 64 MiB input, 1,000,000 XML events, 500,000 nodes, depth 96 and 200,000 rows. Source: W3C WSDL. | |
.opml, .opml.xml or content-sniffed OPML 1.0/2.0 |
A | - | OPML outlines render version/title/date metadata and a bounded hierarchical outline table with type, depth and feed-outline counts. Feed URLs, HTML links, owner email, descriptions and extension values are omitted; linked feeds, enclosures, images and scripts are never fetched or executed. Limits: 32 MiB input, 500,000 XML events, 300,000 nodes, depth 96 and 200,000 rows. Source: OPML 2.0 specification. | |
.asyncapi.json, .asyncapi.yaml, .asyncapi.yml |
A | - | AsyncAPI 2.x/3.x message-driven API descriptions render title/version, servers, component counts, and an inert channel/action/operation/summary/message inventory. $ref, externalDocs, server URLs, examples, protocol bindings, and security schemes are never resolved, fetched, or executed. Limits: JSON input 64 MiB; YAML input 16 MiB; depth 100, 300,000 values, 200,000 operations and 2 MiB displayed strings. Source: AsyncAPI Specification. |
|
.schema.json, .jsonschema, .schema.yaml, .schema.yml |
A | - | JSON Schema draft definitions render dialect/ID metadata and a bounded schema-path table with type, title/description, common constraints, required counts and enum counts. $ref, $id, URI values, patterns, examples and format annotations remain inert. Limits: JSON input 64 MiB; YAML input 16 MiB; depth 100, 300,000 values, 200,000 schema nodes and 2 MiB displayed strings. Source: JSON Schema specifications. |
|
.har |
A | - | HTTP Archive 1.2 network logs render request/response method, URL, status, MIME type, byte sizes and timing as a bounded inert table. Secret-like query values are masked; headers, cookies and request/response bodies are omitted. URLs are never fetched or replayed. Limits: 128 MiB input, depth 100, 400,000 values, 200,000 entries and 2 MiB displayed strings. Source: W3C HAR. | |
.warc, .warc.gz |
A | - | WARC 1.0/1.1 web-archive records render record type, target URI, embedded HTTP status/MIME, date and validated Content-Length. Payload bytes are skipped, URLs/resources are never opened, and gzip expansion is bounded. Secret-like target query values are masked. Source: IIPC WARC 1.1. | |
.wacz |
A | - | WACZ ZIP packages render datapackage.json metadata and bounded pages/pages.jsonl page rows. Archive WARC payloads, CDXJ indexes, scripts and replay resources are not opened; page URL query secrets are masked. ZIP entries and JSONL lines are bounded. Source: WACZ specification. |
|
.postman_collection.json |
A | - | Postman Collection v2.1 request/folder inventories render folder, method, URL, response status/count, auth type and script counts. Secret-like URL query values are masked; credentials, variables, headers, cookies, request/response bodies, and pre-request/test scripts are not shown or executed. Source: Postman Collection schema v2.1. | |
.graphql, .graphqls, .gql |
A | - | GraphQL SDL type definitions render object/interface/input/enum/scalar/union fields, arguments, signatures and directives as an inert schema table. Resolvers, introspection, queries, mutations, subscriptions and external resources are never executed or fetched. Source: GraphQL specification. | |
.proto |
A | - | Protocol Buffers proto2/proto3 schema files render syntax/package metadata, message fields, enum values, oneof members and service RPC signatures. Imports, options, annotations, URLs, code generation, RPC calls and external files remain inert. Source: Protocol Buffers proto3 language guide. | |
.k8s.yaml, .k8s.yml, .kubernetes.yaml, .kube.yaml |
A | - | Kubernetes API manifests render bounded resource identity (apiVersion, kind, metadata), spec/status shape counts, labels/annotations and multi-document resources. Secret data/stringData values, templates and URLs remain hidden; kubectl, Helm, cluster calls and external references are never executed. Source: Kubernetes API. |
|
compose.yaml, compose.yml, docker-compose.yaml, docker-compose.yml, .compose.yaml, .compose.yml |
A | - | Docker Compose services render an inert service table with image/build presence, ports, dependencies, volume/network/secret counts and command presence. Docker daemon access, image pull/build, command/healthcheck execution, interpolation/include/merge, environment values and secret values are never performed or displayed. JSON Compose documents are also recognized by content sniffing. Source: Compose Specification. | |
.github/workflows/*.yaml, .github/workflows/*.yml |
A | - | GitHub Actions workflows render an inert job plan with runner, needs, step count, action/run counts and matrix presence. run/uses commands, expressions, environment/secret values, permissions, reusable workflows, artifacts, triggers and runner/network operations are never executed or resolved. Source: GitHub Actions workflow syntax. |
|
junit.xml, test-results.xml, test-report.xml, TEST-*.xml, .junit.xml, .junit-report.xml, .test-results.xml |
A | - | JUnit-compatible XML reports render suite totals and pass/fail/error/skip/time counts. Failure/error text, stdout/stderr, properties and attachments are omitted; tests, external DTDs and resources are never executed or fetched. Source: Maven Surefire XML reporter. | |
.sarif, .sarif.json |
A | - | SARIF 2.1.0 static-analysis reports render tool/rule groups and error/warning/note/other result counts. Messages, source locations, artifact URIs, snippets, fingerprints, fixes and invocation details are omitted; uploads, URL fetches and code execution are never performed. Source: GitHub SARIF support. | |
tfplan.json, .tfplan.json, terraform-plan.json, .terraform-plan.json |
A | - | Terraform terraform show -json plan reports render resource address/type/action/reason rows plus create/update/delete/read, drift, output and variable counts. Before/after values, sensitive values, state, configuration and provider data are omitted; plan/apply/refresh, provider, filesystem and network operations are never performed. Source: Terraform JSON output format. |
|
bom.json, bom.xml, *.cdx.json, *.cdx.xml |
A | - | CycloneDX BOMs in JSON/XML render component type/name/version/scope rows plus vulnerability, dependency and service counts. Serial numbers, bom-ref values, hashes, licenses, package URLs, properties, vulnerability details and external references are omitted; registries and URLs are never contacted. Source: CycloneDX specification overview. | |
spdx.json, sbom.spdx.json, *.spdx.json, .spdx, .spdx.txt |
A | - | SPDX-2.x JSON and tag:value documents render package/file IDs, names and versions plus relationship, annotation, snippet and external-document counts. Checksums, license/supplier data, PURLs, download locations, comments and external URIs are omitted; no registry, URL or code operation is performed. Source: SPDX Specification 2.3. | |
jacoco.xml, cobertura.xml, coverage.xml, .jacoco.xml, .cobertura.xml, .coverage.xml |
A | - | JaCoCo/Cobertura coverage XML reports render package class counts and line/branch/method covered/missed counters with line-rate summaries. Source paths, class/method internals, session data, logs, attachments and quality-gate evaluation are omitted; no tests or external resources run. Sources: JaCoCo coverage counters, Maven Surefire XML reports. | |
.info, lcov.info, coverage.info, .lcov.info |
A | - | LCOV tracefiles render safe source basenames with line/function/branch covered/missed counters and line-rate summaries. Absolute paths, function names, DA/BRDA execution records and comments are omitted; no source files, tests or external resources are read. Source: lcov tracefile format. |
|
.jsonpatch, .json-patch, .patch.json |
A | - | RFC 6902 JSON Patch operation arrays render ordered add/remove/replace/move/copy/test rows with JSON Pointer paths, from paths and value types. Values are omitted; patches are never applied, pointers are not evaluated, and target documents or external resources are never opened. Source: RFC 6902 JSON Patch. | |
.mergepatch, .json-merge-patch, .merge-patch.json |
A | - | RFC 7396 JSON Merge Patch documents render affected paths as set/delete/merge actions with value types and depth. Values are omitted; null deletion and object merge are not applied, target documents are never evaluated, and no external resource is opened. Source: RFC 7396 JSON Merge Patch. | |
.csv, .tsv |
A | C | RFC 4180-style quoted fields (including escaped quotes and quoted newlines) render as bounded SVG tables. Tables paginate at 100 rows × 32 columns. Limits: 64 MiB input, 50,000 records, 256 columns, 1 million cells, 64 KiB/field and 1 MiB/record. Text over 512 characters is visibly truncated with a warning. Compact single-page CSV inputs up to 8 MiB embed the exact source for reverse recovery; paginated/large tables omit that payload.Reverse: exact embedded CSV source when available; otherwise chart CSV extraction. | |
.toml |
A | - | TOML 1.0/1.1 configuration files render as inert key-path/value rows; nested tables, arrays, arrays-of-tables, booleans, numbers, strings and date/time values are shown without executing configuration. Limits: 4 MiB input, 50,000 lines, 64 KiB/line, nesting 80, 200,000 values, 2 MiB/string, 4 KiB/path and 32 MiB rendered text. Float formatting may be normalized; raw TOML is not embedded. Source: TOML 1.1.0 specification. | |
.xml (generic XML fallback) |
A | - | Unrecognized XML documents render as inert element paths with each namespace URI listed once and mapped to a readable prefix, plus attributes and text. Microsoft Project XML, draw.io, SVG, HTML, and other recognized XML formats keep their specialized converters. DTDs are rejected; no external entities or resources are loaded. Limits: 16 MiB input, 100,000 lines, 1 MiB/line, depth 80, 400,000 parser events, 200,000 nodes/rows, 4 KiB/path and 32 MiB rendered text. UTF-8 only. Source: W3C XML 1.0. | |
.properties |
A | - | Java Properties load(InputStream) behavior: ISO-8859-1 bytes, escaped separators, \t/\n/\r/\f and \uXXXX, and continued logical lines. Duplicate keys use the last value. Values and ${...} placeholders are never evaluated. Limits: 16 MiB input, 100,000 lines, 1 MiB/line, 2 MiB/logical line, 200,000 keys, 2 MiB/key or value, 4 KiB/path and 32 MiB rendered text. Malformed escapes and unpaired UTF-16 surrogate escapes are rejected. Source: Java Properties API. |
|
.plist, .plist.xml or content-sniffed Apple Property List |
A | - | XML property lists render bounded key paths, dictionaries, arrays, scalar types and data-byte counts; binary bplist00 files render validated trailer/offset/object-marker summaries. URL and secret-like scalar values, data payloads, external entities and resources are omitted or redacted; no application data is executed. Limits: 64 MiB input, 1,000,000 XML events, 500,000 XML nodes/objects, depth 96 and 200,000 rows. Source: Apple PropertyListSerialization. |
|
.yaml, .yml |
A | - | YAML 1.2 streams render as inert key-path/value rows across multiple documents. Alias references are shown as placeholders and are not expanded; custom tags are not applied and complex mapping keys are rejected. Limits: 16 MiB input, 100,000 lines, 1 MiB/line, depth 80, 400,000 parser events, 100 documents, 2 MiB/scalar, 4 KiB/path and 32 MiB rendered text. Source: YAML 1.2.2 specification. | |
.xmi |
A | - | OMG XMI 2.1–2.5 model-interchange documents render nested model elements with xmi:id, xmi:type, names, containment depth and inert attributes. UML/SysML references remain text; external hrefs, XMI extensions and model execution are not processed. Limits: 64 MiB input, 1,000,000 XML events, 500,000 XML nodes, depth 96, 200,000 elements, 128 attributes/element and 64 MiB rendered text. Source: OMG XMI. | |
.reqif / .reqif.xml |
A | - | ReqIF 1.0.1/1.2 requirements exchange renders specifications, hierarchical requirements, typed attribute values, and local specification relations as bounded SVG tables. XHTML is flattened to text; external references, embedded binary content, and requirements-tool semantics are not executed. Limits: 64 MiB input, 1,000,000 XML events, 500,000 XML nodes, depth 96, 200,000 requirements/relations and 64 MiB rendered text. Source: OMG ReqIF. | |
.dmn |
A | - | DMN 1.1–1.5 decision tables render as bounded SVG tables in source order. Inputs, outputs, rule entries, hit policy, and local input/decision requirements are shown. FEEL expressions and decision rules are displayed only; no rule evaluation occurs. DMNDI graphical diagrams, annotations, and remote references are not resolved. Limits: 32 MiB input, 500,000 XML events, 200,000 XML nodes, 10,000 tables, 200,000 rules, 128 columns, 1 million cells and 32 MiB rendered text. Source: OMG DMN 1.5. | |
.citygml, .citygml.xml, .citygml.gml or content-sniffed OGC CityGML |
A | - | OGC CityGML 2.0/3.0 XML renders bounded Building, Road, Railway, WaterBody, Relief and Vegetation object counts with LoD, Envelope, CRS and XLink metadata. Geometry, textures, attributes, XLinks and external resources remain inert; no CRS transformation or 3D operation runs. Limits: 64 MiB input, 1,000,000 XML events, 500,000 nodes, depth 96, 200,000 rows. Source: OGC CityGML. | |
.cityjson, .city.json, .cityjson.json or content-sniffed OGC CityJSON |
A | - | OGC CityJSON 1.x/2.0 city models render bounded CityObject type/geometry/LoD counts, vertex and boundary-index counts, and transform/metadata presence. Coordinates, boundaries, semantics, materials, textures, attributes, extensions and external resources are not expanded or transformed. Limits: 64 MiB input, depth 100, 300,000 JSON values, 100,000 objects, 500,000 vertices, 200,000 geometries/rows and 2 MiB strings. Source: OGC CityJSON. | |
.stix.json, .stix-json, .stix or content-sniffed STIX 2.1 JSON |
A | - | OASIS STIX 2.1 bundles and objects render bounded type/id, created/modified timestamps, label counts and relationship/reference counts. Descriptions, indicator patterns, hashes, URLs, marking content and custom properties are omitted; no TAXII/API/network operation runs. Limits: 64 MiB input, depth 100, 300,000 JSON values, 100,000 objects, 200,000 rows and 2 MiB strings. Source: OASIS STIX 2.1. | |
.taxii.json, .taxii-json, .taxii or content-sniffed TAXII 2.1 JSON |
A | - | OASIS TAXII 2.1 envelope, manifest, collection, discovery, status and error resources render bounded IDs, object/version counts and capability/status metadata. STIX payloads, URLs, descriptions, authorization data and TAXII endpoints are omitted; no HTTP client or network operation runs. Limits: 64 MiB input, depth 100, 300,000 JSON values, 100,000 entries, 200,000 rows and 2 MiB strings. Source: OASIS TAXII 2.1. | |
.citygml, .citygml.xml, .citygml.gml or content-sniffed OGC CityGML |
A | - | OGC CityGML 2.0/3.0 XML renders bounded Building, Road, Railway, WaterBody, Relief and Vegetation object counts with LoD, Envelope, CRS and XLink metadata. Geometry, textures, attributes, XLinks and external resources remain inert; no CRS transformation or 3D operation runs. Limits: 64 MiB input, 1,000,000 XML events, 500,000 nodes, depth 96 and 200,000 rows. Source: OGC CityGML. | |
.json |
A | - | Generic JSON values render as inert path/type/value rows; no fields or URLs are executed or fetched. Depth, value count, field path, strings, and rendered text are bounded. | |
.jsons, .jsonseq, .jsonl |
A | - | RFC 7464 Record Separator-delimited JSON values render in record order with one heading per item. .jsonl is newline-delimited compatibility mode. Malformed RFC 7464 records are skipped with an explicit warning; RFC 7464 assigns no file extension, so .jsons and .jsonseq are aliases. Limits: 64 MiB input, 4 MiB/record, 100,000 records, 200,000 rendered blocks. Source: RFC 7464. |
|
.geojson |
A | - | GeoJSON Feature/Geometry/FeatureCollection objects render points, lines and polygon rings in a bounded Web Mercator preview. Properties and altitude are omitted; nonstandard CRS transforms are not applied. | |
.geojsons, .geojsonseq, .geojsonl |
A | - | RFC 8142 RS-delimited GeoJSON Text Sequences accept Feature, Geometry, and FeatureCollection records in one bounded Web Mercator page. RFC 8142 assigns no file extension; .geojsons and .geojsonseq are convenience aliases. Newline-delimited .geojsonl is accepted in compatibility mode. Properties and identifiers are omitted. Limits: 32 MiB input, 8 MiB/record, 100,000 records/features, 500,000 positions. Sources: RFC 8142, RFC 7946. |
|
.topojson |
A | - | Reconstructs TopoJSON Topology objects, shared arcs, delta-quantized coordinates, transforms, and reversed arc references into a bounded Web Mercator map. GeometryCollection, Point/MultiPoint, LineString/MultiLineString and Polygon/MultiPolygon are supported. WGS 84 longitude/latitude is assumed; other CRSs and extra ordinates are not transformed. Properties, IDs, object names and bbox metadata are omitted. Limits: 32 MiB input, 200,000 arcs/geometries, 500,000 source and expanded positions, 100,000 objects and 16 nested collections. Source: TopoJSON Format Specification. | |
.rss, .atom, .georss |
A | - | GeoRSS Simple point, line, polygon, and box plus supported GML point/line/polygon/envelope geometry in RSS/Atom feeds render as a bounded Web Mercator map. GeoRSS defaults to latitude/longitude; explicit CRS84/EPSG:4326/EPSG:4979 is handled. Feed properties, curves, and unsupported extensions are omitted, and linked resources are never fetched. | |
.rss, .atom, .georss without GeoRSS geometry or content-sniffed RSS/Atom |
A | - | RSS 2.0 and Atom 1.0 feeds render channel/feed title, update date, item/entry title/date and bounded link/author/content/enclosure counts. Links, descriptions, summaries, content payloads, author addresses, enclosures and external resources are omitted; no refresh, script or network operation runs. Limits: 32 MiB input, 500,000 XML events, 300,000 nodes, depth 96 and 100,000 rows. Sources: RSS 2.0 Specification, RFC 4287 Atom. | |
.jsonfeed, .json-feed, .feed.json |
A | - | JSON Feed 1.0/1.1 documents render feed title/version and bounded item id/title/content-type/date/author/attachment-count rows. HTML/text content, item URLs, images, tags and attachment URLs are omitted; no feed, link or external resource is fetched or executed. Source: JSON Feed specification. | |
.cloudevent.json, .cloud-event.json, .cloudevents.json, .ce.json, .cloudevent, .cloudevents or content-sniffed CloudEvents JSON |
A | - | CloudEvents JSON 1.0 single events and JSON batches render bounded type, id, source host, time, subject and data type/size metadata. Source URI query values are masked; data/data_base64 payloads, dataschema and extension values are omitted, and no URI, broker, handler or network resource is resolved. Limits: 64 MiB input, depth 100, 300,000 JSON values, 100,000 events, and 2 MiB strings. Source: CloudEvents JSON Event Format. | |
.fhir.json, .fhirjson, .fhir, .bundle.fhir.json, .fhir-bundle.json or content-sniffed FHIR JSON |
A | - | HL7 FHIR R4 JSON resources and Bundles render bounded resourceType, id, status/type, profile count and structural counts. Clinical values, Narrative XHTML, names, identifiers, coded displays, extension values and references are omitted; no terminology lookup, validation, URL fetch or clinical operation runs. Limits: 64 MiB input, depth 100, 300,000 JSON values, 100,000 resources and 2 MiB strings. Source: FHIR R4 JSON representation. | |
.avsc, .avpr, .avro.json, .avro-schema.json or content-sniffed Avro JSON |
A | - | Apache Avro schema/protocol JSON renders bounded record, field, union, enum, fixed, array, map and message paths with type summaries. Defaults, docs, aliases, logical-type semantics, imports, field values, code generation and RPC execution remain inert. Limits: 64 MiB input, depth 100, 300,000 JSON values, 200,000 rows and 2 MiB strings. Source: Apache Avro Specification. | |
.otlp.json, .otlp-json, .otel.json, .otlp.trace.json, .otlp.metrics.json, .otlp.logs.json or content-sniffed OTLP JSON |
A | - | OpenTelemetry OTLP JSON trace, metric, log and profile envelopes render bounded signal/resource/scope counts, service names and data-point/event/link summaries. Attribute values, log bodies, IDs, exemplars, links, schema URLs and endpoints are omitted; no collector, exporter or network operation runs. Limits: 64 MiB input, depth 100, 300,000 JSON values, 200,000 rows and 2 MiB strings. Source: OpenTelemetry OTLP specification. | |
.jsonocel, .ocel.json, .ocel-json or content-sniffed OCEL 2.0 JSON |
A | - | Object-Centric Event Log 2.0 JSON renders bounded event/object type definitions, event and object IDs/types/times, attribute counts and event-to-object/object-to-object relationship counts. Attribute values, qualifiers, URLs and external resources are omitted; no process discovery or filtering runs. Limits: 64 MiB input, depth 100, 300,000 JSON values, 100,000 nodes, 200,000 rows and 2 MiB strings. Source: OCEL 2.0 JSON format. | |
.jsonapi, .json-api.json, .jsonapi.json or content-sniffed JSON:API |
A | - | JSON:API 1.1 primary and included resources render bounded type/id, status metadata, attribute-key counts and relationship counts. Attribute values, linkage payloads, meta/error details and link URLs are omitted; no endpoint or API operation is contacted. Limits: 64 MiB input, depth 100, 300,000 JSON values, 100,000 resources, 200,000 rows and 2 MiB strings. Source: JSON:API 1.1 specification. | |
.gml |
A | - | GML 2/GML 3.2 simple feature collections with Point, LineString, Polygon, and supported multi-geometries. CRS84 is longitude/latitude; EPSG:4326/4979 uses GML axis order and is normalized for the map. Unknown CRSs, curves, and non-linear surfaces are rejected or omitted, and no external links/schemas are fetched. | |
.wkt, .ewkt |
A | - | OGC linear simple-feature POINT, MULTIPOINT, LINESTRING, MULTILINESTRING, POLYGON, MULTIPOLYGON, and GEOMETRYCOLLECTION. Coordinates are assumed to be WGS 84 longitude/latitude without an SRID; only SRID 4326 is accepted. Z/M ordinates are discarded, rings are closed with a warning, and curves/other SRIDs are rejected. | |
.gpx |
A | - | GPX 1.1 waypoints render as points, routes as ordered lines, and tracks as separate ordered segment lines. Elevation, names, timestamps, extensions, and linked resources are omitted; external links are never fetched. | |
.kml, .kmz |
A | - | KML 2.2 Placemark Point/LineString/Polygon/MultiGeometry and gx:Track map geometry, plus KMZ archives using doc.kml or the first KML entry. WGS 84 longitude/latitude is projected with Web Mercator; altitude, properties, styles, overlays, and linked resources are omitted, and external resources are never fetched. |
|
.shp |
A | - | ESRI Shapefile Point/PolyLine/Polygon/MultiPoint records, including Z/M record layouts, render as a bounded Web Mercator preview. A matching SHX index is validated; degree-based WGS 84 geographic .prj files are recognized, while missing CRS metadata is explicitly assumed and other CRSs are rejected. DBF attributes and Z/M values are not rendered; MultiPatch is unsupported. |
|
.dbf |
A | - | dBASE III/III+ attribute tables render in row-paginated, 32-column SVG tables. Supports character, numeric, float, logical and date fields; deleted rows are skipped. Memo and unknown field types use placeholders. Reads common .cpg aliases (UTF-8, Windows-125x, Shift-JIS, GBK, EUC-KR, Big5 and ISO-8859-1/2); LDID 0x57 selects Windows-1252 and missing/zero LDID falls back with a warning. Bounds: 128 MiB, 100,000 records, 2 million cells, 255 fields and 4,000 bytes/record. Sources: OGC dBASE III/IV file structures, Esri field limits and encoding. |
|
.gpkg |
A | - | OGC GeoPackage SQLite feature tables produce one bounded Web Mercator page per layer; EPSG:3857 PNG/JPEG tile layers render as re-encoded tile-image pages. EPSG:4326/4979 and EPSG:3857 vectors are supported; other vector CRSs are rejected without reprojection. Geometry-only queries run read-only; attributes, feature/tile views, unsupported tile CRSs and Z/M values are omitted. Limits: 128 MiB database/WAL, 256 layers, 100,000 features per layer, 200,000 total rows, 512 tiles, and 20 million tile pixels. Source: OGC GeoPackage 1.4. | |
.chart, .chart.json |
A | C | Bar, line, and pie charts.Reverse: tabular CSV extraction from chart geometry. | |
.tex, .latex |
A | A / C | Standalone LaTeX math formulas and bounded complete-document previews (title/author/date, sections, paragraphs, lists, verbatim/code, tabular data, captions, inline math, and local PNG/JPEG \\includegraphics). TeX macros, \\input/bibliography, shell escape, external URLs, and document execution are never evaluated; figure floats and exact typography are approximated.Reverse: <desc> metadata restore (A) or OCR/heuristic (C). |
|
.qr, .qrcode |
A | A | Reed-Solomon vector QR matrix.Reverse: matrix payload decoding. | |
| Raster & UI Code | .png, .jpg, .jpeg, .bmp, .gif, .webp |
B | A | Forward: bounded PNG/JPEG/BMP/GIF/WebP decode followed by grayscale thresholding and contour vector tracing; at most 20 million pixels, 100,000 pixels per side, and 500,000 path spans. Animated GIF/WebP preview their first frame with a warning. CMYK JPEG is approximated without ICC profiles; 16-bit lossless JPEG is reduced to 8-bit with a warning.Reverse: deterministic PNG or WebP rasterization via resvg and image-webp. |
.pbm, .pgm, .ppm, .pnm, .pam |
B | - | Netpbm PBM/PGM/PPM/PAM ASCII and binary images, including 16-bit samples and RGB/alpha PAM tuples, are reduced to bounded grayscale contours through the same raster pipeline. Dimensions, maxval, sample ranges and payload length are validated; only the first image is used and no external resources are loaded. | |
.tif, .tiff |
A | - | Forward: bounded, multi-page TIFF/BigTIFF decoding to color PNG images embedded in one SVG per image directory. Unsigned-integer grayscale (including packed 1/2/4-bit samples), RGB/RGBA, and CMYK are supported; WhiteIsZero/BlackIsZero is honored and channels above 8-bit are reduced to 8-bit. Palette, signed/floating-point samples, and color profiles are not interpreted. | |
.jp2, .j2k, .j2c, .jpc, .jpx |
A | - | Standalone JPEG 2000 raw codestreams and JP2 containers. Shared codestream/JP2 header validation checks dimensions, component count, precision, signedness, and subsampling before OpenJPEG decoding; unsigned grayscale, gray-alpha, RGB, and RGBA are written as bounded PNG-backed SVG. Multi-codestream, unsupported color spaces, signed components, and unsafe dimensions are rejected or warned. | |
.dcm, .dicom |
A | - | DICOM Part 10 grayscale/RGB images are rendered as PNG-backed SVG pages, one page per frame. Supports uncompressed Implicit/Explicit VR Little Endian, retired Explicit VR Big Endian, JPEG Baseline/Extended/Lossless, JPEG 2000 Part 1 (.90 lossless and .91), and RLE Lossless. JPEG 2000 frame dimensions/components/precision are preflighted against bounded DICOM attributes. Modality and VOI transforms are applied when available; 16-bit samples are converted to 8-bit display images. Patient/study metadata is omitted, but burned-in pixel text remains. JPEG-LS, JPEG 2000 YBR_RCT/YBR_ICT color conversion, Part 2, HTJ2K, spatial orientation and physical pixel spacing are not handled. |
|
.sr.dcm, .dicom-sr or DICOM SR SOP Class |
A | - | Basic Text, Enhanced, Comprehensive, Comprehensive 3D, Extensible, CAD, dose, agent and related Structured Report SOP Classes render bounded Content Sequence rows for TEXT/NUM/CODE/CONTAINER items, concepts, units, and relationships. Referenced images/audio/waveforms, UIDs and patient/study attributes are omitted; SR content can contain PHI and is not de-identification. Limits: 128 MiB input, 1,000,000 structural tokens, 100,000 elements, depth 64 and 200,000 rows. Source: DICOM PS3.3 Structured Report IODs. | |
DICOMDIR, .dicomdir |
A | - | DICOM media file sets follow the root/next/lower-level Directory Record offsets and render referenced IMAGE records in hierarchy order. File IDs are restricted to safe standard components, resolved relative to the DICOMDIR folder and canonicalized to remain inside the file set. Missing/unsupported images are skipped with warnings; patient/study labels are omitted. |
|
| DICOM Encapsulated PDF Storage | A | - | Validates the SOP Class and application/pdf MIME type, bounds the embedded document at 64 MiB, checks the optional document length and zero padding, then uses the PDF renderer. DICOM attributes are omitted; identifying content inside the PDF remains and is not de-identified. |
|
.jsx, .tsx, .vue, .svelte, .datauri, .path |
- | A | Wraps SVG directly into React/Vue/Svelte components, raw path data (d="..."), or Base64 Data URI strings. |
|
.svg, .svgz |
A | A | Reads SVG and gzip-compressed SVGZ with compressed and decompressed input limits; docsvg transform supports minification, monochrome styling, and responsive scaling. |
The native Node.js API can run conversion in a server or Electron main process.
For a static, frontend-only application, the separate WebAssembly package
supports PDF, DOCX, XLSX, and PPTX entirely in the browser. It converts each
page to SVG in a Web Worker and does not use pdf.js or upload the document.
Build instructions and a static viewer example are in
bindings/wasm/README.md.
Install
| Environment | Command |
|---|---|
| Node.js 18+ (npm package) | npm install document-svg |
| Python 3.10+ (PyPI package) | python -m pip install document-svg |
| CLI, with Rust installed (crate) | cargo install document-svg --locked |
Choose one installation method for your use case; you do not need all three.
Use npm to call the converter from a Node.js/TypeScript application, pip
to call it from Python, or Cargo to install the standalone docsvg command.
The npm and pip packages are language bindings, not installations of the CLI.
Python: install with pip
Create and activate a virtual environment, then install the Python package:
# macOS / Linux:
# Windows PowerShell instead: .venv\Scripts\Activate.ps1
The package name is document-svg (hyphen); the Python import is
document_svg (underscore). If your system uses python3, substitute it for
python. See the Python example below.
JavaScript / TypeScript: install with npm
Run this in your application's directory:
TypeScript declarations are included; no separate @types package is needed.
Keep npm optional dependencies enabled: they supply the native binary for your
platform. Run conversion in Node.js, not directly in a browser. See the
Node.js example below.
Standalone command: install with Cargo
For use as a Rust library instead, run cargo add document-svg in your Rust
project. For a compiler-free CLI installation, download the archive matching
your operating system and CPU from GitHub Releases, extract it, and put docsvg
(or docsvg.exe) on your PATH.
Platform support and troubleshooting
| Platform (x64 and ARM64) | npm native binding | Python prebuilt wheel | CLI archive |
|---|---|---|---|
| Windows | Yes | Yes | Yes |
| macOS | Yes | Yes | Yes |
| Linux (glibc, e.g. Ubuntu/Debian) | Yes | Yes | Yes, static musl binary |
| Linux (musl, e.g. Alpine) | Yes | Source build only | Yes |
Python wheels use the stable CPython ABI for GIL-enabled Python. Matching prebuilt packages do not require a Rust compiler. Alpine Python users need a Rust toolchain and native build tools to install the source distribution. Prebuilt musllinux Python wheels are not included in this release because their additional bundled compiler runtime has not passed the release license review.
If pip attempts a source build, a matching wheel may not be available for your
Python/platform combination; update pip and check the release assets first.
Source builds require Rust and a native linker. If npm cannot load the native
binding, check that optional dependencies were installed and that your Node.js
architecture matches the machine. Do not copy node_modules between platforms.
For a prebuilt CLI or source archives, see GitHub Releases. For authenticated GitHub Packages distribution, see Publishing and releases. The public npm registry is the simplest choice for most JavaScript users.
Build from source
The Rust crate requires Rust 1.88 or newer. Release builds are tested with Rust 1.93.
Quick start
CLI
# Optimize or clean an existing SVG
--stencils takes draw.io's own stencil files, or your own in the same format;
the sample is one written for this
repository. A shape the diagram carries itself needs nothing.
The output directory must be new or empty:
output/slides/
├── page-0001.svg
├── page-0002.svg
└── conversion.json
Open the SVGs in a compatible browser, or use them as image sources in your app.
Embedded images use the SVG 2 href attribute, so the renderer must be a current
browser, resvg, or librsvg 2.46 or newer.
Excel worksheets may span several SVG pages according to paper size and print
settings. The sample workbook produces four pages.
Each page of a draw.io file — one <diagram> element — becomes one SVG, cropped
to the drawing.
Node.js / TypeScript
const = require
.
preview() returns complete SVG strings and removes its temporary files.
Conversion runs on a worker without blocking the JavaScript event loop.
In your frontend bundle:
import from 'document-svg/preview-ui'
const url =
imageElement. = url
// Call this when replacing the image or disposing of the view.
const
Use an <img> for display rather than injecting arbitrary SVG into your DOM.
Text inside an <img> cannot be selected or searched. The clipboard helper
copies the SVG image when supported, otherwise its XML source.
English preview guide · React example · HTML export example
Python
# Convert documents to SVG files
=
# Or generate in-memory SVG pages without saving to disk
=
=
# Optimize, minify, or clean SVG markup
=
Python conversion writes SVG files and returns a dictionary. See the Python binding guide for options and source builds.
Rust
use ;
let report = convert_path?;
println!;
# Ok::
Export SVG pages to Office, CAD, or draw.io
Each SVG becomes a slide, document page, worksheet or diagram page. Office export embeds vector images with PNG fallbacks; it does not reconstruct the original paragraphs, cells, formulas or charts.
DXF export parses SVG vector shapes (<path>, <line>, <circle>, <rect>),
text, and layer groups (<g id="layer-...">) back into standard AutoCAD
Release 12 (AC1009) DXF entities (LINE, CIRCLE, ARC, TEXT).
A draw.io output restores editable shapes when the SVG carries diagram source
— what draw.io writes with "Include a copy of my diagram", and what
docsvg --embed-drawio-source writes:
Accuracy and safety
- Check document and page warnings. They identify unsupported features, approximations and review requirements; zero warnings is not a guarantee of pixel-identical Office rendering.
- Normal SVG text uses fonts available in the viewing environment. PDF embedded
text can be outlined with
--outline-embedded-pdf-textwhen appearance is the priority, at the cost of text editing and selection. - Input size, ZIP entries, XML events and page count have configurable limits. ZIP-based document packages reject central directories over 100,000 entries before any part is inflated. Public upload services should also impose process-level memory and time limits.
- Existing output files are protected against overwriting. A PDF that needs a
user password is rejected rather than cracked. A PDF encrypted with an empty
user password — the "owner password only" form that carries permission flags
such as no-printing — is opened the way any viewer opens it; those flags are
declarations, not access control, and
docsvgdoes not enforce them. Decide for yourself whether that is acceptable before converting such a file. - Preview helpers perform conservative checks, not universal SVG sanitization.
- draw.io shape libraries are drawn from draw.io's own stencil files. Point
--stencilsat them to get real icons; without it, a shape from a library becomes a labelled placeholder and says so in a warning. Shapes the editor implements in code rather than as stencils stay placeholders either way. Connector routes without explicit waypoints approximate draw.io's router rather than reproducing it.
See supported features and limitations, the security policy, and performance measurements.
Editors, agents and CI
| Surface | How to use it |
|---|---|
| Codex | ./scripts/install-codex-plugin.sh, then invoke $document-svg |
| Claude Code | /plugin marketplace add ryusui-hiro/document-svg, then /plugin install document-svg@document-svg |
| GitHub Copilot | Reads .github/copilot-instructions.md; add the setup action to your copilot-setup-steps.yml to give the coding agent the CLI |
| GitHub CLI | ./scripts/install-gh-extension.sh, then gh docsvg convert report.pdf --output preview/report |
| GitHub Actions | uses: ryusui-hiro/document-svg/.github/actions/setup-docsvg@main |
The installers build docsvg from the checkout when cargo is available, and
otherwise install a checksum-verified release build. A Rust toolchain is not
required.
Example request: “Use document-svg to convert this presentation into SVG previews and report any warnings.”
Claude Code also gets four commands: /document-svg:convert,
/document-svg:reverse, /document-svg:preview and /document-svg:setup.
Preview changed documents in a pull request
name: Document preview
on:
pull_request:
paths:
jobs:
preview:
uses: ryusui-hiro/document-svg/.github/workflows/document-preview.yml@main
permissions:
contents: read
pull-requests: write
Every changed document is converted to SVG pages, attached to the run as an artifact, and summarised as a table of page and warning counts on the pull request.
GitHub and agent integration · Plugin installation guide
Development
Contributing · Release operations · Changelog · License audit
License
MIT OR Apache-2.0, at your option. When redistributing the software, retain the copyright and license notices required by the license you choose.
See LICENSE, LICENSE-MIT, LICENSE-APACHE and the bundled third-party notices.