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.
| Engine | Version | Tested | Failures per 1,000, log scale | Compatibility | |
|---|---|---|---|---|---|
| 1 | GRID@grid-is/spreadsheet-engine19.0.0 · Nov 9, 2026 | 19.0.0 | Nov 9, 2026 | 1.2 | 99.9% |
| 2 | GridCraft0.17.0 · Nov 9, 2026 | 0.17.0 | Nov 9, 2026 | 42 | 95.8% |
| 3 | IronCalc0.9.1 · Nov 9, 2026 | 0.9.1 | Nov 9, 2026 | 48 | 95.2% |
| 4 | SpreadsheetGear9.3.85 · Nov 9, 2026 | 9.3.85 | Nov 9, 2026 | 56 | 94.4% |
| 5 | Mog1.0.0 · Nov 9, 2026 | 1.0.0 | Nov 9, 2026 | 85 | 91.5% |
| 6 | SpreadJS19.2.5 · Nov 9, 2026 | 19.2.5 | Nov 9, 2026 | 87 | 91.3% |
| 7 | Univer1.3.1 · Nov 9, 2026 | 1.3.1 | Nov 9, 2026 | 88 | 91.2% |
| 8 | Google SheetsWeb · Nov 9, 2026 | Web | Nov 9, 2026 | 94 | 90.6% |
| 9 | LibreOffice26.8.2.2 · Nov 9, 2026 | 26.8.2.2 | Nov 9, 2026 | 126 | 87.4% |
| 10 | HyperFormula3.5.0 · Nov 9, 2026 | 3.5.0 | Nov 9, 2026 | 171 | 82.9% |
| 11 | Gnumeric1.12.62 · Nov 9, 2026 | 1.12.62 | Nov 9, 2026 | 172 | 82.8% |
| 12 | Apache POI6.0.0 · Nov 9, 2026 | 6.0.0 | Nov 9, 2026 | 471 | 52.9% |
| 13 | fast-formula-parser1.0.19 · Nov 9, 2026 | 1.0.19 | Nov 9, 2026 | 530 | 47.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.
| Engine | All passing | At least 95% | Not supported |
|---|---|---|---|
| GRID | 439 | 482 | 1 |
| SpreadsheetGear | 170 | 309 | 43 |
| GridCraft | 123 | 259 | 1 |
| Univer | 96 | 210 | 9 |
| IronCalc | 58 | 207 | 5 |
| Google Sheets | 84 | 200 | 28 |
| Gnumeric | 58 | 140 | 29 |
| Mog | 44 | 138 | 5 |
| SpreadJS | 38 | 118 | 8 |
| HyperFormula | 19 | 83 | 102 |
| Apache POI | 15 | 72 | 228 |
| LibreOffice | 16 | 64 | 23 |
| fast-formula-parser | 6 | 18 | 195 |
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.
| Engine | Test suites | |||||||
|---|---|---|---|---|---|---|---|---|
| fast-formula-parser | Gnumeric | HyperFormula | IronCalc | IronCalc unit tests | LibreOffice | Apache POI | Univer | |
| GRID | 100.0% | 99.8% | 99.9% | 100.0% | 99.6% | 99.4% | 100.0% | 99.4% |
| GridCraft | 93.9% | 96.9% | 94.4% | 97.2% | 91.2% | 92.8% | 90.3% | 89.6% |
| IronCalc | 71.5% | 73.7% | 80.6% | 99.9% | 91.4% | 88.7% | 92.7% | 76.1% |
| SpreadsheetGear | 95.9% | 99.3% | 93.0% | 96.4% | 73.0% | 88.0% | 98.5% | 84.4% |
| Mog | 87.7% | 82.2% | 89.1% | 94.4% | 76.2% | 89.0% | 84.1% | 73.8% |
| SpreadJS | 87.7% | 69.6% | 91.3% | 94.2% | 87.5% | 86.5% | 79.8% | 79.4% |
| Univer | 91.5% | 85.9% | 91.1% | 92.2% | 88.2% | 88.8% | 78.1% | 93.8% |
| Google Sheets | 86.6% | 93.0% | 90.7% | 94.3% | 85.6% | 75.9% | 89.6% | 75.2% |
| LibreOffice | 70.0% | 88.5% | 82.8% | 90.7% | 71.6% | 83.8% | 86.8% | 65.0% |
| HyperFormula | 66.1% | 67.4% | 85.9% | 89.7% | 55.3% | 64.8% | 76.7% | 51.2% |
| Gnumeric | 81.3% | 98.2% | 84.8% | 83.4% | 72.1% | 80.3% | 93.2% | 71.2% |
| Apache POI | 51.0% | 66.3% | 65.2% | 51.6% | 52.6% | 46.1% | 98.8% | 44.3% |
| fast-formula-parser | 95.6% | 61.9% | 65.3% | 44.6% | 48.0% | 45.5% | 58.8% | 40.9% |
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.