Reference
Methodology · v1.1 · updated 2026-07-15Methodology.
Every figure on Tidelines is derived from a public daily snapshot of the OpenRouter and Vercel AI Gateway rankings. This page describes the sources and the exact math.
Sources & cadence
- OpenRouter rankings-daily — per-model token volumes, 30 days of history per snapshot. Pulled once per day.
- OpenRouter models catalog — pricing (prompt + completion $/token), context length, endpoints, supported parameters.
- Vercel AI Gateway models — per-model share on a second independent gateway; used for cross-source consistency checks.
- OpenRouter benchmarks — Artificial Analysis composite indices (intelligence, coding, agentic).
Estimated spend
Whenever we quote a dollar figure, it is: est. $ = tokens × blended list price where blended list price is 0.3 · prompt + 0.7 · completion in $ / M tokens from the OpenRouter catalog.
This is a list-rate estimate. It ignores negotiated enterprise discounts, cached-token rebates, and free-tier promotional traffic. It is a directional gauge of where gateway inference dollars flow, not a revenue figure.
Classifications
Published lists, sourced directly from the shared mapping the site uses everywhere:
China labs (8)
- DeepSeek
- Alibaba
- Tencent
- MiniMax
- Xiaomi
- Moonshot
- Z-AI
- StepFun
Europe labs (1)
- Mistral
US labs (6)
- OpenAI
- Anthropic
- Meta
- xAI
- Nvidia
Open-weights labs (8)
- Meta
- DeepSeek
- Alibaba
- Xiaomi
- Moonshot
- Z-AI
- Mistral
- Nvidia
Open-weights = the lab publishes model weights under a license that lets you run them yourself. Individual models within a mixed lab (e.g. Google Gemma) may be classified differently at the model level via the OpenRouter hugging_face_id field.
Blended price
Whenever we quote a single price for a model, we compute blended price = 0.3 · prompt + 0.7 · completion, both in $ / M tokens. The 30 / 70 mix reflects that most gateway traffic is generation-dominated.
Token Price Index (TPI v2)
TPI v2 is the average price of a token routed through the gateway, weighted by real per-model volume and priced from the OpenRouter catalog. Anchored to 100 on the first archived day with a computable raw value.
raw(d) = Σ_model tokens(model, d) · blended_price(model)
────────────────────────────────────────────────
Σ_model tokens(model, d)
blended_price = 0.3·prompt + 0.7·completion ($/M, catalog)
:free variants price at $0
models with no catalog price are excluded from both sums
TPI(d) = 100 · raw(d) / raw(d0)TPI is not a dollar figure; it moves with the mix of traffic across expensive and cheap models. A falling TPI means the average token routed is getting cheaper.
Median blended price paid
Usage-weighted median of blended $/M across every tracked model on a given day. Sort models by blended price ascending, walk cumulative token weight, stop at the 50th percentile. Robust to a few very expensive or very cheap outliers — this is the price the median token actually pays.
HHI top-10 concentration
Herfindahl-Hirschman on the day's top-10 model shares: HHI = Σ share_i² where share_i is percent. Values approach 10,000 in a monopoly and drop toward 1,000 when the top-10 is evenly split. Computed on top-10 only, not the full market.
Reasoning & Free indices
Reasoning flag v2 — metadata first: a model is classified as reasoning if the OpenRouter catalog's supported_parameters includes reasoning or include_reasoning, or the catalog's reasoning.default_enabled / reasoning.mandatory is set. Regex on slug + display name (matching o1|o3|o4|-r1|deepseek-r|qwq|thinking|reasoning) is used only as a fallback for models absent from the catalog.
Reasoning share = tokens routed to reasoning-flagged models ÷ total tracked tokens. Free share = tokens on :free variants ÷ total.
Trend definitions
- Momentum — 30-day change in share, in percentage points.
- Acceleration — (7-day Δ per day) − (30-day Δ per day). Positive = the model is speeding up relative to its own trend.
- Adoption velocity — days from a model's first archive appearance to crossing 0.5% and 1% share thresholds.
- Breakout — 7-day mean share > trailing 30-day mean + 2σ.
- Half-life — consecutive days a model stays at rank #1.
Overrated / Underrated
For each model with both a benchmark score and a usage share: overrated_score = benchmark_rank − usage_rank. Positive values mean a model benchmarks better than it's used (overrated on paper); negative values mean it's used more than its rank would predict (a hidden workhorse).
Archive policy
Tidelines snapshots both sources daily and appends to an immutable archive; published history is never revised. History beyond each source's own rolling window comes from our archive.
Archive start: 2026-07-08. Latest snapshot: 2026-07-15.
Limits & caveats
- All figures are gateway-observed; direct enterprise API traffic is invisible.
- Dollar figures use current list prices — negotiated rates are lower, cached tokens are cheaper, and free-tier traffic does not clear at these rates.
- Two independent gateways (OpenRouter + Vercel) don't always agree; each chart labels its source.
- Token counts come from each provider's own tokenizer — cross-model and cross-app comparisons are ordinal, not exact.
- HHI is computed on top-10 shares only; it is not a full-market HHI.
- Free-tier traffic is promotional and may not reflect paid demand (mirrors the Rankings footer note).
Attribution & citation
Upstream:
Usage data: OpenRouter (openrouter.ai/rankings) and Vercel AI Gateway (CC BY 4.0). Benchmark scores: Artificial Analysis composite indices via OpenRouter's benchmarks endpoint. Prices: OpenRouter list rates.
Citing us:
Cite as: Tidelines ({source}), {date}
e.g. "As of 2026-07-15, X holds Y% of OpenRouter token share (Tidelines)."Charts may be embedded on other sites with attribution to Tidelines and the upstream source labelled on each chart.
Changelog
- v1.1 — TPI moved to v2 (real-price weighted, history recomputed); reasoning flag moved to catalog metadata; added share, spend, classification, trends, and archive definitions.
- v1.0 — Initial methodology (TPI v1 tier weights, regex-based reasoning flag).
Rule: every formula change increments the version and adds a line here.