Open spreadsheet compatibility dataset
The machine-verified data behind this site is free to use. It records, for 600 spreadsheet functions, whether each works in desktop Microsoft Excel (from official documentation — we do not run desktop Excel) and what actually happened when we executed the formula in Excel for the web (OneDrive recalculation, 2026-09-01), Google Sheets (Drive import, 2026-09-01) and LibreOffice Calc (four pinned builds, with per-version history). Excel for the web is a separate implementation from the desktop product, so its results are reported in their own column and are evidence about the web engine only. As far as we know it’s the only openly available executed cross-application compatibility dataset.
Download
data/compat.json — one JSON object, keyed by uppercase function name (600 entries, 140 KB).
data/compat.csv — the same data as a CSV (one row per function, headered columns) for spreadsheets and data tools. Its columns are function, category, in_excel, in_google_sheets, in_libreoffice, excel_web_verdict, excel_web_executed, google_sheets_verdict, google_sheets_executed, libreoffice_verdict, libreoffice_version_tested, libreoffice_newly_supported_in — each *_verdict/*_executed pair mirrors the matching JSON keys (xwv/xwver, gv/gver). Note that in_excel is a DOCUMENTATION flag for the desktop product while excel_web_verdict is an EXECUTED measurement of a different application; there is deliberately no in_excel_web column.
The full test harness, authored test cases, and raw per-LibreOffice-version results are in the GitHub repository.
Schema
| Field | Type | Meaning |
|---|---|---|
cat | string | Function category (e.g. “Lookup and reference”). |
x | boolean | Documented in Microsoft Excel. This is desktop Excel: Microsoft publishes one function reference and it describes the desktop product. It is a documentation flag, never a measurement. |
g | boolean | Documented in Google Sheets. |
l | boolean | Documented in LibreOffice Calc. |
gv | string / null | Google Sheets executed verdict: supported, quirky, unsupported, inconclusive, or null when not yet live-tested. inconclusive means the .xlsx round trip — not Sheets — explains the result (see Sheets execution caveats); treat it as “no verdict” and fall back to g. |
gver | string / null | Label for the Google Sheets run, e.g. Google Sheets (Drive import, 2026-09-01). This is a date, not a version — Sheets is a rolling service with nothing to pin — so never parse or compare it as one. |
lv | string / null | LibreOffice executed verdict: supported, quirky, unsupported, inconclusive, or null when not yet live-tested. inconclusive means the function was executed but its documented behaviour needs something no test workbook can supply (an external data server), so no verdict is drawn — treat it as “no verdict” and fall back to l. |
lver | string | LibreOffice version the verdict was produced on (e.g. 25.8.7.3). |
lnew | string / null | The LibreOffice version the function first became supported in, when known (else null). |
xwv | string / null | Excel for the web executed verdict: supported, quirky, unsupported, inconclusive, or null when we have no Excel-web run for the function. Read this as a fact about Excel for the web and about nothing else. It is a different implementation from desktop Excel, and because we do not execute desktop Excel we cannot tell you whether a disagreement between xwv and x means the web engine diverges or the documentation is wrong about both. Null includes seven functions (the LAMBDA family) whose workbook Excel for the web refuses to open at all — that is a transport limit, not missing support. |
xwver | string / null | Label for the Excel-for-the-web run, e.g. Excel for the web (recalc, 2026-09-01). Like gver this is a date, not a version — Excel for the web is a rolling service — so never parse or compare it as one. |
There is no xw documented flag to pair with xwv. Microsoft publishes a single function reference and we have not extracted its per-application availability, so we would have to invent the flag to publish it. Use x for “Microsoft documents this function” and do not read it as “documented for the web”. | ||
Example
// fetch the dataset
const db = await (await fetch("https://canispreadsheet.com/data/compat.json")).json();
db["XLOOKUP"]
// {"cat":"Lookup and reference","x":true,"g":true,"l":true,
// "xwv":"supported","xwver":"Excel for the web (recalc, 2026-09-01)",
// "gv":"supported","gver":"Google Sheets (Drive import, 2026-09-01)",
// "lv":"supported","lver":"25.8.7.3","lnew":"24.8.7.2"}
// -> documented in all three; executed as supported in Excel for the web,
// Google Sheets and LibreOffice, first working in LibreOffice 24.8.
// x:true is Microsoft's DOCUMENTATION of the desktop product; xwv is a
// MEASUREMENT of the web app. They are different engines, not one.
// A null xwv that does NOT mean "unsupported":
db["LAMBDA"].xwv // null
// -> Excel for the web refuses to OPEN a workbook whose stored formulas carry
// the _xlpm./LAMBDA serialization, so we could not carry LAMBDA into the
// engine to measure it. Desktop Excel implements LAMBDA; this is our
// transport failing, not Excel.
// A Sheets verdict you must NOT read as "unsupported":
db["FILTER"].gv // "inconclusive"
// -> our Excel-authored .xlsx stores it as _xlfn._xlws.FILTER, which Google's
// importer did not map, so the run says nothing about Sheets. Fall back to
// db["FILTER"].g (true).
License
The compatibility dataset is released under Creative Commons Attribution 4.0 (CC BY 4.0). Use it freely, including commercially — just credit canispreadsheet.com with a link. If you build something with it, we’d love to hear about it.
The data reflects executed tests on the LibreOffice versions noted, dated Google Sheets runs (most recently 2026-09-01; each function’s own run date is its gver), dated Excel-for-the-web runs (most recently 2026-09-01; each function’s own run date is its xwver), and Microsoft’s published function documentation at the time of testing; it is provided as-is, without warranty. Google Sheets and Excel for the web both ship changes continuously, so their verdicts are dated observations rather than release guarantees. Corrections welcome via the repository.