An open, honest, and objective benchmark for blockchain indexers. All results are publicly verifiable, all code is open, and contributions are welcome.
This project started in May 2025 as a fork of Sentio's research on blockchain indexer performance. The original repository was later closed and only the fork remained. Envio has since reopened and extended the benchmark to cover new use cases and keep results current as indexers evolve.
We are not affiliated with Sentio. A few changes were made to the original codebase to make Envio usage more idiomatic. The SQD team made similar adjustments for their implementation.
Even though this benchmark now lives under the Envio organisation, the goal is objective and fair comparisons. Contributions from any indexer team are welcome.
Indexers included in this benchmark (alphabetical order):
Backfill speed: each indexer runs for 60 seconds (SubQuery runs for 180s to amortise its slower startup; the summary divides by each indexer's actual duration). We measure how many blocks and events were indexed per second. Results are sorted by the most efficient indexer in each category.
All benchmarks run in GitHub CI on ubuntu-latest runners. Indexers without built-in data source support use Envio HyperRPC as the RPC provider.
You can enter the cases directory to see code, setup instructions, and run the benchmarks yourself.
Results of indexing the Rocket Pool ERC20 token contract on Ethereum Mainnet. Stores decoded event logs and aggregates account balances. Inspired by the benchmark used on the Ponder landing page.
| Envio | Sqd (28.3x slower) | Rindexer (40.5x slower) | Envio - RPC (40.5x slower) | Ponder (241.5x slower) | SubQuery (36037x slower) | |
|---|---|---|---|---|---|---|
| blocks/s | 129,733.2 | 4,582.2 | 3,201.5 | 3,200.0 | 537.2 | 3.6 |
| events/s | 18,456.7 | 645.5 | 157.2 | 244.2 | 46.9 | 0.1 |
See the full breakdown in ./cases/erc20-account-balances/README.md.
Results of indexing raw Transfer event logs from the USDC token contract on Ethereum Mainnet, starting at block 18,600,000. Stores every decoded Transfer event with no aggregation — a pure write-only ingestion throughput test.
| Envio | Sqd (3.4x slower) | Rindexer (4.1x slower) | Envio - RPC (53.2x slower) | Ponder (251.1x slower) | SubQuery (1891.3x slower) | |
|---|---|---|---|---|---|---|
| blocks/s | 5,674.0 | 1,656.8 | 1,368.0 | 106.7 | 22.6 | 3.0 |
| events/s | 49,753.9 | 13,097.8 | 10,805.4 | 742.3 | 184.2 | 25.0 |
See the full breakdown in ./cases/erc20-transfer-events/README.md.
Six real-world indexing scenarios covering events, blocks, transactions, and traces on Ethereum Mainnet.
| Case | Description |
|---|---|
| case_1_lbtc_event_only | Simple event indexing of LBTC token transfers. No RPC calls, write-only. |
| case_2_lbtc_full | Complex indexing with RPC calls for token balances and point calculation. Read-after-write. |
| case_3_ethereum_block | Block-level indexing of Ethereum blocks and metadata extraction. |
| case_4_on_transaction | Transaction gas usage indexing. |
| case_5_on_trace | Uniswap V2 transaction trace analysis. Transaction trace handling, swap decoding. |
| case_6_template | Uniswap V2 template benchmark. Event handling, pair and swap analysis. |
| Case | Sentio | Envio HyperSync | Envio HyperIndex | Ponder | Subsquid | Subgraph | Sentio_Subgraph | Goldsky_Subgraph |
|---|---|---|---|---|---|---|---|---|
| case_1_lbtc_event_only | 8m | 3m | 1h40m | 10m | 3h9m | 2h36m | ||
| case_2_lbtc_full | 6m | 1m | 45m | 34m | 1h3m | 56m | ||
| case_3_ethereum_block | 18m | 7.9s | 33m | 1m‡ | 10m | 15m | ||
| case_4_on_transaction | 17m | 1m26s | 33m | 7m | N/A | |||
| case_5_on_trace | 16m | 41s | N/A§ | 2m | 8m | 1h21m | ||
| case_6_template | 19m | 8s | 21m | 2m | 19m | 10m | 20h24m |
See the full breakdown in ./sentio-benchmarks-may-2025/README.md.
See the README in each case directory for setup instructions and requirements:
- ./cases/erc20-account-balances/README.md
- ./cases/erc20-transfer-events/README.md
- ./sentio-benchmarks-may-2025/README.md
Contributions are welcome. Open an issue or pull request to add a new indexer, add a new benchmark scenario, report a result that looks incorrect, or improve methodology.
All benchmark data referenced on the Envio landing page and in the Best Blockchain Indexers in 2026 comparison article comes from this repository.