Skip to content
Decision guide // updated July 2026

The Graph vs Goldsky vs Envio vs Ponder: Choosing a Blockchain Indexer

We operate indexers in The Graph network and build custom ones in production, so here is how The Graph, Goldsky, Envio, and Ponder actually compare in 2026.

TL;DR

For most dapps, a subgraph is still the safe default: run it on The Graph's decentralized network, or self-host graph-node, or use a managed provider like Goldsky. If backfill speed or indexing cost is your bottleneck, Envio is the fastest engine and can be self-hosted, though The Graph's Substreams closes much of that gap. If you want full control in TypeScript and can run the infrastructure, Ponder is the developer favorite. The Graph's old hosted service is gone, so it is no longer the default path.

Protofire operates indexers in The Graph network (a top-3 indexer since 2019) and maintains the open-source subgraph-toolkit. We also build custom indexers on Ponder and in Rust, and we are not affiliated with Goldsky or Envio. The sections below name where each option beats The Graph, and the throughput comparison comes from an independent Sentio benchmark. See our other decision guides, including rollup stacks.

Scorecard

At a glance

01The Graph02Goldsky03Envio04Ponder
Hosting modelNetwork, provider, or self-hostedFully managedManaged or self-hostedSelf-hosted only
Query interfaceGraphQLGraphQL, REST, SQLGraphQL (SQL on paid tiers)GraphQL, SQL
Handler languageAssemblyScript (Rust for Substreams)AssemblyScript; SQL for MirrorTypeScript, JS, ReScriptTypeScript
Chain coverageMany EVM and non-EVM150+80+ native, any EVM via RPCAny EVM via RPC
Backfill speedSubgraph baseline; Substreams narrows itSubgraph-class plus streamingFastest in the Sentio benchmarkRPC-bound unless boosted
Graph-compatibleIt is The GraphYes, drop-inNo, different frameworkNo, different framework
Runs your infraOptional (self-host graph-node)NoOptionalYes, required
Benchmark

The backfill-speed gap, in one benchmark

Envio~8 sec
SQD (Subsquid)~2 min
The Graph~19 min
Ponder~21 min

Time to index the Uniswap V2 Factory in an independent Sentio benchmark (April 2025, later forked and promoted by Envio). Lower is better, shown on a log scale. Read it as directional, not a universal law: it measures historical backfill of one contract, Sentio is itself an indexer, and The Graph's Substreams path (not the plain subgraph benchmarked here) narrows the gap. Goldsky was not in this run (it is subgraph-class).

In detail

The four indexers

01

The Graph

The decentralized subgraph standard
Strengths
  • +Largest ecosystem of existing public subgraphs and third-party tooling
  • +Decentralized network, no single provider to depend on
  • +Substreams and Firehose offer a high-throughput path beyond plain subgraphs
Trade-offs
  • Its old free hosted service is gone; you now use the network, a provider, or self-hosted graph-node
  • Plain-subgraph mappings are in AssemblyScript, a learning curve for TypeScript teams
  • Network query volume has been declining, not growing

The Graph made subgraphs the default way to index on-chain data: you define a schema and write mapping logic that turns contract events into entities, then query over GraphQL. It has by far the largest ecosystem of public subgraphs and tooling. Its free hosted service was fully sunset, so today you index with The Graph in one of three ways: publish to its decentralized network (indexers serve queries, paid via a gateway), use a managed Graph-compatible provider, or self-host the open-source graph-node yourself.

Two nuances matter for any speed comparison. First, plain subgraphs run on AssemblyScript mappings, but The Graph's high-throughput path, Substreams and Substreams-powered subgraphs (built on StreamingFast's Firehose), is a parallelized, Rust-based streaming architecture, the direct analog of Envio's engine, and it narrows most of the backfill gap shown in benchmarks of naive subgraphs. Second, network-wide query volume has trended down (a Q2 2025 peak near 6.5B fell to roughly 5.0B in Q4 2025, per Messari), which mainly matters if you are relying on the network's long-term health. This is the ecosystem we know most deeply, and it is still the right default for a large share of dapps.

02

Goldsky

Managed subgraphs plus data streaming
Strengths
  • +Drop-in for existing subgraphs (Graph-compatible)
  • +Mirror streams on-chain data straight into your own database
  • +Fully managed, no infrastructure to run
