# GLM-5.3 open weights, day one: 16 providers, five prices, four quantizations — and BF16 is the cheapest

> Fourteen hours after the weights landed, sixteen hosts served z-ai/glm-5.3 at five input prices and four declared precisions; the cheapest runs BF16.

- Published: Aug 29, 2026
- Author: Linden Kern, Chief Scientist
- Tags: models, pricing, providers, quantization
- Canonical: https://pirouter.ai/blog/glm-5-3-open-weights-day-one

---
Eight days ago we argued that [a model name is a menu label, and the product is the
tuple](/blog/one-weight-many-prices) — weights, quantization, context window, version — using
seven endpoints for Qwen3.8-27B as the exhibit. This week the market ran the experiment again,
faster and at larger scale. Z.ai pushed the last commit of GLM-5.3's weights to Hugging Face on
2026-08-28 at 15:22 UTC. When I pulled OpenRouter's endpoints API at 05:24 UTC the next
morning, fourteen hours later, the single string `z-ai/glm-5.3` resolved to **sixteen
endpoints with five different input prices ($1.20 to $1.40 per million tokens), three output
prices ($3.96 to $4.40), four self-declared precisions (bf16, fp8, fp4 and `unknown`), three
context windows (262,144, 1,048,576 and 1,310,720 tokens) and four output caps (131,072 to
1,179,648).** The cheapest row runs BF16. The two FP4 rows charge list price. Nothing in the
model name encodes any of that, and this post reads the day-one table column by column to show
what a router should be keyed on instead.

## Fourteen hours from the last commit to sixteen hosts

The timeline matters because it shows how little of a modern open-weights launch happens at
the vendor.

