---
title: "Hyperliquid Builder Codes: Revenue and Tracking"
description: "Builders earned $1.79M in five days on 16 Hyperliquid markets. Measure builder revenue, track your own code, and why native builder files stop at midday."
canonical_url: "https://0xarchive.io/resources/market-data-guides/hyperliquid-builder-codes"
markdown_url: "https://0xarchive.io/resources/market-data-guides/hyperliquid-builder-codes.md"
route: "/resources/market-data-guides/hyperliquid-builder-codes"
robots: "index, follow, max-image-preview:large"
generated_from: "prerendered_html"
---

# Hyperliquid Builder Code Revenue, Measured

How much Hyperliquid builders earn, who earns it, how to track your own builder code, and why Hyperliquid's daily builder files miss half the day.

By

[0xArchive Team](https://0xarchive.io/authors/0xarchive-team)

November 14, 2026

9 min read

- [Hyperliquid](https://0xarchive.io/resources?topic=hyperliquid)

## Key findings

1. [Five days, 16 markets](https://0xarchive.io/resources/market-data-guides/hyperliquid-builder-codes#article-section-five-days-16-markets) $357k Builder fees per day on 16 markets holding 82.8% of volume, 8 to 12 November 2026.
2. [Short answer](https://0xarchive.io/resources/market-data-guides/hyperliquid-builder-codes#article-section-short-answer) 11.7% Share of taker volume routed through builder codes.
3. [Step 3: count the whole day](https://0xarchive.io/resources/market-data-guides/hyperliquid-builder-codes#article-section-step-3-count-the-whole-day) 31.3% Share of the day's builder fees in Hyperliquid's own daily builder files.
4. [Five days, 16 markets](https://0xarchive.io/resources/market-data-guides/hyperliquid-builder-codes#article-section-five-days-16-markets) 61% Builder fees earned by the top five builders.

A builder code lets an app that sends orders to Hyperliquid, an onchain crypto exchange, charge its own fee on top of the exchange fee. Every fill records which builder it came through and what the builder earned, so builder revenue is public. We measured it across 16 markets holding 82.8% of Hyperliquid's volume for five full days, 8 to 12 November 2026: builders earned $1.79 million, about $357,000 a day. This guide shows how to measure builder revenue, how to track your own code, and why Hyperliquid's own daily builder files miss about half of each day. All code ran on 13 November 2026.

## Short answer

- **11.7% of volume went through builders.** On our 16-market sample, $4.60 billion of $39.32 billion over five days.
- **Five builders took 61% of the fees.** 665 builder addresses appeared; the top 10 earned 79%.
- **Hyperliquid's builder files stop around midday.** Each daily file ran from 00:00 UTC to a median last row at 12:11, and held 31.3% of the day's builder fees on our sample. The hours after midday include the US session.
- **The full record matches row for row.** Where a Hyperliquid file had rows, 0xArchive had the same 57,730 fills and the same fees.

## How builder fees work

From [Hyperliquid's builder code docs](https://hyperliquid.gitbook.io/hyperliquid-docs/trading/builder-codes): a user approves a builder with `ApproveBuilderFee`, setting the most that builder may charge. The app then attaches its code and a fee to each order. "Builder fees charged can be at most 0.1% on perps and 1% on spot". The fee is paid on fills, and the builder claims it through the referral reward flow.

Three things to know when you read fills:

- A fill's `fee` is the total the user paid, including the builder fee. Subtract `builder_fee` to get the exchange fee.
- The builder fields sit on the side whose order carried the code, usually the taker.
- A fill can carry a builder address with no builder fee. On the five-day sample that was 8.2% of builder-tagged rows. Hyperliquid's own fills leave `builderFee` out when it is zero, and agree with ours.

## What you need

- Python 3 with `requests` , and `lz4` to read Hyperliquid's builder files. The snippets are short prototypes without retry logic.
- A 0xArchive API key in `OXARCHIVE_API_KEY` . The Free plan includes the trades routes with a rolling 30 days of history; see [pricing](https://0xarchive.io/pricing) .

## Step 1: measure builder revenue in a market

Every trade appears as two fill rows, one per side. Sum volume on the taker row only, and sum builder fees on every row that carries one. Here is one hour of BTC and xyz:NVDA, the most traded stock perp, starting at the 14:00 UTC hour on 12 November:

```
import os, requests
from datetime import datetime, timezone
from collections import defaultdict
H = {"X-API-Key": os.environ["OXARCHIVE_API_KEY"]}
B = "https://api.0xarchive.io/v1/hyperliquid"

def fills(path, start, end):
    """Every fill row in [start, end), following the cursor. Each trade is two rows."""
    rows, cursor = [], None
    while True:
        p = {"start": start, "end": end, "limit": 50000}
        if cursor:
            p["cursor"] = cursor
        j = requests.get(f"{B}{path}", headers=H, params=p, timeout=180).json()
        rows += j["data"]
        cursor = j["meta"].get("next_cursor")
        if not j["meta"].get("has_more"):
            return rows

start, end = "2026-11-12T14:00:00Z", "2026-11-12T15:00:00Z"
fees, vol = defaultdict(float), defaultdict(float)
total = routed = 0.0
for path in ("/trades/BTC", "/hip3/trades/xyz:NVDA"):
    for r in fills(path, start, end):
        notional = float(r["price"]) * float(r["size"])
        if r["crossed"]:
            total += notional                    # count each trade once, on the taker row
            if r.get("builder_address"):
                routed += notional               # taker volume sent through a builder
        if r.get("builder_address"):
            fees[r["builder_address"]] += float(r.get("builder_fee") or 0)
            vol[r["builder_address"]] += notional
top = sorted(fees, key=fees.get, reverse=True)
print("taker volume $%.1fM | through a builder $%.1fM (%.1f%%) | builder fees $%.0f | builders %d"
      % (total / 1e6, routed / 1e6, 100 * routed / total, sum(fees.values()), len(fees)))
for b in top[:5]:
    print(b[:6] + "..." + b[-4:], "$%.0f" % fees[b], "on $%.1fM, %.2f bps" % (vol[b] / 1e6, fees[b] / vol[b] * 1e4))
```

```
taker volume $1238.7M | through a builder $160.9M (13.0%) | builder fees $76167 | builders 261
0x2a2b...0d17 $17531 on $44.7M, 3.92 bps
0xb841...f80b $13312 on $17.9M, 7.44 bps
0x5af1...5f71 $8001 on $8.0M, 10.00 bps
0xe95a...53aa $5538 on $5.5M, 10.00 bps
0x14c1...1293 $4942 on $4.9M, 10.00 bps
```

In one hour across two markets, $1.24 billion traded. 13.0% of it went through a builder, and 261 builders earned $76,167. Fees per dollar routed vary widely: one builder took 3.92 bps on $44.7 million, while three charged a flat 10 bps, the perp maximum. Addresses are shown without names. We name a builder only when its own site publishes its address.

## Five days, 16 markets

We ran the same aggregation on every fill in the 10 most traded core perps and 6 most traded HIP-3 markets, 24.98 million rows:

| Measure | 8 to 12 November 2026 |
| --- | --- |
| Builder fees | $1,786,091 ($205,182 on Sunday to $445,003 on Thursday) |
| Volume through builders | 11.7% of taker volume, 10.5% to 13.6% by day |
| Highest builder share by market | PUMP 23.4%, SOL 23.3%, BTC 16.3% |
| Lowest | xyz:SKHX 2.0%, xyz:SNDK 3.3% |
| Fee earned per builder-routed dollar | 2.87 to 4.06 bps by day |
| Fee share, top 1 / 5 / 10 / 20 builders | 18.0% / 61.1% / 78.8% / 89.5% |
| Builders earning $1,000 or more | 65 of 665 |

BTC produced 45.9% of the fees. xyz:NVDA produced 15.2% on 11% of the volume, and its builder fees grew from $16,520 on Sunday to $194,917 on Thursday as stock trading picked up through the week.

Builder fee rates cluster on round numbers: 5 bps on 23.8% of builder rows, 1 bp on 17.7%, 3.5 bps on 10.2% and 10 bps on 8.3%. No fill was above 10 bps. These totals cover 82.8% of volume; we did not scale them up to all of Hyperliquid because the builder mix in the other markets was not measured.

## Step 2: read Hyperliquid's file for your code

Hyperliquid's docs say the trades that use a builder code are uploaded to `builder_fills/{builder_address}/{YYYYMMDD}.csv.lz4`. Fetch yesterday's file for the top builder from Step 1:

```
import lz4.frame
me = top[0]
day = "20261112"
url = f"https://stats-data.hyperliquid.xyz/Mainnet/builder_fills/{me}/{day}.csv.lz4"
lines = lz4.frame.decompress(requests.get(url, timeout=60).content).decode().splitlines()
head = lines[0].split(",")
rows = [dict(zip(head, l.split(","))) for l in lines[1:]]
last = max(r["time"] for r in rows)
print("native file:", len(rows), "rows, last row", last,
      "| builder fees $%.0f" % sum(float(r["builder_fee"]) for r in rows))
```

```
native file: 20586 rows, last row 2026-11-12T12:19:21Z | builder fees $29329
```

The file's last row was at 12:19 UTC. The docs do not mention partial days, but every one of the 96 files we fetched for the top 20 builders over five days ended between 09:20 and 16:28 UTC, with a median of 12:11. Within the hours a file covers, it is complete: on 12 November, all 57,730 rows for the top 10 builders matched 0xArchive exactly, with identical fees.

## Step 3: count the whole day

For the same builder and day, count every fill in just two markets from the full record:

```
day_fee, day_rows = 0.0, 0
for path in ("/trades/BTC", "/hip3/trades/xyz:NVDA"):
    for r in fills(path, "2026-11-12T00:00:00Z", "2026-11-13T00:00:00Z"):
        if r.get("builder_address") == me:
            day_fee += float(r.get("builder_fee") or 0)
            day_rows += 1
print("0xArchive, full day, BTC + xyz:NVDA only:", day_rows, "rows | builder fees $%.0f" % day_fee)
```

```
0xArchive, full day, BTC + xyz:NVDA only: 26875 rows | builder fees $64843
```

Two markets over the full day held $64,843 of fees for this builder, more than twice the $29,329 the native file held across every market up to midday. On the 16-market sample, the files held 31.3% of the builder fees for the same builders and days. If you report revenue from those files, you report the morning.

To track your own code, run Step 3 with your address across the markets your users trade, once a day after 00:00 UTC. The wallet profile route also returns the builder fees each user paid, which matched the trades exactly in our checks. On HIP-3 markets it adds the deployer fee to that figure.

## Step 4: check what a user approved

A user's approval sets a ceiling, not the rate. Hyperliquid's `maxBuilderFee` call returns the approved maximum in tenths of a basis point:

```
N = "https://api.hyperliquid.xyz/info"
r = next(x for x in fills("/trades/BTC", "2026-11-13T17:00:00Z", "2026-11-13T17:02:00Z")
         if x.get("builder_address") and x.get("builder_fee"))
approved = requests.post(N, json={"type": "maxBuilderFee", "user": r["user_address"],
                                  "builder": r["builder_address"]}, timeout=30).json()
charged = float(r["builder_fee"]) / (float(r["price"]) * float(r["size"])) * 1e4
print("approved max %s tenths of a bp | charged on this fill %.2f bps | total fee %.2f bps"
      % (approved, charged, float(r["fee"]) / (float(r["price"]) * float(r["size"])) * 1e4))
```

```
approved max 100 tenths of a bp | charged on this fill 3.50 bps | total fee 7.82 bps
```

This user approved up to 10 bps for the builder, which charged 3.5 bps on the fill. The fill's total fee of 7.82 bps includes both the exchange fee and the builder fee. An approval can be revoked after a fill, so a zero today does not mean the fill paid nothing.

## Side by side: native sources and 0xArchive

We ran the same jobs against each source on 13 November 2026.

| Job | Hyperliquid | 0xArchive |
| --- | --- | --- |
| One builder's fees for a full day | Daily file, 1 request, rows to about 12:10 UTC. Held 31.3% of the day's fees on our sample. | Every fill, every hour, by market |
| All builders in a market | No market-wide fill endpoint. One file per builder. | One pass over the market's fills |
| A builder's lifetime rewards | `referral` call, one number | Sum of fills over any period |
| A user's approval | `maxBuilderFee`, live | Not served |
| Fee per fill | `userFills` per user, latest fills only | `builder_fee` on every fill row |

Hyperliquid's files are enough for a builder who wants the first half of each day for its own code. For full-day revenue, market share, or a comparison across builders, use every fill.

## What to know before you build

- **Count volume once.** Each trade is two rows. Sum the `crossed` (taker) row only, or volume doubles.
- **Builder maker volume is small.** Builder-routed maker notional was $106 million to $161 million a day, against $0.50 billion to $1.06 billion taker.
- **HIP-3 adds a deployer fee.** On xyz:NVDA, 2,478 of 2,480 rows carried a `deployer_fee` .
- **Hyperliquid's file arrives late.** The 12 November file for one builder was last modified at 02:43 UTC on 13 November.
- **Names need a source.** Third-party registries label many builder addresses. Use the app's own publication before you attach a name.

## FAQ

### What is a Hyperliquid builder code?

An address an app attaches to the orders it sends, with a fee it charges on top of Hyperliquid's. Users approve a maximum fee per builder.

### How much can a builder charge?

At most 0.1% on perps and 1% on spot, per Hyperliquid's docs. On our sample no fill exceeded 10 bps.

### How much do Hyperliquid builders earn?

On 16 markets holding 82.8% of volume, builders earned $1.79 million from 8 to 12 November 2026, about $357,000 a day.

### How do I track my builder code's revenue?

Sum `builder_fee` on fills that carry your address, across the markets your users trade, for full UTC days. Hyperliquid's daily files end around midday.

### Why does my builder file not match my dashboard?

In our sample the files ended between 09:20 and 16:28 UTC, with a median of 12:11. Fills after that were missing.

## Next steps

- The routes: [trades reference](https://docs.0xarchive.io/rest-api/trades) .
- Build an app that routes orders: [build a Hyperliquid trading bot](https://0xarchive.io/resources/market-data-guides/hyperliquid-trading-bot) .
- See where builder flow lands: [Hyperliquid order flow dashboard](https://0xarchive.io/resources/market-data-guides/hyperliquid-order-flow-dashboard) .
- Start with a [free API key](https://0xarchive.io/pricing) .