Trade-offs
  • Paid managed service, so a vendor dependency
  • Mirror's event-extraction can push reorg and state handling onto you
  • Not self-hostable

Goldsky is a fully managed indexing platform with two products. Its Subgraphs are Graph-compatible, so an existing subgraph deploys with little or no change, which made it a common landing spot for teams leaving The Graph's hosted service. Its Mirror product streams on-chain (and some off-chain) data directly into your own database or warehouse (Postgres, ClickHouse, and similar) using declarative pipelines and SQL transforms rather than hand-written handlers.

It supports 150+ chains and exposes GraphQL, REST, and SQL. The appeal is operational: subgraph or streaming indexing without running the infrastructure. The trade-offs are a paid vendor dependency and that Mirror's event-extraction model can push reorg handling and state reconstruction onto you for some pipelines, which you should check against your correctness needs.

03

Envio (HyperIndex)

The backfill-speed leader
Strengths
  • +Fastest historical backfill in the public benchmark, via its HyperSync Rust engine
  • +Managed or self-hostable via Docker
  • +TypeScript, JavaScript, or ReScript handlers, no AssemblyScript
Trade-offs
  • HyperSync covers a large but finite chain set; others fall back to standard RPC speed
  • Younger ecosystem, fewer existing public subgraphs to build on
  • Its headline benchmark is run by Sentio, itself an indexer, and Envio maintains and promotes it

Envio's HyperIndex is built around HyperSync, a Rust data layer that reads historical chain data far faster than standard JSON-RPC. You write handlers in TypeScript, JavaScript, or ReScript, get an auto-generated GraphQL API (SQL on higher tiers), and can run it managed or self-hosted via Docker. HyperSync natively covers 80+ chains, including the non-EVM Fuel network, with any other EVM chain reachable over normal RPC.

On speed: an independent Sentio benchmark (Uniswap V2 Factory, April 2025) put HyperIndex at about 8 seconds versus roughly 2 minutes for the next engine and about 19 minutes for a plain subgraph. Two caveats: Sentio is itself an indexing vendor and Envio forked and now promotes that benchmark, so treat the exact multiples as directional; and it measures historical backfill, at the chain head every engine is latency-bound and the gap shrinks. The advantage, reading history from a purpose-built engine instead of block-by-block RPC, is real, but The Graph's Substreams uses the same idea, so it is not a category of one.

04

Ponder

The TypeScript-native framework
Strengths
  • +Pure TypeScript end to end, no separate mapping language
  • +Full control; the indexer lives beside your backend, in the same repo
  • +Open-source, no vendor lock-in
Trade-offs
  • Self-hosted only, you run and scale it yourself
  • RPC-bound ingestion unless paired with a faster data source
  • No official managed or hosted service

Ponder is an open-source, self-hosted framework where you write the entire indexer in TypeScript, no AssemblyScript, and it exposes a GraphQL and SQL API. The indexer lives beside your application backend, in the same language and repo, so for a team already in a TypeScript and Node stack the developer experience is the main draw: no separate mapping language, and testing and local development feel like the rest of your backend. We run production Ponder indexers ourselves (for example a Ponder-based indexer for on-chain auctions).

The trade-offs are operational: there is no official hosted service, so you own running and scaling it, and ingestion moves at standard RPC speed unless you pair it with a faster data source. It suits teams with real DevOps capability, and it is the wrong choice for a team that wanted a managed service.

Verdict

Which should you use?

If your priority is
Widest support and decentralization

you are comfortable with subgraphs, want the largest ecosystem, and value a decentralized network or the option to self-host graph-node.

The Graph
If your priority is
Zero-ops, managed

you want subgraphs without operating infrastructure, a drop-in home after the hosted-service sunset, or data streamed into your own database.

Goldsky
If your priority is
Fastest backfill or lowest cost

historical backfill time or indexing cost is the bottleneck and your chains are HyperSync-supported; you also want the option to self-host.

Envio
If your priority is
Full TypeScript control

your team lives in TypeScript, you want the indexer beside your backend, and you can run the infrastructure yourself.

Ponder
Also consider