Z.ai's launch post on 2026-08-14 shipped GLM-5.3 as an API and made a dated promise: "We will
release the weights in two weeks after launch, once safety evaluation and hardening are
complete" ([GLM-5.3: Frontier Coding with Emergent Cyber Capabilities](https://z.ai/blog/glm-5.3)).
OpenRouter's listing for the model was created on 2026-08-18 (the API's `created` timestamp;
the page shows it as August 19), with Z.ai's own endpoint behind it. Two Hugging Face
repositories were created on 2026-08-25. On 2026-08-28 the BF16 repository
[`zai-org/GLM-5.3-BF16`](https://huggingface.co/zai-org/GLM-5.3-BF16) received its last
modification at 13:46 UTC, and the main repository
[`zai-org/GLM-5.3`](https://huggingface.co/zai-org/GLM-5.3) at 15:22 UTC — fourteen days after
the launch post, to the day. The Hacker News thread went up at 15:20 UTC. Thirty minutes
later a commenter was already crediting DeepInfra as "the first 3rd party provider for it on
OpenRouter" ([fra, HN](https://news.ycombinator.com/item?id=49480347)).

By 05:05 UTC on the 29th the endpoints API listed sixteen hosts. I pulled it again at 05:24
UTC while writing; the two snapshots agree on every price, precision, context and output-cap
field, and differ only in the rolling uptime numbers. So the table below was stable for at
least twenty minutes. I would not promise more than that, which is rather the point.

## The day-one table: sixteen rows behind one model string

Here is the 05:24 UTC snapshot, prices converted from the API's per-token strings to per
million. `Quant` is the value each host declares to OpenRouter; nobody, including me, has
verified it against the bytes being served.

| Provider | Quant (self-declared) | Context | Max output | Input / Output per 1M | Cache read per 1M |
|---|---|---|---|---|---|
| DeepInfra | bf16 | 1,048,576 | 943,718 | $1.20 / $4.00 | $0.24 |
| io.net | fp8 | 262,144 | 131,072 | $1.25 / $4.40 | $0.26 |
| AtlasCloud | fp8 | 262,144 | 131,072 | $1.26 / $3.96 | $0.234 |
| AkashML | fp8 | 1,048,576 | 943,718 | $1.30 / $4.40 | $0.26 |
| Cloudflare | unknown | 1,310,720 | 1,179,648 | $1.40 / $4.40 | $0.26 |
| Friendli | unknown | 1,048,576 | 943,718 | $1.40 / $4.40 | $0.26 |
| Fireworks | unknown | 1,048,576 | 943,718 | $1.40 / $4.40 | $0.26 |
| Baseten | fp4 | 1,048,576 | 262,144 | $1.40 / $4.40 | $0.14 |
| GMICloud | fp8 | 1,048,576 | 943,718 | $1.40 / $4.40 | $0.26 |
| Modal | unknown | 1,048,576 | 943,718 | $1.40 / $4.40 | $0.26 |
| Parasail | fp8 | 1,048,576 | 943,718 | $1.40 / $4.40 | $0.26 |
| Novita | fp8 | 1,048,576 | 131,072 | $1.40 / $4.40 | $0.26 |
| DigitalOcean | unknown | 1,048,576 | 943,718 | $1.40 / $4.40 | $0.26 |
| Together | unknown | 1,048,575 | 943,717 | $1.40 / $4.40 | $0.26 |
| Morph | fp4 | 1,048,576 | 943,718 | $1.40 / $4.40 | $0.26 |
| Z.AI | fp8 | 1,048,576 | 131,072 | $1.40 / $4.40 | $0.26 |

Source: [OpenRouter endpoints API for z-ai/glm-5.3](https://openrouter.ai/api/v1/models/z-ai/glm-5.3/endpoints), 2026-08-29 05:24 UTC. The model page shows the same rows with latency, throughput and uptime alongside; treat those three as weather, not specification.

![OpenRouter's provider table for Z.ai GLM 5.3 on 2026-08-29: DeepInfra at $1.20/$4.00 leads, then io.net, AtlasCloud and AkashML at discounted rates, then a block of hosts at $1.40/$4.40](/blog/images/glm-5-3-open-weights-day-one-or-providers.png "Fig. 1 — The same sixteen rows as OpenRouter renders them, with the per-host precision and context hidden behind the 'Filter quantization' control. The API exposes both directly. Source: [OpenRouter — Z.ai: GLM 5.3, Providers](https://openrouter.ai/z-ai/glm-5.3).")

An excerpt of the raw record, for readers who prefer the source to my table:

```json
{
  "data": {
    "id": "z-ai/glm-5.3",
    "endpoints": [
      { "provider_name": "DeepInfra", "quantization": "bf16",
        "context_length": 1048576, "max_completion_tokens": 943718,
        "pricing": { "prompt": "0.0000012", "completion": "0.000004", "input_cache_read": "0.00000024" } },
      { "provider_name": "Io Net", "quantization": "fp8",
        "context_length": 262144, "max_completion_tokens": 131072,
        "pricing": { "prompt": "0.00000125", "completion": "0.0000044", "input_cache_read": "0.00000026" } },
      { "provider_name": "BaseTen", "quantization": "fp4",
        "context_length": 1048576, "max_completion_tokens": 262144,
        "pricing": { "prompt": "0.0000014", "completion": "0.0000044", "input_cache_read": "0.00000014" } },
      { "provider_name": "Cloudflare", "quantization": "unknown",
        "context_length": 1310720, "max_completion_tokens": 1179648,
        "pricing": { "prompt": "0.0000014", "completion": "0.0000044", "input_cache_read": "0.00000026" } }
    ]
  }
}
```

## Five input prices, and the cheapest row is BF16

Start with the column most people read first. Twelve of the sixteen hosts charge $1.40 in
and $4.40 out. That is not a coincidence of the market; it is Z.ai's own list price. The
vendor's [price list](https://docs.z.ai/guides/overview/pricing) puts GLM-5.3 at $1.4 input
and $4.4 output, the same line it charges for GLM-5.2. So on day one, three quarters of the
third-party market simply copied the vendor's sheet.

Four hosts did not. DeepInfra is 14% under list on input and 9% under on output. io.net and
AkashML shave the input price and leave output at list. AtlasCloud goes the other way: input
close to list, output 10% under at $3.96. If your workload is prompt-heavy — long documents,
short answers — AtlasCloud's row is not the bargain it looks like; if it is generation-heavy,
it is the second-best line on the board. One model name, and already the cheapest host depends
on the shape of your traffic.

Now put the price column next to the precision column, because that is where the day-one
table becomes an argument. **The cheapest row, DeepInfra at $1.20, is the only one declaring
BF16 — the full-precision reference. The two rows declaring FP4, Baseten and Morph, charge
list price.** In the earlier Qwen3.8-27B table, BF16 and FP8 hosts sat at the same price; here
the ordering has inverted, and the highest declared precision is the discount line. I do not
think that says anything about the hosts' costs — a bf16 serving of a 753-billion-parameter
model is not cheaper to run than an fp4 one. It says that the price column is a business
decision and the precision column is an engineering one, and that on OpenRouter's default
routing they are only connected by accident.

The cache column has its own outlier. Baseten prices cached input at $0.14 per million,
roughly half of everyone else's $0.24–0.26. For an agent loop that re-sends a large system
prompt every turn, that halves the biggest line on the bill. It is also an FP4 host. A router
that optimises for cache-heavy workloads without a precision floor would pick it.

For completeness, the "one weight, many prices" pattern does not stop at OpenRouter. An
aggregator's own comparison from before the weights shipped lists the same GLM-5.3 at $1.40/$4.40
through the official API and at $0.06/$0.22 through a "coding" preview route marked as
"intended for testing and evaluation" with "service stability … not guaranteed"
([AIHubMix, GLM-5.3 pricing compared](https://aihubmix.com/blog/glm-5-3-pricing-compared-openrouter-z-ai-and-aihubmix)).
Twenty-three-fold on the same name. I cite it as a second sample of the pattern, not as a
recommendation for either route.

## Four quantizations, all self-declared — and what the repository actually ships

The precision column has four values. Before reading them, look at what Z.ai uploaded.

The main repository is not a BF16 checkpoint. Hugging Face's metadata for
[`zai-org/GLM-5.3`](https://huggingface.co/zai-org/GLM-5.3) counts 753,329,940,480 parameters,
of which 751,226,191,872 are stored as `F8_E4M3` and 2,103,729,152 as BF16; the model's
`config.json` carries `quantization_config.quant_method: "fp8"` with a 128×128 block size.
The 141 safetensors shards total 755.6 GB. Z.ai made FP8 the default artefact this time and
published BF16 as a sibling repository — which, per commenters on the thread, reverses its
previous practice; one put it as "This time they just made FP8 'default', accompanied by '-BF16'
model/page (previously '-FP8' was released alongside)"
([petu, HN](https://news.ycombinator.com/item?id=49482523)); another noticed the download is
"half the size of glm-5.2 756 GB vs 1.51 TB" and got the one-line answer "FP8 experts not BF16"
([rew0rk and dannyw, HN](https://news.ycombinator.com/item?id=49481697)).

So read the column again with that in mind:

- **fp8, seven hosts, including Z.AI itself.** This is the vendor's default artefact. Seven
  hosts declaring fp8 most plausibly means seven hosts serving the main repository as
  uploaded. That is the least surprising value on the board.
- **bf16, one host.** DeepInfra declares the sibling repository's precision. It is also the
  cheapest row. The declaration is DeepInfra's; OpenRouter passes it through.
- **fp4, two hosts.** Baseten and Morph declare a further quantization from either
  checkpoint. OpenRouter's own documentation lists `fp4` as a family covering `mxfp4` and
  `nvfp4` ([Provider Routing — Quantization Levels](https://openrouter.ai/docs/guides/routing/provider-selection#quantization)),
  so the column does not tell you which. Our earlier measurement week found NVFP4 flipping
  about half of top-1 tokens against BF16 at long context, and FP8 about a fifth — on a
  different model, with the damage concentrating in tool calls
  ([FP8 flips 20% of top-1 tokens](/blog/quantization-is-a-product-spec)). I am not claiming
  that number transfers to GLM-5.3; I am claiming that a buyer paying list price has no way
  to know whether it does.
- **unknown, six hosts.** Cloudflare, Friendli, Fireworks, Modal, DigitalOcean and Together
  declare nothing. OpenRouter's docs make `unknown` an explicit value in the `quantizations`
  filter, which is the right design: it lets a caller exclude it. Six of sixteen is a large
  share of the day-one market to have no stated precision at all, and every one of those six
  charges list price.

There is a reason to care that goes beyond principle. During GLM-5.2's run, a user of a
subscription product that resold open-weight models through several hosts described the
experience of mixed precision behind one name: "Most ran FP8 but one was doing FP4, so you
had this issue where one moment you had the better FP8 and another session you had the FP4
provider" ([benjiro29, HN](https://news.ycombinator.com/item?id=49481492)). That is the
failure mode, stated by someone who lived it. The day-one GLM-5.3 table contains the same
mix, at the same price.

## 262k, 1.05M, 1.31M: three context windows for a 1,048,576-token model

The context column should be the boring one. The model's `config.json` sets
`max_position_embeddings` to 1,048,576 with no rope scaling; that is the native window, and
thirteen hosts serve it (Together reports 1,048,575, one token short — a fencepost, not a
product difference, but an integer comparison in a router would treat it as one).

Two hosts, io.net and AtlasCloud, serve 262,144 — a quarter of the window — and cap output
at 131,072. They are also two of the four discount rows. A long-context request that succeeds
on fourteen hosts fails on these two with the same model string, and a router sorting on price
alone will find them second and third in line.

One host, Cloudflare, declares 1,310,720 — 25% above the model's configured maximum — with an
output cap of 1,179,648. I do not know what sits behind that number; it may be a deployment
that extends the window, or a listing artefact. What I know is that a router keyed on the name
cannot tell a host serving a quarter of the native window from one claiming more than all of
it.

The output-cap column splits four ways: 131,072 (four hosts, including Z.AI's own endpoint),
262,144 (Baseten), 943,717–943,718 (ten hosts) and 1,179,648 (Cloudflare). Note the first group. The
vendor's own endpoint caps a single completion at 131,072 tokens while ten third parties allow
seven times more. If your agent's long turns have been truncating on the official API, the
fix on day one is a different host, not a different model.

There is a fifth axis this table does not show, and GLM-5.3 makes it expensive to ignore. The
model card says the `reasoning_effort` parameter "accepts three levels: `low`, `high`, and
`max`. It defaults to `max` if not passed". All sixteen endpoints expose the parameter. Z.ai's
own curve — self-reported, on its in-house Z.ai Code Bench — puts the model at 34.5% task
completion using roughly 75K output tokens per task at Max effort and 31.4% at around 50K at
High ([GLM-5.3 launch post](https://z.ai/blog/glm-5.3)). Take those two points at face value
and the default setting buys three points of accuracy for 50% more output tokens, which at
$4.40 per million is the difference between about $0.22 and $0.33 per task — my arithmetic on
Z.ai's numbers, not a measurement. Same host, same price per token, same model name, and the
bill per task moves by half depending on a parameter most routing configs never set.

![Z.ai's chart of agentic coding accuracy against average output tokens per task at low, high and max effort for GLM-5.3, GLM-5.2 and two closed models](/blog/images/glm-5-3-open-weights-day-one-effort-curve.png "Fig. 2 — Z.ai's self-reported effort curve on its in-house Code Bench: GLM-5.3 at 31.4% around 50K output tokens (High) and 34.5% around 75K (Max). The knob is exposed on all sixteen endpoints and defaults to Max. Source: [Z.ai — GLM-5.3 launch post](https://z.ai/blog/glm-5.3).")

## What the benchmark table says, and what it cannot say about any of these sixteen rows

The model card's table is the reason most people opened the repository. It reports GLM-5.3 at
28.3 on Terminal Bench 3.0 against GLM-5.2's 4.6, 66.9 on DeepSWE v1.1 against 46.2, 28.5 on
Agents' Last Exam against 23.8, and describes the model as "the most capable open-weights
model for coding" ([model card](https://huggingface.co/zai-org/GLM-5.3)). Every number is Z.ai's
own run, with the harness settings in footnotes, and the scores for other vendors' models were
produced by Z.ai as well. Read it as a vendor's honest account of its own evaluation, which is
what it is.

What it cannot be is a statement about any row in the table above. Z.ai evaluated the
checkpoint it trained. Sixteen hosts are serving four declared precisions, three context
windows and an effort knob defaulting to its most expensive setting, and not one of those
combinations has a published score. When OpenRouter ran its own harness across seven Qwen3.8-27B
hosts two weeks ago, the same benchmark came back between 76.8% and 83.3% depending on who
answered ([Qwen3.8-27B: seven endpoints](/blog/one-weight-many-prices)). I would expect a
spread here too, and I would expect it to be widest on tool-call-heavy tasks, because that is
where the earlier logit study found the quantization damage landing. I have not run it, so I
will not guess the size. The point is narrower: **a benchmark score attaches to a checkpoint;
a price attaches to an endpoint; and the model name is the only thing they have in common.**

## What a router owes you, day-one edition

The earlier post ended with four fields a router should key on. GLM-5.3's first fourteen hours
add specifics.

OpenRouter's default is to load-balance across hosts "ordered by price"
([Provider Routing](https://openrouter.ai/docs/guides/routing/provider-selection)). On this
table, today, that sends most of your traffic to DeepInfra's BF16 row — the best outcome on the
board, arrived at by luck. The moment an FP4 or `unknown` host undercuts $1.20, the same default
sends you there instead, with no change to your config and no notice. Price-sorting is not a
precision policy; it just happened to agree with one this morning.

The fix is available now and costs two fields. OpenRouter's request body takes a `provider`
object with a `quantizations` filter and an ordered host list; setting `allow_fallbacks` to
`false` makes a miss fail loudly rather than degrade silently:

```json
{
  "model": "z-ai/glm-5.3",
  "provider": {
    "quantizations": ["bf16", "fp8"],
    "order": ["deepinfra", "z-ai", "parasail"],
    "allow_fallbacks": false
  },
  "reasoning_effort": "high"
}
```

That request excludes the two FP4 rows and the six `unknown` rows, prefers the cheapest
declared-BF16 host, falls back to the vendor's own FP8 endpoint, and sets the effort knob
explicitly instead of inheriting the most expensive default. What it still cannot express is
a context or output floor — `order` is doing that work by hand, and if DeepInfra changes its
row you will find out from a failed request. Nor does pinning protect you from the cost of
switching: a commenter on the same thread, using a different model through the same router, describes
the default routing switching hosts "too eagerly which resets the cache" ([DefineOutside, HN](https://news.ycombinator.com/item?id=49482248)),
and the reply is the same advice — pick your provider
([eikenberry, HN](https://news.ycombinator.com/item?id=49485640)). A prompt cache lives on
one host. Every silent host change is a cold cache, billed at full input price.

One more field belongs in the tuple this week, and it is not technical. GLM-5.3's weights are
not under MIT, unlike GLM-5.3-Flash and GLM-5.2. The repository carries a custom
[GLM-5.3 License](https://huggingface.co/zai-org/GLM-5.3/blob/main/LICENSE) whose second
clause defines "Model as a Service" and adds: "If the Licensee or any of its affiliates
operates a Model as a Service business, and the aggregate revenue of the Licensee and its
affiliates exceeds 10 billion US dollars … in total over any consecutive 12 months, the
Licensee must pass Z.AI's security review before using the Software or its derivative works
for any commercial purpose." That clause is why an HN reply to "will this be on Bedrock?"
reads "many of them (kimi k3, glm-5.3) have license requirements to sell them with
model-as-a-service" ([hhh, HN](https://news.ycombinator.com/item?id=49483625)). For the sixteen
hosts above it is a question about their revenue, not yours; for a team deciding whether to
self-host and resell, it is a clause to read. Our Chinese-language edition
[goes through it line by line against Flash's MIT](/zh/blog/glm-5-3-open-weights-day-one).

This is the gap PiRouter's catalog is designed around: quantization, context window, output
cap and version as first-class filterable fields on every endpoint, `unknown` surfaced as a
value rather than guessed away, and the effort default pinned per route rather than inherited.
That describes the design, not a promise about any host's declaration on any given day.

## Back to the name

Fourteen hours after the last commit, `z-ai/glm-5.3` was sixteen products. One of them was
the reference precision at the lowest price; two were four-bit at list; six declined to say;
two served a quarter of the window; one claimed more than the model has; the vendor's own row
capped output lower than most of its resellers; and every one of them defaulted to the effort
setting that costs the most. None of that is hidden — OpenRouter publishes it in an API call
you can make in a terminal. It is just not in the name, and the name is still the key most
routing configs turn. Key on the tuple. Today it points at BF16 for $1.20. Tomorrow it may
not, and that is exactly when you want to have been asking.

---

## Sources

### z.ai

- [GLM-5.3: Frontier Coding with Emergent Cyber Capabilities](https://z.ai/blog/glm-5.3)

### huggingface.co

- [`zai-org/GLM-5.3-BF16`](https://huggingface.co/zai-org/GLM-5.3-BF16)
- [`zai-org/GLM-5.3`](https://huggingface.co/zai-org/GLM-5.3)

### news.ycombinator.com

- [fra, HN](https://news.ycombinator.com/item?id=49480347)
- [petu, HN](https://news.ycombinator.com/item?id=49482523)
- [rew0rk and dannyw, HN](https://news.ycombinator.com/item?id=49481697)
- [benjiro29, HN](https://news.ycombinator.com/item?id=49481492)
- [DefineOutside, HN](https://news.ycombinator.com/item?id=49482248)
- [eikenberry, HN](https://news.ycombinator.com/item?id=49485640)
- [hhh, HN](https://news.ycombinator.com/item?id=49483625)

### openrouter.ai

- [OpenRouter endpoints API for z-ai/glm-5.3](https://openrouter.ai/api/v1/models/z-ai/glm-5.3/endpoints)
- [OpenRouter — Z.ai: GLM 5.3, Providers](https://openrouter.ai/z-ai/glm-5.3)
- [Provider Routing — Quantization Levels](https://openrouter.ai/docs/guides/routing/provider-selection#quantization)
- [Provider Routing](https://openrouter.ai/docs/guides/routing/provider-selection)

### docs.z.ai

- [price list](https://docs.z.ai/guides/overview/pricing)

### aihubmix.com

- [AIHubMix, GLM-5.3 pricing compared](https://aihubmix.com/blog/glm-5-3-pricing-compared-openrouter-z-ai-and-aihubmix)
