Key takeaway: GenDesigns benchmarked six LLMs on 10 identical mobile UI prompts in August 2026. GPT-5.6 Luna Pro was fastest at a 25.3-second median while still returning 109 HTML elements. Claude Opus 5 returned the most interface, a median 201 elements, but took 99.2 seconds. Instruction compliance was perfect for every model.
Every "best LLM for design" comparison you can find scores how good the output looks. That is a real question, and we answered it with a three-person panel. But it is not the question that decides your architecture.
If you are wiring a model into a product, the questions that actually bind are operational. How long does the user stare at a spinner? How much interface comes back per call? Does the model return the same latency every time or does one prompt in ten take four minutes? Does it draw real icons or emit placeholders?
Nobody publishes those numbers, so we measured them. On 8 August 2026 we ran 10 mobile UI prompts through six current models — 60 generations, 59 successful. This post is the operational half of that run. No visual quality judgement appears anywhere below; that needs the panel, and the panel scores live in the main benchmark.
Disclosure: GenDesigns is our product. This benchmark tests raw model APIs through OpenRouter with no GenDesigns tooling involved, and the harness that produced it is scripts/llm-ui-benchmark.ts in our repo — the run is reproducible rather than asserted.
The finding: instruction-following is uniform, so only speed and volume differ
Every model got the same system prompt: return one self-contained HTML document, use Tailwind via CDN, target a 390px viewport, output only the document with no markdown fences.
All six followed all four instructions on every single generation. Complete document: perfect. Tailwind CDN present: perfect. Viewport meta declared: perfect. Markdown fence leaked into output: zero, across all 59 successful generations.
That is a boring table and an interesting result, and it changes what a model comparison is even for. Format compliance used to be a differentiator. In this cohort it is table stakes. Once you strip it out, two things are left that genuinely vary between models — how fast a response comes back, and how much interface is in it. Both spread about 6x. They trade against each other.
The comparison table
| Model | OpenRouter ID | Median latency | Median elements | Median output tokens | Median inline <svg> | Elements/sec (whole run) | Elements per 1k output tokens | Latency range across prompts |
|---|---|---|---|---|---|---|---|---|
| Llama 4 Maverick | meta-llama/llama-4-maverick | 15.8s | 35 | 786 | 0 | 1.14 | 37.1 | 4.1–87.0s (21.2x) |
| GPT-5.6 Luna Pro | openai/gpt-5.6-luna-pro | 25.3s | 109 | 11,415 | 11 | 4.24 | 9.9 | 18.7–27.9s (1.5x) |
| Gemini 3.6 Flash | google/gemini-3.6-flash | 42.0s | 175 | 8,970 | 10 | 3.77 | 19.1 | 21.9–74.7s (3.4x) |
| Grok 4.5 | x-ai/grok-4.5 | 61.3s | 121 | 4,860 | 11 | 1.90 | 24.2 | 35.6–105.8s (3.0x) |
| DeepSeek V4 Pro | deepseek/deepseek-v4-pro | 73.2s | 119 | 5,743 | 7 | 1.23 | 18.0 | 24.1–223.8s (9.3x) |
| Claude Opus 5 | anthropic/claude-opus-5 | 99.2s | 201 | 10,168 | 24 | 1.95 | 19.4 | 65.1–150.3s (2.3x) |
"Elements" counts opening HTML tags in the returned document. It is a volume proxy — how much interface got built — and explicitly not a quality score. A 201-element screen is not automatically better than a 109-element one; it may simply be over-built. Elements/sec is aggregate across each model's full set of generations, not a median.
Speed: the ordering is stable, not an artifact of one weird prompt
A median across 10 prompts can hide a mess. It does not here. We ranked all six models by latency separately on each of the 10 prompts and looked at how much the order moved.
| Model | Latency rank on each prompt (1 = fastest) | Mean rank |
|---|---|---|
| GPT-5.6 Luna Pro | 2, 2, 1, 1, 1, 2, 2, 1, 2, 1 | 1.50 |
| Llama 4 Maverick | 1, 1, —, 4, 3, 1, 1, 2, 1, 5 | 2.11 |
| Gemini 3.6 Flash | 3, 4, 2, 2, 2, 3, 3, 6, 3, 2 | 3.00 |
| Grok 4.5 | 4, 3, 3, 3, 5, 4, 5, 3, 5, 4 | 3.90 |
| DeepSeek V4 Pro | 6, 6, 5, 5, 4, 6, 4, 4, 4, 3 | 4.70 |
| Claude Opus 5 | 5, 5, 4, 6, 6, 5, 6, 5, 6, 6 | 5.40 |
GPT-5.6 Luna Pro was never worse than second-fastest on any prompt. Claude Opus 5 was never better than fourth, and its fourth place came on the one prompt where Llama failed and left only five models in the race. Only two models were ever fastest on a prompt: GPT-5.6 Luna Pro on five, Llama 4 Maverick on the other five.
The element ordering is even more rigid. Claude Opus 5 returned the most elements on 9 of 10 prompts. Gemini 3.6 Flash took the tenth (230 elements to Claude's 201, on the SaaS analytics dashboard) and otherwise finished second on seven. Llama 4 Maverick finished last on all nine prompts it completed. No other model led on any prompt.
So the medians are describing a real, stable ordering, not an average of chaos.
The fastest model is not the highest-throughput model
Llama 4 Maverick has the lowest median latency in the cohort at 15.8 seconds. It also has the worst elements-per-second of any model tested, at 1.14 — behind DeepSeek V4 Pro, and less than a third of GPT-5.6 Luna Pro's 4.24.
Both things are true because Llama's latency is wildly unstable while its output stays tiny. Its fastest generation came back in 4.1 seconds. Its slowest took 87.0 seconds — 5.5x its own median — and returned 35 elements for the trouble, the worst latency-to-output trade in the entire dataset. Across 9 successful generations the spread from fastest to slowest is 21.2x.
This is the trap in picking a model off a median latency number. A median tells you about the middle generation. It tells you nothing about the tail, and in a product the tail is what users complain about.
Here is each model's worst prompt as a multiple of its own median latency:
| Model | Slowest single generation | As multiple of own median | Elements returned |
|---|---|---|---|
| GPT-5.6 Luna Pro | 27.9s | 1.1x | 134 |
| Claude Opus 5 | 150.3s | 1.5x | 218 |
| Grok 4.5 | 105.8s | 1.7x | 195 |
| Gemini 3.6 Flash | 74.7s | 1.8x | 132 |
| DeepSeek V4 Pro | 223.8s | 3.1x | 179 |
| Llama 4 Maverick | 87.0s | 5.5x | 35 |
GPT-5.6 Luna Pro's entire 10-generation latency range is 18.7 to 27.9 seconds — a 9.2-second window across prompts ranging from a four-field onboarding screen to a sortable analytics dashboard. It barely notices prompt complexity. DeepSeek V4 Pro's range is 24.1 to 223.8 seconds, and the 223.8-second generation is the single slowest response in the whole run.
If you are putting a latency budget or a timeout in front of a model, that column is the one to design against, not the median.
The speed/substance trade is real, and it is not linear
Two head-to-heads make the trade concrete.
Claude Opus 5 versus GPT-5.6 Luna Pro, prompt by prompt:
| Prompt | Claude latency ÷ GPT latency | Claude elements ÷ GPT elements |
|---|---|---|
| Fitness home screen | 3.3x | 1.35x |
| Banking overview | 3.7x | 2.32x |
| E-commerce product detail | 6.2x | 2.63x |
| Social feed | 4.2x | 1.76x |
| Food delivery listing | 5.2x | 2.22x |
| Meditation player | 4.0x | 1.53x |
| SaaS analytics dashboard | 3.7x | 1.50x |
| Messaging conversation | 3.1x | 1.89x |
| Onboarding step 2 of 4 | 3.5x | 1.69x |
| Settings screen | 4.1x | 2.29x |
On all ten prompts, the latency you pay for Claude exceeds the extra markup you get, and usually by a wide margin. The latency multiplier ranges 3.1x to 6.2x; the element multiplier only 1.35x to 2.63x. Waiting four times as long does not get you four times the screen.
Gemini 3.6 Flash versus GPT-5.6 Luna Pro is the cleanest trade in the dataset. Gemini returned more elements than GPT on all ten prompts, and was slower than GPT on all ten. No exceptions in either direction. The median gap is 175 elements at 42.0s against 109 at 25.3s — roughly 60% more markup for roughly 66% more wait.
That is a decision you can actually make, because it is monotone. If you want more screen and can absorb the seconds, Gemini. If seconds are the constraint, GPT.
Output tokens are a billing number, not a measure of what you got
The most useful thing in the dataset is the column nobody looks at. Element count and output token count do not track each other, and the mismatch is enormous.
| Model | Median output tokens | Median elements | Elements per 1,000 output tokens |
|---|---|---|---|
| Llama 4 Maverick | 786 | 35 | 37.1 |
| Grok 4.5 | 4,860 | 121 | 24.2 |
| Claude Opus 5 | 10,168 | 201 | 19.4 |
| Gemini 3.6 Flash | 8,970 | 175 | 19.1 |
| DeepSeek V4 Pro | 5,743 | 119 | 18.0 |
| GPT-5.6 Luna Pro | 11,415 | 109 | 9.9 |
Grok 4.5 returns a median 121 elements from 4,860 output tokens. GPT-5.6 Luna Pro returns a median 109 elements from 11,415 — more than twice the billed tokens for slightly less markup. Across the full run Grok delivers 24.2 elements per thousand output tokens against GPT's 9.9, a 2.4x efficiency gap.
Three of the six cluster tightly between 18.0 and 19.4 elements per thousand tokens, with Grok above them at 24.2. GPT-5.6 Luna Pro sits at half that cluster, alone. A plausible explanation is that the provider-reported output token count includes reasoning tokens the model generates before writing the document — tokens you are billed for and never see in the HTML. Our harness records the usage object the provider returns and does not separate reasoning from visible output, so we cannot confirm the mechanism from this data. What we can say is the billing consequence, and it is not small: if you are paying per output token and generating at volume, GPT's speed advantage and its token cost point in opposite directions.
Llama's 37.1 looks like the winner of this column and is not a useful signal. Its element counts are so small (median 35) that the ratio is measuring how little it writes, not how efficiently.
Who actually draws icons
The harness counts inline <svg> tags in each document. This is a narrow measurement — a model could use emoji, an icon font, or Unicode glyphs and score zero — but it tells you exactly one thing you often need to know: whether you can rely on getting real vector icons back.
| Model | Total <svg> across run | Median per screen | Generations with zero <svg> |
|---|---|---|---|
| Claude Opus 5 | 223 | 24 | 0 of 10 |
| Grok 4.5 | 119 | 11 | 1 of 10 |
| Gemini 3.6 Flash | 89 | 10 | 4 of 10 |
| GPT-5.6 Luna Pro | 87 | 11 | 0 of 10 |
| DeepSeek V4 Pro | 76 | 7 | 3 of 10 |
| Llama 4 Maverick | 13 | 0 | 5 of 9 |
The totals are less interesting than the zeros. Claude Opus 5 and GPT-5.6 Luna Pro drew inline SVG on every single generation. Gemini 3.6 Flash is bimodal: 23, 22, 15, 15, 10 and 4 on six prompts, and exactly zero on the other four — the banking overview, the product detail page, the food delivery listing, and the settings screen. Not "fewer icons." None.
A settings screen with zero inline SVG is a settings screen with no row icons and no chevrons, or ones built from text characters. If your pipeline post-processes SVG, extracts icons, or just assumes they exist, Gemini fails that assumption 40% of the time and DeepSeek 30%. Claude and GPT never did.
This is also the one place where Claude's volume advantage has an obvious mechanical explanation rather than being a mystery: 223 inline SVG elements is a lot of tags, and every path inside them counts toward the element total too.
Which prompts are expensive
Averaged across all six models, the ten prompts are not equally hard.
The e-commerce product detail screen was the most expensive prompt in the run: a 99.1-second mean latency across the five models that completed it, DeepSeek's worst generation at 223.8 seconds, Claude's worst at 150.3, and the single prompt that hard-failed Llama 4 Maverick.
The onboarding screen (step 2 of 4 — illustration area, headline, body copy, continue button) was the cheapest by a distance: 30.0-second mean latency, 62 mean elements, and the fastest prompt for five of the six models. It was also the lowest-SVG prompt at 4.3 mean.
The gap between the two is 3.3x in mean latency. If you are estimating cost or wait time for a screen-generation feature, the type of screen matters roughly as much as which model you picked in the middle of the pack.
So which model should you call?
Six models, six defensible answers, depending on what binds.
A human is watching a spinner → GPT-5.6 Luna Pro. 25.3s median, first or second fastest on all ten prompts, and a total range of 18.7 to 27.9 seconds. It is the only model in the cohort whose worst case you can actually promise a user. It returns a median 109 elements, the second-lowest in the cohort, so you are trading markup for that predictability.
Batch generation billed per token → Grok 4.5 or Gemini 3.6 Flash. Grok delivers 24.2 elements per thousand output tokens, the best of any model that returns a full screen, and a median 121 elements from 4,860 tokens. Gemini delivers 19.1 elements per thousand tokens and a median 175 elements — more interface per call, at 3.77 elements per second of wall clock against GPT's 4.24. Neither is fast, but in a background job nobody is watching the clock, and both cost far less per element than GPT.
Throughput-bound batch generation → GPT-5.6 Luna Pro, with a token-cost caveat. 4.24 elements per second is the highest in the cohort, so if your bottleneck is wall clock and concurrency rather than token spend, GPT wins on that axis too. Just price the 11,415 median output tokens before committing.
Densest single screen, wait acceptable → Claude Opus 5. Most elements on 9 of 10 prompts, a median 201, a median 24 inline SVGs, and zero generations without icons. It costs a 99.2-second median and a 150.3-second worst case. Note again that "densest" is not "best" — this data cannot tell you whether 201 elements is a richer screen or an over-built one.
Icons must be present → Claude Opus 5 or GPT-5.6 Luna Pro. Only these two returned inline <svg> on every generation.
Hard to recommend on operational grounds → DeepSeek V4 Pro. A 73.2-second median is survivable; a 9.3x internal spread and a 223.8-second worst case is not, if anything downstream has a timeout.
Llama 4 Maverick is a special case. Its 15.8-second median is genuine and its 4.1-second best is the fastest response in the run. But a median 35 elements and 786 output tokens is a wireframe, not a screen; it produced the worst throughput in the cohort at 1.14 elements per second; five of its nine successful generations contained no inline SVG at all; and one of its ten attempts failed outright with an Invalid JSON response from the provider. We are reporting that failure rather than silently retrying it — a 1-in-10 hard failure is a finding if you are calling this model in production.
If you are building on any of these, the model is only half the input. In our panel testing, the difference a specific, structured prompt makes was larger than the difference between models on the same prompt — and our free prompt generator will build one for you. It is also worth knowing which failure modes are inherent to raw model output before you blame the model you picked.
What this data cannot tell you
Being specific about the limits, because the numbers above are only useful if you know their shape.
One run per prompt, not three. Every per-prompt figure on this page is a single observation. The March benchmark ran three passes per prompt; this run did one. That means medians across the ten prompts are reasonably informative, but any individual cell — "DeepSeek took 223.8 seconds on the product page" — is one sample and could be a bad draw. The rank-stability tables are the strongest evidence here precisely because they aggregate across ten independent prompts rather than resting on any one.
Latency was measured under concurrent load. The harness runs jobs in parallel. The full 60-generation run finished in 4 minutes 55 seconds of wall clock while the individual request latencies sum to just under an hour, which puts roughly a dozen requests in flight at any moment. These are real wall-clock latencies for a client calling these models through OpenRouter under that load pattern, not isolated single-request best cases. A quiet, sequential caller may see faster numbers. A production system generating several screens at once will see something closer to these.
No visual quality judgement, at all. Nothing here says any model produced a better-looking screen. Element counts, SVG counts and token counts are volume and composition measurements. Scoring appearance requires the three-person panel described in the main benchmark, and we have not re-convened it for this cohort.
Output token counts are provider-reported. We record whatever usage object comes back and do not separate reasoning tokens from visible output. The elements-per-token column is therefore a billing-efficiency measurement, not a claim about how the models internally work.
This is raw model output. No theme system, no design-system context, no iteration, no retry logic. If you want to understand what sits between a model call and a usable screen, we wrote up how text-to-UI systems actually work, and the tooling landscape around these models is a separate comparison from the models themselves.
The cohort has a shelf life. These are the models available on 8 August 2026. Providers ship every few weeks. The harness is scripts/llm-ui-benchmark.ts and the run is reproducible, which is the only honest defence against a table like this quietly going stale.
Frequently Asked Questions
What is the fastest LLM for UI generation?
Llama 4 Maverick had the lowest median latency in our August 2026 run at 15.8 seconds, but it returned a median of only 35 HTML elements and its latency ranged from 4.1 to 87.0 seconds. Among models that return a complete screen, GPT-5.6 Luna Pro was fastest at a 25.3-second median with 109 median elements, and it never exceeded 27.9 seconds on any of the ten prompts.
What is the best LLM for design work?
It depends on which constraint binds. In our testing all six models followed every format instruction perfectly, so the differences are operational: GPT-5.6 Luna Pro for predictable speed (25.3s median, 1.5x range), Claude Opus 5 for the most interface per call (201 median elements, most elements on 9 of 10 prompts), Grok 4.5 for the most markup per billed token (24.2 elements per 1,000 output tokens). For a subjective visual quality ranking, see our panel-scored benchmark.
Which LLM produces the most UI per call?
Claude Opus 5. It returned a median 201 HTML elements and produced the most elements on 9 of the 10 prompts tested, losing only the SaaS analytics dashboard to Gemini 3.6 Flash's 230. Gemini was second overall at 175 median elements. Note that element count measures volume, not quality — a denser screen is not automatically a better one.
Does a faster model produce worse UI?
Faster models produced less markup in this run, which is not the same claim. Comparing Claude Opus 5 with GPT-5.6 Luna Pro prompt by prompt, Claude was 3.1x to 6.2x slower and returned 1.35x to 2.63x more elements — so the latency cost always exceeded the volume gain. Whether the extra markup is worth having is a visual quality question this run did not measure.
Which model gives the most interface per output token?
Grok 4.5, at 24.2 HTML elements per 1,000 output tokens across the run, from a median 4,860 output tokens per screen. GPT-5.6 Luna Pro was the outlier at 9.9 elements per 1,000 tokens — a median 11,415 billed output tokens for 109 elements, roughly half the token efficiency of the other four full-screen models, which ranged from 18.0 to 24.2.
Which LLM actually draws icons instead of placeholders?
Claude Opus 5 and GPT-5.6 Luna Pro were the only models that returned inline SVG on every single generation, with medians of 24 and 11 SVG elements per screen. Gemini 3.6 Flash returned zero inline SVG on 4 of 10 generations and DeepSeek V4 Pro on 3 of 10, both in an all-or-nothing pattern rather than gradually fewer icons. Llama 4 Maverick returned 13 inline SVGs total across nine screens.
Are these speed numbers reliable enough to design against?
Partly. Each prompt was run once per model, so any individual figure is a single observation. The rank orderings are the sturdier evidence: GPT-5.6 Luna Pro was first or second fastest on all ten prompts and Claude Opus 5 was fifth or sixth on nine of them, which is a consistent pattern across ten independent prompts rather than one lucky draw. Latencies were also measured with roughly a dozen requests in flight concurrently, so they reflect a system generating several screens at once rather than a single quiet request.
Did any model fail during the benchmark?
Yes. Llama 4 Maverick failed one of its ten generations with an Invalid JSON response from the provider, on the e-commerce product detail prompt. We report it rather than retrying, because a 1-in-10 hard failure rate is itself operational data. The other 59 of 60 generations completed and every one of them satisfied all four format instructions.
Related Reading
- Best LLM for UI Design: 6 Models Tested (August 2026 Data) — the panel-scored visual quality half of this run
- AI Prompts for UI Design: The Complete Framework
- AI-Generated UI Mistakes and How to Fix Them
- Text to UI: How It Actually Works
- Best AI App Design Tools (2026)
- Free UI Prompt Generator
- Generate app screens with GenDesigns — paid plans from $10/month, credits never expire, no free tier
