Pelicans on bicycles
I ask models to draw a pelican riding a bicycle in the coding tools I use. I'm looking for SVG graphics I can use in my games and apps.
I ask models to draw a pelican riding a bicycle in the coding tools I use. I'm looking for SVG graphics I can use in my games and apps.
I ask just about every new model to draw an SVG of a pelican riding a bicycle in the coding tools I build with, including Claude Code, Codex, and Cursor. The results at /pelican help me judge which models are good enough for basic graphics.
Simon Willison has been asking every new model to "Generate an SVG of a pelican riding a bicycle" for a couple of years now. It started as a joke, but it's a reasonable benchmark. The model has to write the SVG without reference images or Stable Diffusion, and an LLM should be able to do it. His archive is great.
I've been using AI to generate graphics for the games on this site and apps I'm building on my own. Right now I'm working on Spider-Man Minecraft, which my six year old has been talking about for the last month and begging me to build. So a ridiculous benchmark about drawing a bird on a bike is, at least this month, about the most practical benchmark I could run.
I use the pelicans to judge which models can generate graphics I'd want in those projects. The latest batch finally produces results good enough to use...in this very specific style.
Most model comparisons (by people way too deep in AI) call the API directly with no extra context, framing, or hand holding. Simon's grid for GPT-6 and GPT-5.6 has way more details than I personally care about, but it makes for a better benchmark. GPT-6 Astra at max effort spent 12,638 output tokens on its pelican, 63 cents worth.
I rarely call an API directly for a picture or much else really. I ask for graphics in Claude Code, Codex, Cursor, and sometimes Antigravity, so I use those tools for making the pelicans too. The model arrives with a system prompt this way. To me, the coding tool is part of the model as I experience it and what I'm paying for.
For each model, I picked the coding tool I'd used with it in the previous month and ran the prompt at every effort level the tool exposes. I type the same eleven words each time, though the tool may pass in more information or make calls which add context. I'm leaving the tool names out of the comparison because I think the differences between models are bigger, but these results include the effects of the tools I ran them in.
A few dozen "pelicans" "riding" "bicycles"...kind of. So many of these models were not good at this. The whole set is at /pelican, where you can explore the results side by side.
Every model can draw a white blob with an orange beak. The bicycle is harder, especially the diamond frame with a seat tube, a down tube, and pedals under the rider. GPT-5.3 Codex Spark never manages it at any effort level. Haiku 4.5 draws a bird standing on top of a triangle at every level from low to max. Sonnet 5 at low effort does the same thing. At max it draws a real pelican, pouch and all, with its feet on the pedals.
Higher effort settings change the Claude 5 drawings a lot and the OpenAI drawings hardly at all. Opus 5 goes from a 1.8 KB flat drawing at low effort to an 11 KB beach scene at max, and every step between is visibly better than the previous one. GPT-6 Astra draws nearly the same pelican at every level. If you like Astra's graphics, low effort might be the best option for generating graphics for your project. The Claude 4 generation sits in between. Sonnet 4.6 draws close to the same bird standing on the same bike at low, medium, and high.
Gemini draws the biggest files. Gemini 3.8 Flash at high effort produced 26.8 KB of SVG, three to four times anything from Anthropic or OpenAI. The texture feels excessive to me, but you might like it. It looks the most finished of anything on the page, and it's the last one I'd want as a game sprite. For those I need flat shapes I can recolor and move around without dragging a filter chain along.
I'll keep generating more of these and seeing if I can get similar benchmarks from older models before OpenAI retires gpt-3.5 and gpt-4 and Anthropic retires Sonnet 4.5. I keep making them because I think they're funny.
Once the models get good enough for a static pelican to stop being interesting, I'll probably ask for an animated image or sequence. No one knows what a pelican would look like pedalling a bicycle, and that's kind of the point. We can look at an animation and intuitively judge whether the movement makes sense. AI doesn't have that intuition yet.