Spreadsheet rendering SDK · self-hosted CLI, Docker, and .NET no Office · no LibreOffice · BUSL-1.1
01Fidelity · evidence, not adjectives

Fidelity is measured,
not claimed.

Every rendering engine says “high fidelity.” This page is where Rendlio has to prove it: per-area acceptance scores against Microsoft Excel’s own print output, on a corpus you will be able to download and re-run yourself. Until the harness publishes a number, the number does not exist here.

02Methodology · how a score is earned

Excel is the oracle.
The rubric is signable.

Fidelity only means something if the reference and the rules are fixed before the run. Ours are. The status vocabulary the scores use is the compatibility-report contract — every number that ever appears on this page uses exactly those words.

The oracle

Microsoft Excel’s own print output

The reference for every fixture is what Excel itself prints for that workbook. Not a rival library, not our opinion — Excel’s output is the definition of correct.

The rubric

Scored page by page, against written rules

Each rendered page is compared to the oracle page under a rubric fixed before the run: geometry, text, and colour tolerances a reviewer can check and sign, not a vibe.

The corpus

Real-world workbooks, not toy sheets

Invoices, financial closes, dashboards, exports from real systems. Every feature in the registry must hold at least one fixture before its quality gate closes.

Determinism

Re-runs must reproduce the score

Same corpus, same engine version, same bytes out — across operating systems. A score that cannot be regenerated on your machine does not get published on ours.

03Scoring bands · the same words as the report

Four statuses.
No fifth meaning hidden anywhere.

The bands on this page are exactly the statuses in every compatibility report the engine emits. What we score ourselves on is what your pipeline gates on — one vocabulary, end to end.

scoring bands · identical semantics on this page and in every conversion report compat-report.v1
StatusWhat it meansWhat the report carries
SUPPORTED The feature renders to match Excel’s print output within the rubric’s tolerances. Green is a guarantee backed by fixtures, not a hope. The feature id and where it occurred. No warning code — there is nothing to warn about.
PARTIAL Rendered with a documented deviation — typically an interactive behaviour flattened to its current state, or a date-dependent rule evaluated at conversion time. A warning code naming exactly what differs and why, plus the locations affected.
SKIPPED Present in the file but intentionally outside conversion semantics — macros are never executed, live external data is never fetched (cached values render instead). Not a fidelity gap, still disclosed. The feature id, its locations, and a warning code where one applies.
UNSUPPORTED Not rendered faithfully — so not silently approximated. The element is omitted or substituted, and the report says so before your customer sees the page. A warning code, the locations, and a non-zero exit code your CI can gate on.
04Acceptance scores · by rendering area

What will be published here.

Scores are reported per area, per fixture, next to the exact corpus hash that produced them. You will never see a single headline percentage on this page — a format this large cannot be summarised into one number honestly.

Engine status · pre-alpha

The corpus harness is being built now. Per-feature acceptance scores publish here as they land, area by area, and the full public corpus ships at GA as an Apache-2.0 repository — so every number on this page can be reproduced by anyone.

Nothing here will ever be typed in by hand: the tables are generated from the harness’s committed result files, and the site build fails if a score appears without a data file behind it.

acceptance scores by area · 178 registry entries across 10 rendering areas corpus — · sha256 — · generated —
AreaRegistry entriesPass rateSSIM vs oracleStatus
Parsing & workbook modelZIP/OPC container, shared strings, cached formula values, merged ranges, date systems 29 publishing with M1 gate
Styles & themesborders, pattern fills, fonts, theme colours and tint maths, xf resolution 11 publishing with M1 gate
Number formatsthe full format-code language: General, dates, fractions, sections, locales, fills 22 publishing with M1 gate
Layout & printrow/column geometry, pagination, print areas and titles, headers/footers, scaling 42 publishing with M1 gate
Conditional formattingcellIs rules, colour scales, data bars, icon sets, top/bottom and average rules 16 publishing with M1 gate
Chartsbar, line, pie, and area chart types with axes, legends, and data labels 22 publishing with M1 gate
Images & drawingsembedded rasters, transcoding of non-JPEG/PNG formats, anchored placement 2 publishing with M1 gate
Fonts & texttext measurement, metric substitution (Calibri, Aptos, Arial…), bundled OFL faces, wrapping 15 publishing with M1 gate
PDF outputPDF 1.7 and PDF/A-2b, deterministic font subsets, veraPDF-clean in CI 14 publishing with M1 gate
PNG outputper-page rasters from the same layout IR, 96–600 DPI 5 publishing with M1 gate

Areas and entry counts come from the feature registry in the source repository (spec/features.yaml) — the same registry that drives the engine’s fixtures and every compatibility report. Pass rate = share of an area’s fixtures scored SUPPORTED under the rubric; SSIM = structural similarity of rendered pages against rasterised Excel oracle prints. Comparative numbers against other engines are a separate, later publication — they appear only once the corpus and harness are public, so anyone can re-run them.

05Determinism · why the scores stay honest

A score you cannot
reproduce is an adjective.

01

Deterministic runs

Engine code contains no clock, no randomness, and no network — enforced by analyzers in CI. The same corpus renders to the same bytes, every run.

02

Cross-platform proof

Each published run re-renders the corpus on multiple platforms. Any byte difference between them fails the gate — the score never publishes.

03

Auditable inputs

The corpus is content-addressed: its sha256 prints next to every score, so you can verify you are re-running exactly what we scored.

The benchmark that actually matters

Test with your own workbook.

Corpus scores describe our fixtures. The playground applies the same standard to your file: one workbook in, the rendered output and its compatibility report out.