What this is
Simon Willison tests language models by asking them to draw a pelican riding a bicycle in SVG. A well-known test can end up in training data, so this site uses thirty new prompts of the same shape: a living thing doing something unlikely with a machine. Each model received one prompt at a time as a plain message, with no system prompt, and answered in SVG code. The SVG was cut from the reply and saved as it was.
2026 run
In September 2026, six current models were run through OpenRouter with reasoning effort set to high: one each from OpenAI, Anthropic, and Google, two from Chinese labs, and one from Sakana AI. So far the 2026 run covers prompts 1 to 10. Times are wall-clock from request to reply. Costs are what OpenRouter billed. Output tokens include reasoning tokens.
| Model | Developer | Listed on OpenRouter | Images | Avg. time | Output tokens | Reasoning tokens | Cost | Per image |
|---|---|---|---|---|---|---|---|---|
| GPT-6 Astra | OpenAI | 2026-09-04 | 10 | 2 min 0 s | 56,877 | 10,260 | $2.85 | $0.28 |
| Claude Fable 5.1 | Anthropic | 2026-09-01 | 10 | 1 min 52 s | 89,023 | 37,209 | $4.45 | $0.45 |
| Gemini 3.8 Flash | 2026-09-02 | 10 | 2 min 40 s | 234,386 | 63,598 | $0.88 | $0.09 | |
| DeepSeek V4 Pro | DeepSeek | 2026-08-12 | 10 | 4 min 4 s | 194,740 | 134,928 | $0.64 | $0.06 |
| Qwen3.8 Max | Alibaba | 2026-09-03 | 10 | 10 min 43 s | 292,522 | 216,330 | $1.76 | $0.18 |
| Fugu Ultra v2 | Sakana AI | 2026-09-11 | 10 | 6 min 39 s | 310,707 | 107,868 | $9.94 | $0.99 |
| Total | 60 | $20.51 | $0.34 |
2025 run
The first run took place in autumn 2025 with default settings. Gemini 3.0 Pro Preview and GPT-5.1 were added on 19 November 2025, Claude Opus 4.5 on 25 November, and GPT-5.2 Pro was run on the first three prompts on 12 December, at about 80 cents per image. Kimi K2 Thinking was planned but dropped because its replies took too long.
| Model | Developer | Parameters | Listed on OpenRouter | Images made | Prompts |
|---|---|---|---|---|---|
| Claude Sonnet 4.5 | Anthropic | undisclosed | 2025-09-29 | autumn 2025 | 30 of 30 |
| Claude Opus 4.5 | Anthropic | undisclosed | 2025-11-24 | 25 November 2025 | 30 of 30 |
| GPT-5.1 | OpenAI | undisclosed | 2025-11-13 | 19 November 2025 | 30 of 30 |
| GPT-5.2 Pro | OpenAI | undisclosed | 2025-12-10 | 12 December 2025 | 3 of 30 |
| Gemini 2.5 Pro | undisclosed | 2025-06-17 | autumn 2025 | 30 of 30 | |
| Gemini 3.0 Pro Preview | undisclosed | 2025-11-18 | 19 November 2025 | 30 of 30 | |
| Grok Code Fast 1 | xAI | 314B (MoE) | 2025-08-26 | autumn 2025 | 30 of 30 |
| DeepSeek V3.2-Exp | DeepSeek | 685B total / 37B active (MoE) | 2025-09-29 | autumn 2025 | 30 of 30 |
| GLM-4.6 | Z.ai (Zhipu) | 355B total / 32B active (MoE) | 2025-09-30 | autumn 2025 | 30 of 30 |
| Qwen3-VL-235B-A22B-Thinking | Alibaba | 235B total / 22B active (MoE) | 2025-09-23 | autumn 2025 | 30 of 30 |
Display
A file that is not well-formed XML is marked as not rendering. A file that gives a width and height but no viewBox would not scale inside an image tag, so the page scales it with a transform. The files themselves are not changed.
How the site was made
The prompts, the code that called the models, and this website were all produced by Claude, Anthropic’s AI model, working as Claude Code. Tom Gally wrote the two prompts below that started the project in 2025 and paid for the API calls. Claude wrote the third prompt from the second and then carried it out. The 2026 run and the current version of the site were done by Claude Fable 5.1. The 2025 version of the site is kept unchanged.
Prompt 1: the request for thirty prompts (Tom Gally, 2026)
Simon Willison has created an amusing yet useful benchmark for LLMs. He gives them the prompt 'Generate an SVG of a pelican riding a bicycle' and displays the results. This benchmark has attracted a lot of attention on Hacker News and elsewhere. However, some people have suggested that LLM makers might be training the models to perform well on this benchmark. I would therefore like to create a similar set of benchmarks that no one has used previously. Like Simon's, the prompt should be of the form 'Generate an SVG of [A] [doing] [B].' [A] should be a natural, organic, living being with a complex shape (moose, starfish, etc.). [B] should be an inorganic, manmade object with a complex shape (picnic bench, bulldozer, Ferris wheel, etc.). And [doing] should be an action for which it would be surprising for beings of category [A] to do with respect to [B]. Please suggest 30 prompts of that form for different, original combinations of [A], [doing], and [B]. Do not repeat any entries in the three categories.
Prompt 2: the request for a Claude Code prompt (Tom Gally, 2025)
Great. Now create a prompt that I can give to Claude Code to generate all of those images through OpenRouter using the following models: moonshotai/kimi-k2-thinking, anthropic/claude-sonnet-4.5, x-ai/grok-code-fast-1, google/gemini-2.5-pro, deepseek/deepseek-v3.2-exp, z-ai/glm-4.6, qwen/qwen3-vl-235b-a22b-thinking. After it has created those images, it should create a static website allowing users to view and compare the images for each model. Below each image should be the model name. Include a placeholder for my OpenRouter API key in the prompt. The website should be self-contained, using only HTML, JavaScript, and CSS, with no external dependencies. One page on the site should include my original prompt to you above, this meta prompt, and the prompt you create for Claude Code to explain how the site was created.
Prompt 3: the Claude Code prompt that Claude wrote (2025)
Create a comprehensive SVG generation benchmark system using OpenRouter to test multiple LLM models. Follow these steps: **Step 1: Generate SVG Images** Using the OpenRouter API with API key `YOUR_OPENROUTER_API_KEY_HERE`, generate SVG images for each of the following 30 prompts across 6 different models: **Models to test:** - anthropic/claude-sonnet-4.5 - x-ai/grok-code-fast-1 - google/gemini-2.5-pro - deepseek/deepseek-v3.2-exp - z-ai/glm-4.6 - qwen/qwen3-vl-235b-a22b-thinking **Prompts:** 1. Generate an SVG of an octopus operating a pipe organ 2. Generate an SVG of a giraffe assembling a grandfather clock 3. Generate an SVG of a starfish driving a bulldozer 4. Generate an SVG of a moose conducting a carousel 5. Generate an SVG of a flamingo repairing a telescope 6. Generate an SVG of a hedgehog playing an accordion 7. Generate an SVG of a jellyfish piloting a Ferris wheel 8. Generate an SVG of an elephant typing on a typewriter 9. Generate an SVG of a chameleon tuning a grand piano 10. Generate an SVG of a penguin juggling chainsaws 11. Generate an SVG of a sloth steering an excavator 12. Generate an SVG of a dragonfly balancing a chandelier 13. Generate an SVG of a rhinoceros painting a lighthouse 14. Generate an SVG of a seahorse examining a microscope 15. Generate an SVG of a peacock spinning a pottery wheel 16. Generate an SVG of a kangaroo climbing a radio tower 17. Generate an SVG of a lobster polishing a harp 18. Generate an SVG of a porcupine pushing a lawnmower 19. Generate an SVG of a gecko installing a satellite dish 20. Generate an SVG of an iguana carving a totem pole 21. Generate an SVG of an armadillo lifting a drawbridge 22. Generate an SVG of a mantis studying a sextant 23. Generate an SVG of an ostrich pulling a rickshaw 24. Generate an SVG of a squid disassembling a printing press 25. Generate an SVG of a butterfly inspecting a steam engine 26. Generate an SVG of a crab descending a fire escape 27. Generate an SVG of a venus flytrap swallowing a street lamp 28. Generate an SVG of coral cleaning a ship's wheel 29. Generate an SVG of a sea anemone threading a loom 30. Generate an SVG of an orchid supporting a pergola For each model and prompt combination, make an API call to OpenRouter and save the generated SVG code to appropriately named files (e.g., `model1_prompt1.svg`, `model1_prompt2.svg`, etc.). Extract only the SVG code from the response. Handle errors gracefully and log any failures. **Step 2: Create Model Metadata** Create a metadata object with information for each model including: - Model name (display name) - Model size (parameters - research if needed, or use "TBD" for unknown) - Release date (research if needed, or use "TBD" for unknown) **Step 3: Build Static Website** Create a self-contained static website with the following features: **Main Gallery Page (index.html):** - Grid layout showing all 30 prompts - For each prompt, display SVGs from all 6 models side-by-side - Below each SVG: model name - Model metadata displayed once at the top of the page - Responsive design that works on desktop and mobile - Simple navigation and clean styling - Include prompt text above each row of model outputs **About/Meta Page (about.html):** Include three sections: 1. **Original Prompt to Claude:** The prompt that started this project 2. **Meta Prompt:** The prompt asking for this Claude Code prompt 3. **Claude Code Implementation Prompt:** This entire prompt **Technical Requirements:** - Use only vanilla HTML, CSS, and JavaScript (no frameworks or external libraries) - Embed SVG files as data or inline them in the HTML - Use CSS Grid or Flexbox for layout - Include basic styling with good contrast and readability - Make the site fully functional when opened from local filesystem (file://) - Include error handling for missing SVGs **File Structure:** ``` benchmark/ ├── index.html (main gallery) ├── about.html (meta documentation) ├── styles.css (shared styles) ├── svgs/ │ ├── anthropic_claude-sonnet-4.5_prompt1.svg │ ├── x-ai_grok-code-fast-1_prompt1.svg │ └── ... (180 generated SVGs total) └── README.md (instructions) ``` Implement rate limiting and error handling for the API calls. Log progress as you generate each SVG. Create a summary report of successes and failures at the end.