Beyond the four indexers

  • SQD (formerly Subsquid): a decentralized data-lake indexer, strong at fast historical backfills (it placed second in the benchmark above). Note it was acquired by Rezolve AI in October 2025 and is mid-rebrand, so weigh its roadmap.
  • Sentio and Ormi: full indexers in their own right (Sentio adds SQL and non-EVM chains; Ormi is a real-time, Graph-compatible platform), both credible 2026 options beyond the four above.
  • Data platforms and APIs (Chainbase, Alchemy, Moralis, Covalent): Chainbase is a full index-and-SQL platform, not just an API; the others are ready-made data APIs. If you only need standard token, NFT, or transaction data, one of these can be simpler than running any indexer.

FAQ

How much does blockchain indexing cost?
It depends on the model more than the tool. Self-hosting an open-source indexer (graph-node, Ponder, or a custom Rust engine) trades a subscription for infrastructure and engineering time: you run the nodes, storage, and RPC, and absorb reindexing costs. Managed providers (Goldsky, Envio's hosted service, or The Graph's decentralized network) charge per query, per data volume, or via query fees, which is cheaper to start and predictable to run but scales with usage. The two hidden cost drivers are historical backfill (how fast and how often you reindex from genesis) and archive-node or RPC access. Note that an indexer is not a query and analytics layer like Dune or Flipside: an indexer produces the structured data your app reads live, while those tools are for ad hoc analysis and dashboards.
Is The Graph's hosted service still available?
No. The Graph fully sunset its hosted service, so there are now three ways to use it: publish to the decentralized network (indexers serve your queries through a gateway, with a free tier and USD or GRT billing), use a managed Graph-compatible provider like Goldsky, or self-host the open-source graph-node yourself. Teams that were on the hosted service moved to one of these. If you specifically want a managed, drop-in experience, an existing subgraph deploys to a provider like Goldsky with little or no change.
What is the fastest blockchain indexer?
For historical backfill, Envio's HyperIndex leads the public Sentio benchmark (about 8 seconds versus ~2 minutes for the next engine and ~19 minutes for a plain subgraph). Read that carefully: it is one contract's backfill, Sentio is itself an indexer, and Envio maintains and promotes the benchmark, so the exact multiples are directional. It also compares against a naive subgraph, not The Graph's Substreams path, which uses the same parallelized-streaming idea and closes much of the gap. At the chain head, every engine is latency-bound and the difference shrinks. So the honest answer: Envio is fastest for large backfills on supported chains, but "fastest" depends heavily on the workload.
Do I need a subgraph, or a custom indexer like Ponder?
A subgraph, on The Graph or a managed provider, is the right default for most dapps: mature, well supported, and quick to ship. You move to a framework like Ponder or Envio when you need something a subgraph handles awkwardly: real-time freshness, heavy SQL-style analytical queries, very high throughput, or an indexer that lives inside your own TypeScript backend with full control. Many teams use both, a subgraph for standard reads and a custom indexer for the parts that outgrow it.
Can I move an existing subgraph to a different provider?
Usually yes, with little friction, if you move to a Graph-compatible provider such as Goldsky, which runs existing subgraphs as-is. Moving to a different framework like Envio or Ponder is a rewrite, because the handler language and execution model differ, but it is a bounded one and often worth it when speed or full control is the goal. We do these migrations and the assessment behind them as part of our indexing work.
How do you keep indexed data correct during chain reorgs?
A good indexer detects reorganizations and unwinds and reapplies the affected blocks, so it never serves data from an orphaned chain. Managed subgraph platforms handle this for you. Streaming or event-extraction pipelines can push more of the reorg and state-reconstruction responsibility onto the client, which you should confirm before you depend on one. When we build custom indexers we design reorg handling, backfill strategy, and monitoring up front, because correctness under reorgs is where indexers quietly break.

Reviewed by Luis Medeiros, Field CTO at Protofire. Last updated: July 2026.

Build it

We operate indexers in The Graph network and build custom ones on Ponder and in Rust, including the subgraphs, backfill strategy, reorg handling, and monitoring behind them.

blockchain data indexing

Book a call with Alejandro Losa

Need an indexing layer built or a subgraph migrated? Talk to us about the right approach for your product.

Protofire 2026. All rights reserved

Message us on Telegram