GRID Spreadsheet Benchmark

Formula compatibility

Reference: Microsoft Excel · v1

How closely does each spreadsheet engine calculate the way Excel does? We took 8 open-source test suites, about 102,000 test cases, recalculated each one in Microsoft Excel, and ran the same test cases through 13 engines. The compatibility score is the share of results that match Excel's.

EngineVersionTestedFailures per 1,000, log scaleCompatibility
1GRID@grid-is/spreadsheet-engine19.0.0 · Nov 9, 202619.0.0Nov 9, 20261.299.9%
2GridCraft0.17.0 · Nov 9, 20260.17.0Nov 9, 20264295.8%
3IronCalc0.9.1 · Nov 9, 20260.9.1Nov 9, 20264895.2%
4SpreadsheetGear9.3.85 · Nov 9, 20269.3.85Nov 9, 20265694.4%
5Mog1.0.0 · Nov 9, 20261.0.0Nov 9, 20268591.5%
6SpreadJS19.2.5 · Nov 9, 202619.2.5Nov 9, 20268791.3%
7Univer1.3.1 · Nov 9, 20261.3.1Nov 9, 20268891.2%
8Google SheetsWeb · Nov 9, 2026WebNov 9, 20269490.6%
9LibreOffice26.8.2.2 · Nov 9, 202626.8.2.2Nov 9, 202612687.4%
10HyperFormula3.5.0 · Nov 9, 20263.5.0Nov 9, 202617182.9%
11Gnumeric1.12.62 · Nov 9, 20261.12.62Nov 9, 202617282.8%
12Apache POI6.0.0 · Nov 9, 20266.0.0Nov 9, 202647152.9%
13fast-formula-parser1.0.19 · Nov 9, 20261.0.19Nov 9, 202653047.0%
1101001,000
Compatibility
The share of test cases where the engine's result matches Excel's exactly.
Failures
Test cases out of every 1,000 that do not match, on a log scale: each gridline is ten times the one before. Shorter is better.

Functions

Of the 497 Excel functions the suites test, how many pass all their test cases, how many pass at least 95%, and how many are not supported at all. These suites are a stress test: they exist to find what breaks, at boundaries, odd inputs and error handling. That is why no engine passes every test case of every function.

EngineAll passingAt least 95%Not supported
GRID
4394821
SpreadsheetGear
17030943
GridCraft
1232591
Univer
962109
IronCalc
582075
Google Sheets
8420028
Gnumeric
5814029
Mog
441385
SpreadJS
381188
HyperFormula
1983102
Apache POI
1572228
LibreOffice
166423
fast-formula-parser
618195

All passing95% or more, not allBelow 95%Not supported

Sorted by functions with at least 95% passing. A test case counts toward the outermost function of its formula. Not supported: at least 90% of the function's test cases return #NAME?.

How it is measured

Excel is the reference. Every test workbook is recalculated in desktop Microsoft Excel, and the values Excel computes are the expected answers. Numbers match when they are within a relative difference of 5×10⁻⁸ (about eight significant digits); an array result must spill to the same range with the same values.

Every test case counts, including those that use a function an engine does not have. Left out are test cases whose result changes on each recalculation, such as NOW and RAND, and functions Excel itself does not have.

The headline score pools every test case across the public suites. The IronCalc suite supplies about 71% of them (72,678 of 102,516), so the function view and the per-suite results are worth reading alongside it.

Each engine is tested at its newest release; the date shows when. The GRID engine is measured on these suites only, all written by others: our own test suite is not part of the scores.

Aspose.Cells is not on the board: its licence does not allow publishing benchmark results without Aspose's written consent. We will add it if Aspose agrees.

This is a stress test. These suites exist to find what breaks: boundaries, odd inputs and error handling. A score is not the share of a real workbook's cells that come out right. We have also used these suites to find and fix bugs in the GRID engine, and its score reflects that work.

v1 fixes the test suites and the method, so the numbers move only when the engines change. Adding or updating a suite, or fixing the method, makes a new version.

Results by test suite

The same score, broken down by test suite. Every suite comes from the project it is named after, so you might expect each engine to pass its own tests, outlined in the table. None does in full: IronCalc 99.9%, Apache POI 98.8%, Gnumeric 98.2%, fast-formula-parser 95.6%, Univer 93.8%, HyperFormula 85.9% and LibreOffice 83.8%.

The reason is how the benchmark is built. We keep each suite's formulas and inputs, but not its expected answers: every workbook is recalculated in Excel, and Excel's answer becomes the expected one. So when an engine misses one of its own tests here, its authors expected something other than what Excel returns. Some of those differences are deliberate, such as reading dates day first or returning a value where Excel returns an error. Others are drift: a test written to match Excel years ago may not match what Excel returns today.

EngineTest suites
fast-formula-parserGnumericHyperFormulaIronCalcIronCalc unit testsLibreOfficeApache POIUniver
GRID100.0%99.8%99.9%100.0%99.6%99.4%100.0%99.4%
GridCraft93.9%96.9%94.4%97.2%91.2%92.8%90.3%89.6%
IronCalc71.5%73.7%80.6%99.9%91.4%88.7%92.7%76.1%
SpreadsheetGear95.9%99.3%93.0%96.4%73.0%88.0%98.5%84.4%
Mog87.7%82.2%89.1%94.4%76.2%89.0%84.1%73.8%
SpreadJS87.7%69.6%91.3%94.2%87.5%86.5%79.8%79.4%
Univer91.5%85.9%91.1%92.2%88.2%88.8%78.1%93.8%
Google Sheets86.6%93.0%90.7%94.3%85.6%75.9%89.6%75.2%
LibreOffice70.0%88.5%82.8%90.7%71.6%83.8%86.8%65.0%
HyperFormula66.1%67.4%85.9%89.7%55.3%64.8%76.7%51.2%
Gnumeric81.3%98.2%84.8%83.4%72.1%80.3%93.2%71.2%
Apache POI51.0%66.3%65.2%51.6%52.6%46.1%98.8%44.3%
fast-formula-parser95.6%61.9%65.3%44.6%48.0%45.5%58.8%40.9%
npm install @grid-is/spreadsheet-enginemodel.write("A2", 125000)=IF(J6=0,0,J2/J1){ "apply": [{ "target": "A2" }] }

Get started now

Install the engine from npm with a free evaluation license and start building today. When you are ready to ship, talk to us. Most teams are surprised how quickly they go from first install to production, with direct support from the GRID team throughout.

Get started

Commercial licensing

Spreadsheets run the world

We run spreadsheets

2026 GRID

Developers

Get startedDocumentationLicensingGRID Labs

About us

CompanyCareersBlogContact us

Legal

SecurityPrivacy Policy
Press kit
Press kit

2026 GRID