📚 Documentation

💬 Join the Forum Discussion | 📄 Download PDF Documentation | 📊 View the Dashboard

📏 Thresholds Used

📈 How the Indexer Score is Calculated

The Indexer Score is based on a single critical performance metric:

This metric directly evaluates an indexer's ability to generate revenue, making it the most important indicator of real-world performance and value to delegators.

In the following sections, we break down the methodology used to compute QFR, including its normalization process. The final score is adjusted to a uniform scale where 1 represents the best performance (highest query fees relative to allocated stake) and 10 the worst (little to no query fees generated).

📐 How Allocation Efficiency Ratio (AER) is calculated:

Total GRT Allocated
(Number of Allocations * Average GRT per Allocation)

The Allocation Efficiency Ratio (AER) measures how effectively an indexer distributes their staked GRT across subgraphs.
‼️ A lower AER reflects more efficient allocation, while a higher AER suggests over-concentration.

Average allocation targets are based on indexer size:

📏 How AER is Normalized:

Normalized AER = 1 + 9 × (min(AER, 500) / 500)

AER is normalized to a scale from 1 (best) to 10 (worst) to account for varying efficiency levels across indexers:

This ensures AER values are fairly compared, with lower ratios (better performance) resulting in lower scores.

🔍 How Query Fee Ratio (QFR) is calculated:

Query Fees Generated
Total GRT Allocated

The Query Fee Ratio (QFR) measures how efficiently an indexer generates query fees per unit of allocated GRT.
‼️ A higher QFR indicates better performance, as it means more query fees are earned per GRT allocated.

📏 How QFR is Normalized:

QFR Adjusted = 1 + 9 × (min(QFR, 1.0) / 1.0)

QFR is normalized to a scale from 1 (worst) to 10 (best) to reflect its efficiency metric, where higher raw QFR values are better:

This normalization preserves QFR's meaning: indexers generating more query fees relative to their allocations receive higher (better) scores, while those with little to no fees score lower.

📊 How the Final Indexer Score is calculated:

The final Indexer Score is a weighted combination of AER (70%) and QFR (30%), producing a unified scale from 1 (best) to 10 (worst).

Both AER_norm (1=best, 10=worst) and QFR_adjusted (1=worst, 10=best) are aligned to the same direction using the QFR Adjusted formula, so no additional inversion is needed:

IndexScore = (0.70 × AER_norm) + (0.30 × QFR_adjusted) + Underserving Penalty

How it works:

⚠️ 🔴 Underserving Penalty: Indexers serving fewer than 10 subgraphs receive an additive penalty to their final score. The penalty is calculated as Penalty = 2.0 × (10 − number_of_subgraphs) / 10, and the final score is capped at 10. For example, an Indexer with 1 subgraph receives a penalty of +1.8, while an Indexer with 5 subgraphs receives a penalty of +1.0. This penalty incentivizes indexers to support a diverse set of subgraphs, contributing to the health and decentralization of The Graph Network.

🏅 Performance Flags

Each indexer is assigned a Performance Flag based purely on its final Indexer Score, providing a quick visual indicator of overall efficiency: