A generated title card reading "Clef-Flash vs Qwen3-8B" with the subhead "A typed decision against a generalist that writes back", above two small cards: Clef-Flash — "38.8 ms median, input-only price"; Qwen3-8B — "32K native, 100+ languages".
Guides & Insights

Clef-Flash vs Qwen3-8B: 38 Milliseconds Against the 8B Everyone Already Runs

Author

Rowan Sterling

Date Published

Latest models · 20View all models →
Benchmarks: Artificial Analysis · updated daily
Back to all posts

There is a specific, unglamorous job that a lot of teams hand to Qwen3-8B: read this ticket, this log line, this form, and tell me which of my four buckets it belongs in. It is a classification task dressed up as a conversation, and Qwen3-8B is good enough at it that nobody has bothered to replace it. On 30 September 2026, Cloudflare published weights for Cloudflare/clef-flash, a 9B model built to do that one job and nothing else, and the interesting question is not whether it is smarter than Qwen3-8B. It is whether the thing you are currently getting from an 8B generalist is worth paying for in generated tokens at all.

Clef-Flash answers that question with structure rather than a benchmark. It takes a state and a schema of up to 64 typed questions and returns a logit for every allowed option in a single non-autoregressive pass — no intermediate text, no parsing, no output except probabilities. Cloudflare measured a median request latency of 38.8 ms for it, against roughly 500 ms for Jev, the decision model from TypeSafe that it was benchmarked against. Qwen3-8B is not in that table, because Qwen3-8B does not play that game: it writes an answer, and you read it.

What makes this pairing worth a full comparison, rather than a page of spec rows, is that the two models share no benchmark at all. Every Clef-Flash number in circulation was produced by Cloudflare, on an index published by a competitor, and nobody outside Cloudflare has reproduced any of it. Qwen3-8B has three generations of independent use behind it and a public record you can argue with. That asymmetry, not the latency gap, is what should decide whether you make the swap.

Two output contracts, not two sizes

The parameter counts here are close enough to be a distraction — 9B for Clef-Flash against 8.2B for Qwen3-8B, 6.95B of that non-embedding. The difference that matters is what each model is allowed to emit.

Qwen3-8B is a causal language model. Give it a support ticket and it produces tokens, and by default it first produces a reasoning block, because thinking mode is on unless you turn it off. It can classify, explain, escalate, draft a reply, or tell you your taxonomy is missing a case — all from the same weights, with no schema required. Its card advertises 36 layers, grouped-query attention at 32 query heads to 8 KV heads, 100+ languages, and a context length of 32,768 tokens natively, extendable to 131,072 through YaRN. It is the model that most teams reach for because it is the model that can do anything.

Clef-Flash is a post-train, not a conversation partner. Cloudflare froze the Qwen3.5-9B backbone — including its vision encoder — and trained a joint schema head on top: 243.5 MB of head weights against four sharded backbone files that come to about 18.8 GB. The head reads the backbone's final hidden states, routes evidence from the state to each question, and scores all options of all questions together. Constraints are the feature. Cloudflare constrains it to output only probabilities, which is why the base model appears in its lineage but never in its output.

Note whose lineage it is. Clef-Flash descends from Qwen3.5-9B, the generation after the Qwen3 line Qwen3-8B belongs to. So this is not the fine-tune-of-its-own-base story that a 9B derivative usually gets — it is a different branch of the same family tree, retrained for a different contract.

A two-column scoreboard titled "Clef-Flash vs Qwen3-8B — the scoreboard" comparing six dimensions. Clef-Flash: 9B multimodal; typed probabilities, no text output; 65,536 tokens context served; $0.09 per M input tokens; 38.8 ms median latency; evidence is a Cloudflare run, unreproduced. Qwen3-8B: 8.2B causal LLM; generated text and tool calls; 32,768 tokens native, 131,072 with YaRN; no published hosted price; median latency not published; evidence is the vendor card plus a year of independent use. The footer notes Clef-Flash figures are vendor-reported and unreproduced and that Qwen3-8B context is per Alibaba's model card.

The same job, run two ways

Both models can route a support ticket. They fail differently, and the failure modes are what a migration cost.

With Qwen3-8B, the work is in the prompt and the parser. You describe your categories, ask for one of them back, and then handle the case where the model returns "this looks like billing, though it could be technical" — a real answer to a real ambiguity that your downstream code cannot consume. The card's own guidance is explicit that thinking mode should be disabled for efficiency work and that greedy decoding degrades output, and that when thinking is on you should not carry the reasoning block forward in multi-turn history. Every one of those instructions is a decision a general-purpose model forces on you.

With Clef-Flash, the work moves to the schema. You declare between two and 26 options per question for a choice question, or between two and 26 levels for a score question, and you get back the chosen option, a probability for every option, and a confidence value. Three details in that contract are worth more than the headline latency number. First, confidence is not correctness — Cloudflare's documentation says plainly that it measures how concentrated the probabilities are, not the chance the answer is right. Second, ties resolve in your declared option order, so if two options genuinely overlap, you have silently made the decision by ordering the list. Third, and this is the one that bites hardest, there is no "none of the above" unless you wrote one in. A decision model scores the options it was given; a ticket about a privacy request, handed a schema of billing, technical and sales, will come back as the least-bad of those three rather than as a refusal.

That last point cuts both ways, and it is the honest core of this comparison. Qwen3-8B will tell you your taxonomy is broken. Clef-Flash will not, and in a pipeline that is a genuine regression — the kind you discover a month later in a mis-routed queue. The trade is real latency and real determinism against a model that can surface the question you did not think to ask.

What the numbers do and do not say

Clef-Flash's published results come from Cloudflare's run of the Jev Decision Index 0.2.1 suite, and the same run informs the vendor's blog post. The strong cells are worth stating precisely: BFCL case-exact 98.8, API-Bank accuracy 93.1, the home-appliance simulator at 97.7, ContractNLI macro-F1 84.3, RouterBench selected quality 79.9. On the four end-to-end business workflows in TypeSafe's own eval suite, Clef-Flash takes customer service at 77.0 against Jev's 76.0 and the larger 27B Clef's 76.3, and loses invoice processing at 57.1 against 61.8 for Jev and 64.7 for Clef.

The weak cells are as informative as the strong ones. CLINC150 with out-of-scope handling puts Clef-Flash at 66.8 macro-F1, against 97.4 for the 27B Clef and 89.3 for Jev — a thirty-point cliff on exactly the benchmark shape that tests whether a model knows when to abstain. When2Call, 65.6 against Jev's 81.0. GPQA Diamond, 51.0 against 78.3. POP909-CL lands at 1.6, a number the card does not explain.

Now the part the tables will not tell you: Qwen3-8B has no row in any of them. Neither model has been scored on the other's benchmarks. Clef-Flash's own MMLU figure of 91.8 and GSM8K of 67.3 were produced through its typed-decision harness, which is not the harness Qwen reported its numbers on, and comparing the two would be a category error dressed as a comparison. So the honest position is that no shared scoreboard exists and this article will not invent one. What exists is a latency gap the vendor measured on its own infrastructure, a cost structure that is structurally different, and a body of Decision Index cells that nobody outside Cloudflare has reproduced.

What one decision costs

Cloudflare's Workers AI documentation lists Clef-Flash at $0.09 per million input tokens and bills nothing for output, because there is effectively no output — the worked example in the docs returns three output tokens for a three-question request. A routing decision over a 1,500-token ticket therefore costs about $0.000135 in input and nothing measurable after that. Run a million of those a day and you are at roughly $135 a day, and the number does not move when the ticket gets more complicated, only when it gets longer.

An autoregressive model has no equivalent ceiling. Every one of those million decisions also bills generated tokens, and if thinking mode is on — which it is for Qwen3-8B by default — the model may spend hundreds of tokens reasoning about which of four buckets a password-reset email belongs in before it answers. Turning thinking off with enable_thinking=False or a /no_think tag is the single highest-leverage line in any classification prompt built on that model, and it is easy to leave out. The comparison is not "cheap model versus expensive model"; it is a fixed input-only price against a price that scales with how much the model decides to say.

A screenshot of Cloudflare's Workers AI model page for clef-flash, showing the model id @cf/cloudflare/clef-flash described as a fast 9B multimodal decision model, with Model Info listing a 65,536-token context window, Unit Pricing of $0.09 per M input tokens, Vision marked Yes, and a TypeScript/Python/curl request example whose schema declares a choice question named team.

Context, three numbers from three vendor surfaces

Clef-Flash's usable context depends on which Cloudflare surface you read. The Workers AI model page documents a 65,536-token context window. The released config.json declares max_position_embeddings of 262,144 for the text tower. The card's own encoding helper defaults to max_length=16,384, with max_state_tokens available to bound the state separately. A third-party runtime listing that advertises 256K is reading the config value, not the serving limit — which reconciles that discrepancy rather than leaving it as a mystery, but the practical number for anyone calling the hosted endpoint is 65,536.

Qwen3-8B's numbers are its own and have been stable for a year and a half: 32,768 native, 131,072 with YaRN enabled, and a config default of 40,960 that reserves 32,768 for output and 8,192 for prompts. So if raw window is your deciding factor, the small autoregressive model can be extended to roughly twice what the hosted decision model documents — while the decision model needs far less of it, because you are sending state, not a conversation.

Who should swap, and who should not

• Swap — you have a fixed taxonomy, three to 26 destinations, and a support queue, a triage step, or an agent gate where 38.8 ms median and 122.4 ms p95 against half a second of generation changes what your pipeline can do.

• Swap — you are currently parsing prose out of an 8B and handling the one-in-fifty answer that did not fit your format. A distribution over declared options removes that failure class entirely.

• Do not swap — the answer set is not known in advance, or you need the model to tell you it does not know. Clef-Flash has no abstain path unless you build one into the criteria, and its weakest published cell is precisely the out-of-scope case.

• Do not swap — the workload is reasoning, extraction from unconstrained documents, summarisation, or code. Clef-Flash cannot write a sentence, so anything downstream that expects one keeps Qwen3-8B.

• Do not swap yet — you need the numbers checked by someone other than the vendor. There is no independent evaluation of Clef-Flash, and the suite that produced its scores is published by the vendor of the model it beats.

Where to run each of them

Both are Apache-2.0, so both are yours to self-host, and the footprints are not close. Qwen3-8B in bf16 is about 16 GB and quantised builds run far smaller — a Q4 build is 5.2 GB on the Ollama library, where qwen3:8b lists 38.7 million downloads and a 40K context window. Clef-Flash needs the whole 18.8 GB backbone plus its 243.5 MB head, and its Ollama library page went up within days of release, with an 11 GB quantised tag and a share count still in the low hundreds; Ollama's table reads the config's 256K rather than the endpoint's 65,536. That download ratio is not a verdict on either model — one page has been up for eighteen months and the other for about a day — but it is a fair picture of how much operational history sits behind each.

A screenshot of the Hugging Face model page for Qwen/Qwen3-8B, showing the Transformers and Safetensors tags, the apache-2.0 licence, model size of 8B params in BF16, roughly 11 million downloads in the last month, and a card describing Qwen3's switching between thinking and non-thinking modes, 100+ languages, and its tool-calling capabilities.

If you want the hosted version, Cloudflare runs Clef-Flash on Workers AI at the $0.09-per-million figure above, with the weights also downloadable from the Hub. Both models speak to Ollama's /v1/systemone endpoint for Clef-Flash (Ollama 0.35.1 or later) and the standard generate path for Qwen3 — so a swap is a client change, not an architectural one.

Neither model is currently one of our routes: OrcaRouter's public catalogue returns a 404 for clef-flash and for Qwen3-8B alike, and nothing here should be read as an availability claim from us. What a routing layer does change is the generation half of the pipeline. If a decision model ends up gating your agent, the model that acts on the decision still has to be reachable, and that is where one API for 200+ models behind a single API key earns its place — provider list price passed through at 0% markup, so a vendor price cut lands here the same day, and automatic failover so a single provider's bad afternoon does not take down a path you have just rebuilt. The Qwen line has moved on as well: Qwen3.8-27B is routable here at $0.40 in and $4.21 out per million tokens with a 262,144-token window, which is a different model from Qwen3-8B and not a replacement for it, but it is the same family one generation up.

What would change this read

Three things, in order.

An independent run of the out-of-scope cells. The gap between Clef-Flash's 97.7 on appliance simulation and its 66.8 on CLINC150+OOS does not describe a smoothly capable classifier; it describes a model that is strong inside the shapes it was trained on and weak when the correct answer is "none of these". If that holds under someone else's harness, it is the most important operational fact about the model and it is not in anybody's highlight list.

A measured latency figure from outside Cloudflare's edge. The 38.8 ms median is impressive and it was measured by the vendor, on infrastructure the vendor controls, for a model hosted at the edge. The ordering against Jev is probably robust; the absolute number is the number to distrust.

And a shared benchmark. Until someone scores Clef-Flash and a small open LLM on the same classification task with the same labels, the choice between them rests on output contract, price structure, and whose evidence you are willing to act on. Those three are enough to decide a lot of pipelines today — but they are not an accuracy comparison, and this article will not pretend they are.