# Sentry Performance Units vs Spans: What Changed?

> Learn when Sentry performance units still apply, how legacy transactions were counted, and why current span quotas need a different estimate.

- Published: 2026-09-28T00:00:00.000Z
- Updated: 2026-09-28T00:00:00.000Z
- Author: Terry Osayawe
- Tags: sentry, distributed-tracing, performance-monitoring, pricing
- Canonical: https://tracekit.dev/blog/sentry-performance-units-vs-spans

**Sentry performance units** describe a legacy way to count tracing usage. Current Sentry plans use a span quota. The two measures answer different questions. A transaction count cannot tell you your current span usage without the spans inside each transaction.

This guide explains which measure applies, shows a small historical example, and gives you a safe way to estimate current tracing volume. Check your own subscription before you change sampling or a budget.

## Do performance units still apply to your plan?

Sentry's [legacy quota guide](https://docs.sentry.io/pricing/quotas/legacy-manage-transaction-quota/) says performance units apply to paid plans activated before June 11, 2024 **that have not been upgraded since**. Sentry points free and paid plans activated on or after that date to its [span quota guide](https://docs.sentry.io/pricing/quotas/manage-transaction-quota/).

| What your account shows | Use this measure | Start with |
| --- | --- | --- |
| A legacy performance-unit allowance | Performance units | Accepted transactions and transactions with profiling |
| A span allowance | Spans | Accepted spans by project and transaction |
| An old invoice or screenshot, but a newer subscription | Check the current subscription | The usage category shown in Sentry today |

Do not use an old invoice to classify a current plan. Open **Settings → Subscription** and check the usage category for your organization. Ask an organization Billing or Owner member if you cannot see the plan details. Sentry's quota guides say those roles can change quotas.

## How did Sentry performance units work?

Sentry [introduced performance units in 2023](https://sentry.io/changelog/2023-5-9-introducing-performance-units/). Its [legacy pricing guide](https://docs.sentry.io/pricing/legacy-pricing/) lists two event weights:

| Legacy event | Performance units |
| --- | ---: |
| Transaction with tracing only | 1 |
| Transaction with profiling | 1.3 |

For example, suppose a legacy plan accepts 90,000 tracing-only transactions and 10,000 transactions with profiling. The illustrative total is `90,000 × 1 + 10,000 × 1.3 = 103,000` performance units. This is a unit count, **not** a price estimate.

The old measure weights accepted transaction events. It does not mean that a transaction always contains one span. It also does not mean that every current Sentry account uses the old measure.

## Why can't you convert units to spans with one number?

A trace can contain an incoming request span, database spans, outbound HTTP spans, and custom spans. One request may have two spans. Another may have dozens. Current Sentry tracing plans show a span allowance on the [pricing page](https://sentry.io/pricing/), and the current [quota guide](https://docs.sentry.io/pricing/quotas/manage-transaction-quota/) explains how to manage that allowance.

The diagram above shows the counting change. The legacy side assigns a weight to a transaction event. The current side counts the spans that make up the traced work. You need a measured span count per transaction to estimate current volume.

Here is an **illustrative capacity example**, not a Sentry bill:

| Route group | Monthly requests | Traced share | Average accepted spans per traced request | Estimated accepted spans |
| --- | ---: | ---: | ---: | ---: |
| Checkout | 100,000 | 10% | 12 | 120,000 |
| Health check | 1,000,000 | 1% | 2 | 20,000 |
| Total | | | | 140,000 |

Use `requests × traced share × average accepted spans` for each route group, then add the groups. This estimate ignores changes in traffic and span shape. It also assumes the measured average reflects the spans Sentry accepts. Compare the result with your actual usage before you change a quota.

For a first estimate across services, the [Tracekit span estimator](/tools/span-estimator) helps you model span volume. Use Sentry's own accepted-usage figures for a Sentry billing decision.

## A practical check before you change sampling

Sentry's [span quota guide](https://docs.sentry.io/pricing/quotas/manage-transaction-quota/) recommends checking usage by project and transaction. It also describes SDK sampling and inbound filters. Use this order:

1. **Identify the plan measure.** Check whether the subscription shows performance units or spans.
2. **Find the busiest projects.** Look at accepted, dropped, and filtered data. Only accepted events affect the quota, according to Sentry's guide.
3. **Group by transaction name.** Find high-volume routes and background work before you change a global sample rate.
4. **Measure span shape.** Record accepted spans per traced request for each important route group.
5. **Keep incident paths.** Test whether errors, slow requests, and important workflows still leave useful traces.
6. **Recheck after the change.** Compare accepted usage and trace quality over the next traffic cycle.

Sentry says the Usage Stats tab is available on Team, Business, and Enterprise plans. If your plan does not show it, use the subscription view and the usage data available to your organization.

Do not cut sampling only because a high-volume route looks expensive. A route with rare failures can still need representative traces. The [trace sampling and alerts guide](/blog/trace-based-alerts-setup-sampling) explains how missing traces affect incident signals.

## What to compare across tracing backends

When you compare tracing systems, record the same facts for each one: monthly request volume, traced share, spans per trace, accepted data, retention, and the paths needed during incidents. Avoid comparing a legacy transaction allowance with a current span allowance as if they were equal.

Tracekit accepts standard OTLP traces. Its [integration guide](/docs/integration/overview) shows the endpoint and the required export settings. The [distributed tracing page](/features/distributed-tracing) explains its trace view. You can also read the [Sentry comparison](/vs/sentry) after you estimate the data your service actually sends.

The key check is your **current** Sentry subscription. If it shows spans, use measured span volume. If it still shows performance units, use the legacy transaction weights and Sentry's legacy quota guide.
