GPT-5
RANK 17 · MEOWSCORE 77.2 · previous · US · closed
minimal
“Draw a minimal, flat-design cat as an SVG.”
GPT-5 · minimal · attempt 1 · score 9.0
the actual svg, as the machine wrote it:
<svg xmlns="http://www.w3.org/2000/svg" width="256" height="256" viewBox="0 0 256 256" role="img" aria-labelledby="title desc">
<title id="title">Minimal flat-design cat</title>
<desc id="desc">A simple, flat orange cat with pointy ears, sitting with a curled tail.</desc>
<!-- Ground shadow -->
<ellipse cx="128" cy="214" rx="64" ry="10" fill="#E6E6E6"/>
<!-- Tail (behind body) -->
<path d="M170 176 Q 214 168 204 120" fill="none" stroke="#F4A261" stroke-width="16" stroke-linecap="round"/>
<!-- Body -->
<ellipse cx="128" cy="158" rx="56" ry="62" fill="#F4A261"/>
<!-- Ears (behind head) -->
<polygon points="96,60 112,28 128,60" fill="#F4A261"/>
<polygon points="160,60 144,28 128,60" fill="#F4A261"/>
<polygon points="104,60 112,38 122,60" fill="#F6B68E"/>
<polygon points="152,60 144,38 134,60" fill="#F6B68E"/>
<!-- Head -->
<circle cx="128" cy="96" r="44" fill="#F4A261"/>
<!-- Face -->
<circle cx="112" cy="100" r="5" fill="#2D2D2D"/>
<circle cx="144" cy="100" r="5" fill="#2D2D2D"/>
<polygon points="122,112 134,112 128,118" fill="#E76F51"/>
<path d="M128 118 v 7" fill="none" stroke="#2D2D2D" stroke-width="2" stroke-linecap="round"/>
<!-- Whiskers -->
<line x1="92" y1="108" x2="114" y2="108" stroke="#2D2D2D" stroke-width="2" stroke-linecap="round"/>
<line x1="92" y1="116" x2="114" y2="116" stroke="#2D2D2D" stroke-width="2" stroke-linecap="round"/>
<line x1="142" y1="108" x2="164" y2="108" stroke="#2D2D2D" stroke-width="2" stroke-linecap="round"/>
<line x1="142" y1="116" x2="164" y2="116" stroke="#2D2D2D" stroke-width="2" stroke-linecap="round"/>
<!-- Paws -->
<ellipse cx="108" cy="206" rx="14" ry="9" fill="#F6B68E"/>
<ellipse cx="148" cy="206" rx="14" ry="9" fill="#F6B68E"/>
</svg>GPT-5 · minimal · attempt 2 · score 8.3
the actual svg, as the machine wrote it:
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 200 200" width="256" height="256" role="img" aria-labelledby="title desc">
<title id="title">Minimal flat-design cat</title>
<desc id="desc">A simple, minimal cat in a flat style with a round head, ears, eyes, and whiskers.</desc>
<defs>
<style>
.fur{fill:#F2B880}
.accent{fill:#F7D2AF}
.inner{fill:#F6A7A9}
.ink{stroke:#4D4D4D;stroke-width:1.6;stroke-linecap:round}
.face{fill:#2D2D2D}
</style>
</defs>
<!-- shadow -->
<ellipse cx="100" cy="172" rx="36" ry="10" fill="#000000" opacity="0.08"/>
<!-- tail behind body -->
<rect x="120" y="112" width="40" height="12" rx="6" class="fur" transform="rotate(28 120 118)"/>
<!-- body -->
<ellipse cx="100" cy="120" rx="44" ry="54" class="fur"/>
<!-- chest patch -->
<ellipse cx="100" cy="135" rx="18" ry="26" class="accent"/>
<!-- head and ears -->
<g>
<!-- ears (behind head) -->
<path d="M82 50 L70 70 L94 66 Z" class="fur"/>
<path d="M118 50 L106 66 L130 70 Z" class="fur"/>
<!-- head -->
<circle cx="100" cy="70" r="28" class="fur"/>
<!-- inner ears -->
<path d="M82 55 L74 68 L90 66 Z" class="inner"/>
<path d="M118 55 L110 66 L126 68 Z" class="inner"/>
<!-- muzzle patch -->
<ellipse cx="100" cy="81" rx="12" ry="9" class="accent"/>
<!-- eyes -->
<circle cx="90" cy="72" r="3" class="face"/>
<circle cx="110" cy="72" r="3" class="face"/>
<!-- nose -->
<path d="M100 78 L96 82 L104 82 Z" fill="#E06F6C"/>
<!-- mouth -->
<path d="M96 84 q 4 4 8 0" stroke="#2D2D2D" stroke-width="1.4" fill="none" stroke-linecap="round"/>
<!-- whiskers -->
<line x1="66" y1="72" x2="86" y2="72" class="ink"/>
<line x1="68" y1="78" x2="86" y2="76" class="ink"/>
<line x1="114" y1="72" x2="134" y2="72" class="ink"/>
<line x1="114" y1="76" x2="132" y2="78" class="ink"/>
</g>
</svg>GPT-5 · minimal · attempt 3 · score 8.3
the actual svg, as the machine wrote it:
<svg xmlns="http://www.w3.org/2000/svg" width="256" height="256" viewBox="0 0 256 256">
<defs/>
<!-- ground shadow -->
<ellipse cx="128" cy="214" rx="62" ry="12" fill="black" opacity="0.1"/>
<!-- tail behind body -->
<path d="M168 152 C 198 148 212 168 206 186 C 202 198 188 204 178 198" fill="none" stroke="#7E8394" stroke-width="20" stroke-linecap="round"/>
<!-- ears (behind head) -->
<polygon points="104,54 92,84 114,78" fill="#7E8394"/>
<polygon points="152,54 164,84 142,78" fill="#7E8394"/>
<!-- inner ears -->
<polygon points="104,62 96,80 108,76" fill="#F2B8C6"/>
<polygon points="152,62 160,80 148,76" fill="#F2B8C6"/>
<!-- body -->
<ellipse cx="128" cy="160" rx="56" ry="64" fill="#7E8394"/>
<!-- head -->
<circle cx="128" cy="98" r="38" fill="#7E8394"/>
<!-- face -->
<circle cx="114" cy="96" r="5" fill="#2E2F38"/>
<circle cx="142" cy="96" r="5" fill="#2E2F38"/>
<polygon points="128,108 122,114 134,114" fill="#E79DA8"/>
<!-- whiskers -->
<g stroke="#2E2F38" stroke-width="3" stroke-linecap="round">
<!-- left -->
<line x1="96" y1="104" x2="114" y2="102"/>
<line x1="96" y1="114" x2="114" y2="114"/>
<!-- right -->
<line x1="160" y1="102" x2="142" y2="104"/>
<line x1="160" y1="114" x2="142" y2="114"/>
</g>
</svg>GPT-5 · minimal · attempt 4 · score 8.0
the actual svg, as the machine wrote it:
<svg xmlns="http://www.w3.org/2000/svg" width="256" height="256" viewBox="0 0 256 256" role="img" aria-labelledby="title desc">
<title id="title">Minimal flat-design cat</title>
<desc id="desc">A simple, flat illustration of a cat with a round head, pointy ears, oval body, and a curled tail.</desc>
<!-- Tail (behind) -->
<path d="M182 150 C216 140, 218 96, 188 88 C162 82, 156 112, 172 124" fill="none" stroke="#C9A175" stroke-width="22" stroke-linecap="round" stroke-linejoin="round"/>
<!-- Body -->
<ellipse cx="128" cy="172" rx="62" ry="68" fill="#C9A175"/>
<!-- Belly patch -->
<ellipse cx="128" cy="186" rx="34" ry="44" fill="#E8D2B5"/>
<!-- Ears (behind head) -->
<polygon points="96,74 108,26 120,74" fill="#C9A175"/>
<polygon points="136,74 148,26 160,74" fill="#C9A175"/>
<!-- Inner ears -->
<polygon points="102,74 108,42 114,74" fill="#EAB0B0"/>
<polygon points="142,74 148,42 154,74" fill="#EAB0B0"/>
<!-- Head -->
<circle cx="128" cy="92" r="44" fill="#C9A175"/>
<!-- Eyes -->
<ellipse cx="112" cy="94" rx="4" ry="7" fill="#2D2D2D"/>
<ellipse cx="144" cy="94" rx="4" ry="7" fill="#2D2D2D"/>
<!-- Nose -->
<polygon points="128,108 122,114 134,114" fill="#7B4B3A"/>
<!-- Mouth -->
<line x1="128" y1="114" x2="128" y2="116" stroke="#2D2D2D" stroke-width="2" stroke-linecap="round"/>
<path d="M124 116 q 4 6 0 12" fill="none" stroke="#2D2D2D" stroke-width="2" stroke-linecap="round"/>
<path d="M132 116 q -4 6 0 12" fill="none" stroke="#2D2D2D" stroke-width="2" stroke-linecap="round"/>
<!-- Whiskers -->
<line x1="104" y1="106" x2="74" y2="102" stroke="#2D2D2D" stroke-width="2" stroke-linecap="round"/>
<line x1="104" y1="112" x2="74" y2="112" stroke="#2D2D2D" stroke-width="2" stroke-linecap="round"/>
<line x1="104" y1="118" x2="74" y2="122" stroke="#2D2D2D" stroke-width="2" stroke-linecap="round"/>
<line x1="152" y1="106" x2="182" y2="102" stroke="#2D2D2D" stroke-width="2" stroke-linecap="round"/>
<line x1="152" y1="112" x2="182" y2="112" stroke="#2D2D2D" stroke-width="2" stroke-linecap="round"/>
<line x1="152" y1="118" x2="182" y2="122" stroke="#2D2D2D" stroke-width="2" stroke-linecap="round"/>
</svg>realistic
“Draw a realistic sitting cat with visible fur shading as an SVG.”
GPT-5 · realistic · attempt 1 · score 7.5
the actual svg, as the machine wrote it:
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 420 420">
<defs>
<!-- Body fur gradients -->
<linearGradient id="bodyGrad" x1="70%" y1="10%" x2="25%" y2="90%">
<stop offset="0%" stop-color="#8f735e"/>
<stop offset="40%" stop-color="#a4876e"/>
<stop offset="75%" stop-color="#c7b096"/>
<stop offset="100%" stop-color="#e2d0bd"/>
</linearGradient>
<radialGradient id="bellyLight" cx="35%" cy="72%" r="55%">
<stop offset="0%" stop-color="#f1e5d8" stop-opacity="0.9"/>
<stop offset="60%" stop-color="#e7d5c3" stop-opacity="0.5"/>
<stop offset="100%" stop-color="transparent" stop-opacity="0"/>
</radialGradient>
<linearGradient id="headGrad" x1="70%" y1="0%" x2="20%" y2="80%">
<stop offset="0%" stop-color="#8c6f59"/>
<stop offset="60%" stop-color="#b89f89"/>
<stop offset="100%" stop-color="#d6c4b0"/>
</linearGradient>
<linearGradient id="tailGrad" x1="10%" y1="0%" x2="90%" y2="100%">
<stop offset="0%" stop-color="#7d6655"/>
<stop offset="60%" stop-color="#a88f7a"/>
<stop offset="100%" stop-color="#cdb7a3"/>
</linearGradient>
<linearGradient id="earIn" x1="0%" y1="0%" x2="0%" y2="100%">
<stop offset="0%" stop-color="#f0b7b7"/>
<stop offset="100%" stop-color="#c98e8e"/>
</linearGradient>
<radialGradient id="iris" cx="50%" cy="50%" r="60%">
<stop offset="0%" stop-color="#d7f5ad"/>
<stop offset="60%" stop-color="#87b86b"/>
<stop offset="100%" stop-color="#3f6a35"/>
</radialGradient>
<linearGradient id="noseGrad" x1="0%" y1="0%" x2="0%" y2="100%">
<stop offset="0%" stop-color="#e6a3a3"/>
<stop offset="100%" stop-color="#b26b6b"/>
</linearGradient>
<radialGradient id="shadowGrad" cx="50%" cy="50%" r="60%">
<stop offset="0%" stop-color="#000" stop-opacity="0.28"/>
<stop offset="90%" stop-color="#000" stop-opacity="0"/>
</radialGradient>
<!-- Fur texture filter: subtle fine noise multiplied into colors -->
<filter id="furTexture" x="-20%" y="-20%" width="140%" height="140%">
<feTurbulence type="fractalNoise" baseFrequency="1.2" numOctaves="3" seed="9" result="noise"/>
<feColorMatrix in="noise" type="matrix" values="
1 0 0 0 0
0 1 0 0 0
0 0 1 0 0
0 0 0 0.9 0" result="noisergb"/>
<feComponentTransfer in="noisergb" result="noised">
<feFuncR type="table" tableValues="0.45 0.55"/>
<feFuncG type="table" tableValues="0.45 0.55"/>
<feFuncB type="table" tableValues="0.45 0.55"/>
<feFuncA type="table" tableValues="0 0.4"/>
</feComponentTransfer>
<feBlend in="SourceGraphic" in2="noised" mode="multiply" result="mul"/>
<feGaussianBlur in="mul" stdDeviation="0.15" result="soft"/>
<feComposite in="soft" in2="SourceAlpha" operator="over"/>
</filter>
<!-- Slight directional fur streaks (subtle) -->
<filter id="furStreaks" x="-20%" y="-20%" width="140%" height="140%">
<feTurbulence type="fractalNoise" baseFrequency="0.04 0.9" numOctaves="2" seed="3" result="turb"/>
<feColorMatrix in="turb" type="matrix" values="
0 0 0 0 0.5
0 0 0 0 0.5
0 0 0 0 0.5
0 0 0 1 -0.4" result="alphaNoise"/>
<feGaussianBlur in="alphaNoise" stdDeviation="0.35" result="blur"/>
<feComposite in="SourceGraphic" in2="blur" operator="arithmetic" k1="0" k2="0.92" k3="0.08" k4="0"/>
</filter>
<!-- Soft shading blur -->
<filter id="soft" x="-10%" y="-10%" width="120%" height="120%">
<feGaussianBlur stdDeviation="1.5"/>
</filter>
<!-- Clip paths for texture overlays -->
<clipPath id="clipBody">
<path d="M170 130
C230 120 282 170 262 240
C257 258 250 273 234 288
C209 311 167 315 143 303
C117 290 108 266 118 236
C126 213 149 176 170 160 Z"/>
</clipPath>
<clipPath id="clipHead">
<path d="M108 86
C103 112 115 145 147 150
C168 153 190 141 195 119
C198 108 197 95 191 84
C184 71 171 63 157 62
C138 61 117 71 108 86 Z"/>
</clipPath>
<clipPath id="clipTail">
<path d="M255 238
C292 258 275 301 225 320
C195 331 161 326 151 311
C147 305 149 297 159 295
C174 292 189 302 212 298
C242 293 268 266 255 238 Z"/>
</clipPath>
</defs>
<!-- Ground shadow -->
<ellipse cx="200" cy="340" rx="120" ry="28" fill="url(#shadowGrad)"/>
<!-- Body -->
<g filter="url(#furTexture)">
<path id="body" d="M170 130
C230 120 282 170 262 240
C257 258 250 273 234 288
C209 311 167 315 143 303
C117 290 108 266 118 236
C126 213 149 176 170 160 Z"
fill="url(#bodyGrad)"/>
<!-- Belly light -->
<path d="M170 160
C165 183 154 203 142 221
C133 235 130 252 141 268
C154 286 196 290 219 276
C237 265 247 245 251 232
C244 244 233 251 220 258
C204 266 182 268 165 261
C147 252 138 238 143 226
C150 210 163 185 170 160 Z"
fill="url(#bellyLight)" opacity="0.9"/>
<!-- Back shadow -->
<path d="M210 126
C246 133 270 166 259 209
C255 226 246 241 238 249
C246 225 240 199 227 180
C217 167 202 156 185 150
C199 142 209 135 210 126 Z"
fill="#5a473b" opacity="0.18" filter="url(#soft)"/>
</g>
<!-- Tail -->
<g filter="url(#furTexture)">
<path d="M255 238
C292 258 275 301 225 320
C195 331 161 326 151 311
C147 305 149 297 159 295
C174 292 189 302 212 298
C242 293 268 266 255 238 Z"
fill="url(#tailGrad)"/>
<!-- Tail underside shadow -->
<path d="M220 314
C240 309 257 293 261 277
C251 294 232 306 208 311
C182 316 162 313 152 306
C158 316 176 321 198 319 Z"
fill="#4d3f34" opacity="0.22" filter="url(#soft)"/>
</g>
<!-- Head -->
<g filter="url(#furTexture)">
<path d="M108 86
C103 112 115 145 147 150
C168 153 190 141 195 119
C198 108 197 95 191 84
C184 71 171 63 157 62
C138 61 117 71 108 86 Z"
fill="url(#headGrad)"/>
<!-- Ears -->
<path d="M120 68 L106 93 L136 92 Z" fill="#775e4d"/>
<path d="M120 68 L110 91 L132 89 Z" fill="url(#earIn)" opacity="0.8"/>
<path d="M181 64 L198 96 L165 92 Z" fill="#775e4d"/>
<path d="M181 64 L194 93 L169 90 Z" fill="url(#earIn)" opacity="0.8"/>
<!-- Eye sockets subtle shade -->
<ellipse cx="138" cy="110" rx="16" ry="12" fill="#3b332b" opacity="0.15"/>
<ellipse cx="170" cy="110" rx="16" ry="12" fill="#3b332b" opacity="0.15"/>
<!-- Eyes -->
<g>
<ellipse cx="138" cy="110" rx="12" ry="9" fill="url(#iris)"/>
<ellipse cx="170" cy="110" rx="12" ry="9" fill="url(#iris)"/>
<ellipse cx="138" cy="110" rx="4" ry="9" fill="#0b0b0b"/>
<ellipse cx="170" cy="110" rx="4" ry="9" fill="#0b0b0b"/>
<circle cx="142" cy="106" r="2" fill="#fff" opacity="0.9"/>
<circle cx="173" cy="106" r="2" fill="#fff" opacity="0.9"/>
</g>
<!-- Nose and muzzle -->
<path d="M150 126
C152 129 156 130 160 129
C165 128 166 126 167 124
C165 125 162 125 160 125
C156 125 152 124 150 123 Z"
fill="#f4e8da" opacity="0.9"/>
<path d="M158 122
C160 121 163 121 165 122
C165 125 162 129 160 129
C158 129 155 125 155 122
C156 121 157 121 158 122 Z"
fill="url(#noseGrad)"/>
<path d="M160 129 L160 135" stroke="#2a2420" stroke-width="1" stroke-linecap="round"/>
<path d="M160 135 C156 137 151 138 146 136" stroke="#2a2420" stroke-width="1" fill="none" stroke-linecap="round"/>
<path d="M160 135 C164 137 169 138 174 136" stroke="#2a2420" stroke-width="1" fill="none" stroke-linecap="round"/>
<!-- Cheek highlights -->
<ellipse cx="142" cy="130" rx="10" ry="6" fill="#fff" opacity="0.18"/>
<ellipse cx="178" cy="128" rx="10" ry="6" fill="#fff" opacity="0.12"/>
<!-- Chin shadow -->
<path d="M144 140
C153 145 168 145 177 140
C170 148 151 149 144 140 Z"
fill="#2b2220" opacity="0.12"/>
</g>
<!-- Chest ruff -->
<g filter="url(#furTexture)">
<path d="M140 170
C130 175 118 197 121 215
C123 230 136 245 153 250
C170 255 193 250 205 238
C215 228 222 212 219 198
C216 185 206 175 193 170
C177 164 155 163 140 170 Z"
fill="#eee4d6" opacity="0.85"/>
<!-- Ruff shadow layers -->
<path d="M147 178 C140 184 138 196 143 206 C147 214 157 219 168 219 C179 219 190 214 196 206 C202 197 200 185 193 178 Z"
fill="#5a4b41" opacity="0.1"/>
</g>
<!-- Forepaws -->
<g filter="url(#furTexture)">
<path d="M132 276
C120 300 128 318 147 320
C166 322 179 314 177 295
C176 286 172 280 172 275
C164 282 151 285 140 283
C136 282 133 279 132 276 Z"
fill="#d7c3ae"/>
<path d="M175 272
C168 282 167 296 175 307
C181 315 197 318 210 312
C225 305 227 289 217 279
C209 271 197 269 187 271
C181 272 178 273 175 272 Z"
fill="#cdb9a5"/>
<!-- Toes -->
<path d="M140 308 C144 312 151 313 157 311" stroke="#6b5b4e" stroke-width="1" opacity="0.6"/>
<path d="M182 308 C187 311 197 311 205 308" stroke="#6b5b4e" stroke-width="1" opacity="0.6"/>
</g>
<!-- Subtle tabby stripes on body -->
<g opacity="0.28" filter="url(#furStreaks)" clip-path="url(#clipBody)">
<path d="M210 150 C225 160 234 176 237 190" stroke="#4a3d34" stroke-width="4" stroke-linecap="round" fill="none" opacity="0.5"/>
<path d="M195 158 C210 168 220 184 222 199" stroke="#4a3d34" stroke-width="3.5" stroke-linecap="round" fill="none" opacity="0.45"/>
<path d="M180 166 C195 176 204 191 206 205" stroke="#4a3d34" stroke-width="3" stroke-linecap="round" fill="none" opacity="0.42"/>
<path d="M168 176 C182 186 191 198 193 211" stroke="#4a3d34" stroke-width="2.6" stroke-linecap="round" fill="none" opacity="0.4"/>
<path d="M160 188 C174 198 183 207 186 219" stroke="#4a3d34" stroke-width="2.2" stroke-linecap="round" fill="none" opacity="0.38"/>
</g>
<!-- Tail stripes -->
<g opacity="0.35" clip-path="url(#clipTail)" filter="url(#furStreaks)">
<path d="M252 244 C266 252 263 272 248 286" stroke="#3f342c" stroke-width="4" stroke-linecap="round" fill="none"/>
<path d="M238 252 C254 260 248 280 228 293" stroke="#3f342c" stroke-width="3.2" stroke-linecap="round" fill="none" opacity="0.7"/>
<path d="M220 262 C236 270 230 289 210 299" stroke="#3f342c" stroke-width="2.6" stroke-linecap="round" fill="none" opacity="0.7"/>
</g>
<!-- Face stripes -->
<g opacity="0.35" clip-path="url(#clipHead)" filter="url(#furStreaks)">
<path d="M128 98 C134 102 138 108 139 114" stroke="#3e342c" stroke-width="2.2" stroke-linecap="round" fill="none"/>
<path d="M178 98 C172 102 168 108 167 114" stroke="#3e342c" stroke-width="2.2" stroke-linecap="round" fill="none"/>
<path d="M120 112 C132 118 140 127 142 134" stroke="#3e342c" stroke-width="1.8" stroke-linecap="round" fill="none" opacity="0.7"/>
<path d="M186 112 C174 118 166 127 164 134" stroke="#3e342c" stroke-width="1.8" stroke-linecap="round" fill="none" opacity="0.7"/>
</g>
<!-- Whiskers -->
<g opacity="0.9">
<g stroke="#f9f4ef" stroke-width="1.2" stroke-linecap="round">
<path d="M150 136 C120 132 95 130 70 133"/>
<path d="M149 140 C120 144 95 148 70 152"/>
<path d="M149 144 C120 154 94 164 72 175"/>
</g>
<g stroke="#f9f4ef" stroke-width="1.2" stroke-linecap="round">
<path d="M171 136 C201 132 226 130 251 133"/>
<path d="M172 140 C201 144 226 148 251 152"/>
<path d="M172 144 C201 154 227 164 249 175"/>
</g>
</g>
<!-- Outline accents for realism -->
<g>
<path d="M170 130
C230 120 282 170 262 240
C257 258 250 273 234 288
C209 311 167 315 143 303
C117 290 108 266 118 236
C126 213 149 176 170 160 Z"
fill="none" stroke="#463a31" stroke-opacity="0.45" stroke-width="1.2"/>
<path d="M108 86
C103 112 115 145 147 150
C168 153 190 141 195 119
C198 108 197 95 191 84
C184 71 171 63 157 62
C138 61 117 71 108 86 Z"
fill="none" stroke="#463a31" stroke-opacity="0.45" stroke-width="1.1"/>
<path d="M255 238
C292 258 275 301 225 320
C195 331 161 326 151 311
C147 305 149 297 159 295
C174 292 189 302 212 298
C242 293 268 266 255 238 Z"
fill="none" stroke="#463a31" stroke-opacity="0.45" stroke-width="1.1"/>
</g>
</svg>GPT-5 · realistic · attempt 2 · score 8.0
the actual svg, as the machine wrote it:
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 800 600">
<defs>
<!-- Base fur gradients -->
<radialGradient id="furBase" cx="35%" cy="65%" r="70%">
<stop offset="0%" stop-color="#e8dfcd"/>
<stop offset="35%" stop-color="#cbb99c"/>
<stop offset="65%" stop-color="#a38862"/>
<stop offset="85%" stop-color="#7b6245"/>
<stop offset="100%" stop-color="#5a4733"/>
</radialGradient>
<!-- Gentle belly/chest highlight -->
<radialGradient id="bellyLight" cx="38%" cy="68%" r="36%">
<stop offset="0%" stop-color="#ffffff" stop-opacity="0.5"/>
<stop offset="60%" stop-color="#ffffff" stop-opacity="0.15"/>
<stop offset="100%" stop-color="#ffffff" stop-opacity="0"/>
</radialGradient>
<!-- Back shadow gradient -->
<radialGradient id="backShadow" cx="72%" cy="40%" r="60%">
<stop offset="0%" stop-color="#000000" stop-opacity="0.35"/>
<stop offset="60%" stop-color="#000000" stop-opacity="0.12"/>
<stop offset="100%" stop-color="#000000" stop-opacity="0"/>
</radialGradient>
<!-- Inner ear -->
<radialGradient id="earInnerGrad" cx="50%" cy="20%" r="90%">
<stop offset="0%" stop-color="#f6c2c6"/>
<stop offset="50%" stop-color="#e59aa2"/>
<stop offset="100%" stop-color="#b47a7d"/>
</radialGradient>
<!-- Eye iris -->
<radialGradient id="eyeIrisL" cx="50%" cy="50%" r="60%">
<stop offset="0%" stop-color="#d7f18e"/>
<stop offset="50%" stop-color="#9bc44b"/>
<stop offset="90%" stop-color="#3a5c22"/>
<stop offset="100%" stop-color="#27401a"/>
</radialGradient>
<radialGradient id="eyeIrisR" href="#eyeIrisL"/>
<!-- Eye highlight -->
<radialGradient id="eyeShine" cx="30%" cy="30%" r="40%">
<stop offset="0%" stop-color="#ffffff" stop-opacity="0.95"/>
<stop offset="100%" stop-color="#ffffff" stop-opacity="0"/>
</radialGradient>
<!-- Nose gradient -->
<linearGradient id="noseGrad" x1="0%" y1="0%" x2="0%" y2="100%">
<stop offset="0%" stop-color="#f2a6ab"/>
<stop offset="100%" stop-color="#c97c82"/>
</linearGradient>
<!-- Subtle fur texture filter: anisotropic noise mixed light/dark -->
<filter id="furTexture" x="-20%" y="-20%" width="140%" height="140%" color-interpolation-filters="sRGB">
<!-- Fine, elongated noise (vertical bias) -->
<feTurbulence type="fractalNoise" baseFrequency="0.35 1.8" numOctaves="3" seed="8" result="noise"/>
<feColorMatrix in="noise" type="saturate" values="0" result="grayNoise"/>
<!-- Slight directional stretch to hint fur flow -->
<feGaussianBlur in="grayNoise" stdDeviation="0.2 0.9" edgeMode="duplicate" result="stretched"/>
<!-- Dark component -->
<feComponentTransfer in="stretched" result="darkNoise">
<feFuncR type="table" tableValues="0.7 0.82 0.9 0.95 1"/>
<feFuncG type="table" tableValues="0.7 0.82 0.9 0.95 1"/>
<feFuncB type="table" tableValues="0.7 0.82 0.9 0.95 1"/>
</feComponentTransfer>
<feBlend in="SourceGraphic" in2="darkNoise" mode="multiply" result="pass1"/>
<!-- Light component (invert then compress and screen) -->
<feColorMatrix in="stretched" type="matrix" values="
-1 0 0 0 1
0 -1 0 0 1
0 0 -1 0 1
0 0 0 1 0" result="invNoise"/>
<feComponentTransfer in="invNoise" result="lightNoise">
<feFuncR type="table" tableValues="0.88 0.92 0.96 1"/>
<feFuncG type="table" tableValues="0.88 0.92 0.96 1"/>
<feFuncB type="table" tableValues="0.88 0.92 0.96 1"/>
</feComponentTransfer>
<feBlend in="pass1" in2="lightNoise" mode="screen" result="pass2"/>
<!-- Slight micro-contrast to accentuate strands -->
<feColorMatrix in="pass2" type="matrix" values="
1.08 0 0 0 0
0 1.08 0 0 0
0 0 1.08 0 0
0 0 0 1 0" result="textured"/>
<!-- Gentle smoothing to avoid harsh speckle -->
<feGaussianBlur in="textured" stdDeviation="0.25" result="final"/>
<feBlend in="final" in2="SourceGraphic" mode="normal"/>
</filter>
<!-- Soft ground shadow -->
<filter id="shadowBlur" x="-50%" y="-50%" width="200%" height="200%">
<feGaussianBlur stdDeviation="12"/>
</filter>
<!-- Clip defining the cat silhouette -->
<clipPath id="catClip" clipPathUnits="userSpaceOnUse">
<!-- Body -->
<ellipse cx="400" cy="360" rx="150" ry="200"/>
<!-- Head -->
<circle cx="470" cy="220" r="85"/>
<!-- Ears -->
<path d="M410 150 L455 105 L475 175 Z"/>
<path d="M500 100 L540 150 L485 175 Z"/>
<!-- Tail wrapping around front -->
<path d="M540 435
C600 475, 600 525, 550 545
C480 570, 390 560, 345 530
C320 514, 320 495, 340 485
C368 470, 420 465, 470 480
C520 495, 545 480, 540 435 Z"/>
<!-- Front paws -->
<ellipse cx="380" cy="540" rx="40" ry="22"/>
<ellipse cx="430" cy="542" rx="36" ry="20"/>
</clipPath>
<!-- Gentle rim light on back -->
<linearGradient id="rimLight" x1="100%" y1="0%" x2="0%" y2="0%">
<stop offset="0%" stop-color="#ffffff" stop-opacity="0.18"/>
<stop offset="30%" stop-color="#ffffff" stop-opacity="0.05"/>
<stop offset="100%" stop-color="#ffffff" stop-opacity="0"/>
</linearGradient>
<!-- Subtle stripe tint -->
<linearGradient id="stripeGrad" x1="0%" y1="0%" x2="0%" y2="100%">
<stop offset="0%" stop-color="#3a2c20" stop-opacity="0.18"/>
<stop offset="100%" stop-color="#3a2c20" stop-opacity="0"/>
</linearGradient>
</defs>
<!-- Ground -->
<ellipse cx="400" cy="565" rx="210" ry="30" fill="#000" opacity="0.25" filter="url(#shadowBlur)"/>
<!-- Cat base with fur shading and texture -->
<g clip-path="url(#catClip)">
<!-- Base fur -->
<rect x="0" y="0" width="800" height="600" fill="url(#furBase)" filter="url(#furTexture)"/>
<!-- Belly highlight -->
<ellipse cx="370" cy="455" rx="110" ry="120" fill="url(#bellyLight)"/>
<!-- Back shadow -->
<ellipse cx="515" cy="260" rx="160" ry="180" fill="url(#backShadow)"/>
<!-- Rim light -->
<rect x="520" y="60" width="200" height="520" fill="url(#rimLight)"/>
<!-- Soft chest transition -->
<ellipse cx="390" cy="420" rx="90" ry="100" fill="#ffffff" opacity="0.12"/>
<!-- Tail darker underside -->
<path d="M540 435
C600 475, 600 525, 550 545
C480 570, 390 560, 345 530
C320 514, 320 495, 340 485
C368 470, 420 465, 470 480
C520 495, 545 480, 540 435 Z"
fill="#3a2c20" opacity="0.18"/>
<!-- Subtle body stripes -->
<path d="M500 320 C460 300, 400 300, 350 330" stroke="url(#stripeGrad)" stroke-width="14" fill="none" opacity="0.3"/>
<path d="M505 350 C460 335, 400 340, 345 370" stroke="url(#stripeGrad)" stroke-width="12" fill="none" opacity="0.28"/>
<path d="M510 380 C460 365, 400 380, 350 410" stroke="url(#stripeGrad)" stroke-width="10" fill="none" opacity="0.26"/>
<path d="M515 410 C465 395, 400 420, 355 450" stroke="url(#stripeGrad)" stroke-width="8" fill="none" opacity="0.24"/>
<!-- Forehead stripes -->
<path d="M450 205 C460 195, 480 195, 490 205" stroke="#3a2c20" stroke-width="6" stroke-linecap="round" opacity="0.22" fill="none"/>
<path d="M448 220 C465 208, 480 208, 494 220" stroke="#3a2c20" stroke-width="5" stroke-linecap="round" opacity="0.2" fill="none"/>
</g>
<!-- Inner ear details -->
<path d="M415 150 L455 110 L472 170 Z" fill="url(#earInnerGrad)" opacity="0.8"/>
<path d="M502 110 L535 150 L488 170 Z" fill="url(#earInnerGrad)" opacity="0.8"/>
<!-- Ear rim tufts -->
<path d="M448 118 C444 122, 440 129, 441 135" stroke="#e8dfcd" stroke-width="2" stroke-linecap="round" opacity="0.6" fill="none"/>
<path d="M520 116 C523 121, 528 128, 529 135" stroke="#e8dfcd" stroke-width="2" stroke-linecap="round" opacity="0.6" fill="none"/>
<!-- Face -->
<!-- Eyes -->
<g>
<!-- Left eye socket shadow -->
<ellipse cx="440" cy="230" rx="34" ry="22" fill="#000" opacity="0.18"/>
<!-- Right eye socket shadow -->
<ellipse cx="505" cy="230" rx="34" ry="22" fill="#000" opacity="0.18"/>
<!-- Eye whites (slightly warm) -->
<path d="M410 230
C420 215, 460 215, 470 230
C460 245, 420 245, 410 230 Z" fill="#f7f3ea" opacity="0.9"/>
<path d="M475 230
C485 215, 525 215, 535 230
C525 245, 485 245, 475 230 Z" fill="#f7f3ea" opacity="0.9"/>
<!-- Irises -->
<ellipse cx="440" cy="230" rx="18" ry="16" fill="url(#eyeIrisL)"/>
<ellipse cx="505" cy="230" rx="18" ry="16" fill="url(#eyeIrisR)"/>
<!-- Pupils -->
<ellipse cx="440" cy="230" rx="6" ry="14" fill="#0b0b0b"/>
<ellipse cx="505" cy="230" rx="6" ry="14" fill="#0b0b0b"/>
<!-- Eye highlights -->
<circle cx="434" cy="222" r="5" fill="url(#eyeShine)"/>
<circle cx="499" cy="222" r="5" fill="url(#eyeShine)"/>
<circle cx="438" cy="238" r="2" fill="#ffffff" opacity="0.7"/>
<circle cx="503" cy="238" r="2" fill="#ffffff" opacity="0.7"/>
</g>
<!-- Nose and mouth -->
<path d="M469 260
C462 266, 451 266, 444 260
C450 252, 463 252, 469 260 Z" fill="url(#noseGrad)" stroke="#8e5b5f" stroke-width="1" opacity="0.95"/>
<path d="M457 262 L457 270" stroke="#6d4a4d" stroke-width="2" stroke-linecap="round"/>
<path d="M457 270
C452 275, 445 277, 438 274" stroke="#6d4a4d" stroke-width="2" stroke-linecap="round" fill="none"/>
<path d="M457 270
C462 275, 469 277, 476 274" stroke="#6d4a4d" stroke-width="2" stroke-linecap="round" fill="none"/>
<!-- Whiskers -->
<g stroke="#e9e6df" stroke-width="2" stroke-linecap="round" opacity="0.85">
<path d="M438 268 C400 262, 360 262, 330 258"/>
<path d="M438 273 C400 270, 360 274, 325 274"/>
<path d="M438 278 C400 284, 360 292, 325 298"/>
</g>
<g stroke="#e9e6df" stroke-width="2" stroke-linecap="round" opacity="0.85">
<path d="M476 268 C515 262, 555 262, 585 258"/>
<path d="M476 273 C515 270, 555 274, 590 274"/>
<path d="M476 278 C515 284, 555 292, 590 298"/>
</g>
<!-- Subtle cheek and muzzle shading -->
<ellipse cx="430" cy="255" rx="28" ry="18" fill="#000" opacity="0.08"/>
<ellipse cx="485" cy="255" rx="28" ry="18" fill="#000" opacity="0.08"/>
<ellipse cx="457" cy="268" rx="22" ry="12" fill="#ffffff" opacity="0.25"/>
<!-- Chest fur strokes -->
<g stroke="#efe9db" stroke-width="2" stroke-linecap="round" opacity="0.55">
<path d="M380 430 C385 450, 395 470, 410 485"/>
<path d="M395 425 C402 448, 413 470, 430 488"/>
<path d="M410 420 C420 445, 433 467, 450 485"/>
</g>
<!-- Paw definition lines -->
<g stroke="#4d3d2d" stroke-width="2" opacity="0.25">
<path d="M360 540 C372 545, 388 546, 400 542"/>
<path d="M408 542 C420 546, 434 548, 446 545"/>
</g>
<!-- Subtle outline accents (shadowed side) -->
<path d="M560 175 C582 220, 590 270, 580 320" stroke="#1a1410" stroke-opacity="0.25" stroke-width="4" fill="none"/>
<path d="M540 430 C560 468, 545 512, 500 532" stroke="#1a1410" stroke-opacity="0.22" stroke-width="4" fill="none"/>
</svg>GPT-5 · realistic · attempt 3 · score 5.3
the actual svg, as the machine wrote it:
<svg xmlns="http://www.w3.org/2000/svg" width="800" height="800" viewBox="0 0 800 800">
<defs>
<!-- Cat silhouette -->
<path id="catSilhouette" d="
M 280 640
C 300 634, 330 622, 350 608
C 365 597, 372 586, 379 565
C 386 544, 393 523, 410 508
C 430 490, 452 480, 470 477
C 482 475, 490 464, 490 448
C 490 425, 507 410, 528 409
C 548 409, 562 416, 575 430
C 590 402, 584 365, 552 332
L 530 360
L 507 330
C 487 338, 472 353, 468 373
C 448 381, 429 396, 416 418
C 400 446, 388 473, 380 498
C 369 529, 362 559, 354 585
C 348 605, 337 620, 317 634
C 305 642, 293 643, 280 640 Z
"/>
<!-- Clip to cat -->
<clipPath id="clipCat">
<use href="#catSilhouette"/>
</clipPath>
<!-- Soft ground shadow -->
<radialGradient id="groundShadow" cx="0.5" cy="0.55" r="0.6">
<stop offset="0" stop-color="#000" stop-opacity="0.3"/>
<stop offset="1" stop-color="#000" stop-opacity="0"/>
</radialGradient>
<!-- Base fur gradient -->
<linearGradient id="furBase" x1="0.2" y1="0.15" x2="0.85" y2="0.95">
<stop offset="0" stop-color="#d3cdc6"/>
<stop offset="0.45" stop-color="#b3ada7"/>
<stop offset="1" stop-color="#6f6a67"/>
</linearGradient>
<!-- Directional shading (light from top-left) -->
<linearGradient id="dirShade" x1="0.1" y1="0.15" x2="0.9" y2="0.9">
<stop offset="0" stop-color="#000000" stop-opacity="0"/>
<stop offset="0.6" stop-color="#000000" stop-opacity="0.15"/>
<stop offset="1" stop-color="#000000" stop-opacity="0.28"/>
</linearGradient>
<!-- Belly/chest highlight -->
<radialGradient id="bellyLight" cx="0.45" cy="0.8" r="0.45">
<stop offset="0" stop-color="#ffffff" stop-opacity="0.35"/>
<stop offset="1" stop-color="#ffffff" stop-opacity="0"/>
</radialGradient>
<!-- Fur noise for masking/texture -->
<filter id="furNoiseFine" x="-20%" y="-20%" width="140%" height="140%">
<feTurbulence type="fractalNoise" baseFrequency="0.9 1.3" numOctaves="3" seed="7" result="n1"/>
<!-- Sharpen contrast a bit -->
<feColorMatrix in="n1" type="matrix" values="
1 0 0 0 0
0 1 0 0 0
0 0 1 0 0
0 0 0 1 0" result="n2"/>
</filter>
<!-- Oriented fur texture (streaks) -->
<filter id="furStreaks" x="-20%" y="-20%" width="140%" height="140%">
<feTurbulence type="fractalNoise" baseFrequency="0.6 1.2" numOctaves="2" seed="11" result="noise"/>
<!-- Slight directional blur to mimic fur flow -->
<feGaussianBlur in="noise" stdDeviation="0.6 2.2" result="blur"/>
<feComponentTransfer in="blur" result="streaks">
<feFuncR type="gamma" amplitude="1" exponent="1.2" offset="0"/>
<feFuncG type="gamma" amplitude="1" exponent="1.2" offset="0"/>
<feFuncB type="gamma" amplitude="1" exponent="1.2" offset="0"/>
<feFuncA type="gamma" amplitude="1" exponent="1.0" offset="0"/>
</feComponentTransfer>
</filter>
<!-- Mask from fine noise (for mottled fur) -->
<mask id="maskFurMottle">
<rect x="0" y="0" width="800" height="800" filter="url(#furNoiseFine)"/>
</mask>
<!-- Mask to break up stripes -->
<mask id="maskStreaks">
<rect x="0" y="0" width="800" height="800" filter="url(#furStreaks)"/>
</mask>
<!-- Eye gradients -->
<radialGradient id="eyeGreen" cx="0.5" cy="0.5" r="0.7">
<stop offset="0" stop-color="#e3ffd8"/>
<stop offset="0.5" stop-color="#b9e6a4"/>
<stop offset="1" stop-color="#7bb06f"/>
</radialGradient>
<radialGradient id="eyeShadow" cx="0.4" cy="0.35" r="0.9">
<stop offset="0" stop-color="#000" stop-opacity="0"/>
<stop offset="1" stop-color="#000" stop-opacity="0.4"/>
</radialGradient>
<!-- Inner ear -->
<linearGradient id="innerEar" x1="0" y1="0" x2="1" y2="1">
<stop offset="0" stop-color="#f8c7c7" stop-opacity="0.9"/>
<stop offset="1" stop-color="#e19aa0" stop-opacity="0.8"/>
</linearGradient>
<!-- Stripe gradient color -->
<linearGradient id="stripeGrad" x1="0" y1="0" x2="1" y2="0">
<stop offset="0" stop-color="#554e4b" stop-opacity="0.28"/>
<stop offset="0.5" stop-color="#3d3735" stop-opacity="0.32"/>
<stop offset="1" stop-color="#2a2625" stop-opacity="0.1"/>
</linearGradient>
<!-- Soft blur -->
<filter id="softBlur" x="-10%" y="-10%" width="120%" height="120%">
<feGaussianBlur stdDeviation="1.2"/>
</filter>
<!-- Tiny blur for stripes -->
<filter id="stripeBlur" x="-10%" y="-10%" width="120%" height="120%">
<feGaussianBlur stdDeviation="0.8"/>
</filter>
</defs>
<!-- Ground shadow -->
<ellipse cx="390" cy="650" rx="140" ry="40" fill="url(#groundShadow)" opacity="0.6"/>
<!-- Cat base -->
<g clip-path="url(#clipCat)">
<!-- Base coat -->
<use href="#catSilhouette" fill="url(#furBase)"/>
<!-- Directional shading -->
<rect x="0" y="0" width="800" height="800" fill="url(#dirShade)" opacity="0.75"/>
<!-- Belly/chest highlight -->
<ellipse cx="400" cy="560" rx="150" ry="120" fill="url(#bellyLight)"/>
<!-- Subtle tabby stripes along back -->
<g filter="url(#stripeBlur)" mask="url(#maskStreaks)" opacity="0.85">
<path d="M 440 370 C 420 390, 400 420, 380 470" fill="none" stroke="url(#stripeGrad)" stroke-width="16" stroke-linecap="round"/>
<path d="M 466 360 C 445 380, 420 410, 395 468" fill="none" stroke="url(#stripeGrad)" stroke-width="12" stroke-linecap="round"/>
<path d="M 490 350 C 470 368, 450 395, 420 455" fill="none" stroke="url(#stripeGrad)" stroke-width="10" stroke-linecap="round"/>
<path d="M 515 345 C 495 360, 472 385, 445 440" fill="none" stroke="url(#stripeGrad)" stroke-width="8" stroke-linecap="round"/>
<path d="M 530 350 C 515 365, 495 388, 470 425" fill="none" stroke="url(#stripeGrad)" stroke-width="6" stroke-linecap="round"/>
</g>
<!-- Mottled fur texture overlay (dark speckles) -->
<rect x="0" y="0" width="800" height="800" fill="#2b2b2b" opacity="0.18" mask="url(#maskFurMottle)"/>
<!-- Soft rim light on top-left -->
<g opacity="0.45">
<path d="M 470 335 C 440 360, 420 385, 410 410" fill="none" stroke="#ffffff" stroke-opacity="0.5" stroke-width="6" filter="url(#softBlur)"/>
<path d="M 530 360 C 515 372, 500 380, 488 388" fill="none" stroke="#ffffff" stroke-opacity="0.35" stroke-width="4" filter="url(#softBlur)"/>
</g>
<!-- Edge fur strokes around cheeks/chest -->
<g stroke-linecap="round" stroke="#d8d4cf" opacity="0.6">
<path d="M 416 430 C 410 440, 404 450, 400 462" stroke-width="3"/>
<path d="M 410 438 C 404 448, 399 456, 395 468" stroke-width="2.5"/>
<path d="M 428 420 C 423 430, 418 441, 414 452" stroke-width="2.5"/>
<path d="M 470 405 C 465 415, 458 424, 452 434" stroke-width="2"/>
</g>
<!-- Subtle darker edge shading to define contour -->
<use href="#catSilhouette" fill="none" stroke="#2a2929" stroke-opacity="0.4" stroke-width="3" />
<!-- Face details -->
<g>
<!-- Muzzle patch -->
<ellipse cx="560" cy="440" rx="22" ry="18" fill="#dad6d3" opacity="0.65"/>
<!-- Nose -->
<path d="M 552 445 L 560 450 L 567 445 Q 560 447 552 445 Z" fill="#d99198" stroke="#8b5961" stroke-width="1" opacity="0.9"/>
<!-- Mouth -->
<path d="M 560 450 C 558 454, 555 456, 551 458" stroke="#6b4b4e" stroke-width="1.5" fill="none"/>
<path d="M 560 450 C 562 454, 565 456, 569 458" stroke="#6b4b4e" stroke-width="1.5" fill="none"/>
<!-- Whiskers -->
<g stroke="#e9e7e3" stroke-width="2" stroke-linecap="round" opacity="0.8">
<path d="M 558 448 C 590 445, 620 442, 650 440"/>
<path d="M 556 453 C 590 455, 625 458, 660 462"/>
<path d="M 555 458 C 590 466, 623 475, 654 485"/>
</g>
<!-- Eye -->
<g>
<ellipse cx="545" cy="430" rx="16" ry="12" fill="url(#eyeGreen)" stroke="#2e2a28" stroke-width="1.5"/>
<rect x="543" y="419" width="4" height="22" fill="#0b0b0b" rx="2"/>
<ellipse cx="540" cy="426" rx="4" ry="3" fill="#ffffff" opacity="0.7"/>
<ellipse cx="551" cy="434" rx="3" ry="2" fill="#ffffff" opacity="0.4"/>
<ellipse cx="545" cy="430" rx="16" ry="12" fill="url(#eyeShadow)" opacity="0.5"/>
</g>
<!-- Inner ear shapes -->
<path d="M 530 360 L 546 343 L 560 362 C 548 360, 540 360, 530 360 Z" fill="url(#innerEar)" opacity="0.85"/>
<path d="M 507 330 L 520 342 L 505 360 C 506 346, 507 338, 507 330 Z" fill="url(#innerEar)" opacity="0.75"/>
<!-- Ear fur tips -->
<g stroke="#e7e2da" stroke-width="2" stroke-linecap="round" opacity="0.7">
<path d="M 560 362 L 566 350"/>
<path d="M 545 343 L 552 332"/>
<path d="M 520 342 L 514 330"/>
</g>
</g>
<!-- Forepaw suggestion -->
<path d="M 365 600 C 382 614, 408 626, 438 620 C 455 616, 465 602, 468 585" fill="none" stroke="#2b2b2b" stroke-opacity="0.35" stroke-width="6" stroke-linecap="round"/>
<!-- Extra fur texture overlay, warm tint -->
<rect x="0" y="0" width="800" height="800" fill="#6b5f56" opacity="0.10" mask="url(#maskStreaks)"/>
</g>
<!-- Outer silhouette soft shadow for depth -->
<use href="#catSilhouette" fill="none" stroke="#000000" stroke-opacity="0.15" stroke-width="8" filter="url(#softBlur)"/>
</svg>GPT-5 · realistic · attempt 4 · score 8.3
the actual svg, as the machine wrote it:
<svg xmlns="http://www.w3.org/2000/svg" width="800" height="600" viewBox="0 0 800 600">
<defs>
<!-- Gradients -->
<radialGradient id="bodyGrad" cx="52%" cy="32%" r="65%">
<stop offset="0" stop-color="#caa989"/>
<stop offset="0.55" stop-color="#b48c6e"/>
<stop offset="1" stop-color="#765d49"/>
</radialGradient>
<radialGradient id="headGrad" cx="48%" cy="40%" r="70%">
<stop offset="0" stop-color="#c9aa8e"/>
<stop offset="0.6" stop-color="#a27f63"/>
<stop offset="1" stop-color="#6e5846"/>
</radialGradient>
<radialGradient id="chestGrad" cx="40%" cy="25%" r="80%">
<stop offset="0" stop-color="#e7d8c9" />
<stop offset="0.6" stop-color="#d2bda9" />
<stop offset="1" stop-color="#b29882" />
</radialGradient>
<radialGradient id="pawGrad" cx="50%" cy="35%" r="80%">
<stop offset="0" stop-color="#e3d3c2"/>
<stop offset="1" stop-color="#b89d86"/>
</radialGradient>
<radialGradient id="tailGrad" cx="60%" cy="30%" r="85%">
<stop offset="0" stop-color="#bea185"/>
<stop offset="0.7" stop-color="#997a62"/>
<stop offset="1" stop-color="#6b5443"/>
</radialGradient>
<linearGradient id="earInnerGrad" x1="0" y1="0" x2="0" y2="1">
<stop offset="0" stop-color="#f1b8b5"/>
<stop offset="1" stop-color="#c08f8c"/>
</linearGradient>
<radialGradient id="irisGrad" cx="50%" cy="60%" r="65%">
<stop offset="0" stop-color="#b9e3a3"/>
<stop offset="0.55" stop-color="#63a25d"/>
<stop offset="1" stop-color="#1f3f26"/>
</radialGradient>
<radialGradient id="shadowGrad" cx="50%" cy="60%" r="60%">
<stop offset="0" stop-color="rgba(0,0,0,0.35)"/>
<stop offset="1" stop-color="rgba(0,0,0,0)"/>
</radialGradient>
<!-- Filters and masks to simulate fur grain -->
<filter id="noiseAlpha" x="-20%" y="-20%" width="140%" height="140%">
<feTurbulence type="fractalNoise" baseFrequency="1.2" numOctaves="4" seed="7" result="t"/>
<!-- Convert RGB noise to alpha, paint color white so mask uses alpha variation -->
<feColorMatrix in="t" type="matrix" values="
0 0 0 0 1
0 0 0 0 1
0 0 0 0 1
0.33 0.33 0.33 0 0" result="a"/>
<feComponentTransfer>
<feFuncA type="gamma" amplitude="1" exponent="1.35" offset="-0.05"/>
</feComponentTransfer>
</filter>
<filter id="noiseAlphaFine" x="-20%" y="-20%" width="140%" height="140%">
<feTurbulence type="fractalNoise" baseFrequency="1.8" numOctaves="5" seed="11" result="t"/>
<feColorMatrix in="t" type="matrix" values="
0 0 0 0 1
0 0 0 0 1
0 0 0 0 1
0.33 0.33 0.33 0 0" result="a"/>
<feComponentTransfer>
<feFuncA type="gamma" amplitude="1" exponent="1.15" offset="-0.03"/>
</feComponentTransfer>
</filter>
<mask id="furMask">
<rect x="0" y="0" width="100%" height="100%" fill="white" filter="url(#noiseAlpha)"/>
</mask>
<mask id="furMaskFine">
<rect x="0" y="0" width="100%" height="100%" fill="white" filter="url(#noiseAlphaFine)"/>
</mask>
<filter id="soften">
<feGaussianBlur stdDeviation="0.6"/>
</filter>
<filter id="soften2">
<feGaussianBlur stdDeviation="1.2"/>
</filter>
</defs>
<!-- Ground shadow -->
<ellipse cx="410" cy="555" rx="200" ry="40" fill="url(#shadowGrad)" />
<g id="cat" fill="none" stroke="none" stroke-linecap="round" stroke-linejoin="round">
<!-- Tail behind body -->
<path d="M 545 458
C 600 470, 645 518, 595 545
C 545 570, 450 575, 365 548
C 340 540, 340 520, 355 513
C 375 504, 420 520, 473 534
C 525 548, 575 540, 590 526
C 607 510, 565 480, 545 458 Z"
fill="url(#tailGrad)"/>
<!-- Body -->
<path id="body"
d="M 350 270
C 310 305, 300 410, 360 510
C 420 560, 520 550, 560 435
C 585 360, 545 285, 470 262
C 415 248, 375 252, 350 270 Z"
fill="url(#bodyGrad)"/>
<!-- Hind leg bulge -->
<path d="M 510 408
C 555 430, 540 520, 470 540
C 430 545, 407 525, 420 507
C 440 477, 460 452, 510 408 Z"
fill="rgba(105,86,69,0.55)"/>
<!-- Chest lighter patch -->
<path d="M 350 300
C 330 340, 335 410, 375 470
C 395 500, 430 505, 455 485
C 435 470, 415 450, 400 425
C 380 395, 370 360, 371 325
C 365 310, 358 300, 350 300 Z"
fill="url(#chestGrad)" opacity="0.95"/>
<!-- Paws -->
<ellipse cx="370" cy="520" rx="42" ry="28" fill="url(#pawGrad)"/>
<ellipse cx="430" cy="520" rx="44" ry="28" fill="url(#pawGrad)"/>
<!-- Head -->
<path id="head"
d="M 360 182
C 332 196, 316 229, 321 260
C 330 308, 360 330, 402 330
C 456 330, 482 294, 481 252
C 480 214, 451 182, 410 176
C 384 172, 371 173, 360 182 Z"
fill="url(#headGrad)"/>
<!-- Ears -->
<path d="M 344 184 L 319 140 L 355 168 Z" fill="url(#headGrad)"/>
<path d="M 432 175 L 462 138 L 468 190 Z" fill="url(#headGrad)"/>
<!-- Ear inners -->
<path d="M 342 184 L 324 149 L 352 170 Z" fill="url(#earInnerGrad)" opacity="0.8"/>
<path d="M 434 176 L 459 146 L 463 186 Z" fill="url(#earInnerGrad)" opacity="0.8"/>
<!-- Facial features -->
<!-- Eyes -->
<g id="eyes">
<ellipse cx="362" cy="246" rx="18" ry="12" fill="url(#irisGrad)"/>
<ellipse cx="432" cy="246" rx="18" ry="12" fill="url(#irisGrad)"/>
<!-- Pupils -->
<path d="M 361 234 C 366 239, 366 253, 361 258 C 356 253, 356 239, 361 234 Z" fill="#0b0b0b"/>
<path d="M 431 234 C 436 239, 436 253, 431 258 C 426 253, 426 239, 431 234 Z" fill="#0b0b0b"/>
<!-- Eye highlights -->
<circle cx="356" cy="240" r="3.5" fill="#ffffff" opacity="0.85"/>
<circle cx="426" cy="240" r="3.5" fill="#ffffff" opacity="0.85"/>
</g>
<!-- Nose and mouth -->
<path d="M 393 266 L 407 266 L 400 274 Z" fill="#d59c9a" stroke="#b08280" stroke-width="1"/>
<path d="M 400 275 C 396 279, 392 281, 387 281" stroke="#6b504c" stroke-width="1.4" fill="none"/>
<path d="M 400 275 C 404 279, 408 281, 413 281" stroke="#6b504c" stroke-width="1.4" fill="none"/>
<!-- Whisker pads -->
<ellipse cx="384" cy="273" rx="12" ry="9" fill="#e6d7ca" opacity="0.65"/>
<ellipse cx="416" cy="273" rx="12" ry="9" fill="#e6d7ca" opacity="0.65"/>
<!-- Whiskers -->
<g stroke="#efeae6" stroke-width="1.5" opacity="0.9" filter="url(#soften)">
<path d="M 380 274 C 340 268, 305 268, 275 275"/>
<path d="M 382 279 C 345 286, 310 294, 278 302"/>
<path d="M 380 269 C 338 253, 303 246, 268 244"/>
<path d="M 420 274 C 460 268, 495 268, 525 275"/>
<path d="M 418 279 C 455 286, 490 294, 522 302"/>
<path d="M 420 269 C 462 253, 497 246, 532 244"/>
</g>
<!-- Chin shadow -->
<path d="M 355 300
C 380 300, 420 298, 445 295
C 455 285, 460 276, 462 266
C 434 272, 370 275, 350 280
C 348 288, 349 296, 355 300 Z"
fill="#56483c" opacity="0.25" filter="url(#soften)"/>
<!-- Back shadow -->
<path d="M 520 300
C 565 350, 560 420, 530 470
C 498 520, 440 540, 400 535
C 435 530, 485 510, 510 465
C 535 420, 540 360, 520 300 Z"
fill="#2b221c" opacity="0.28" mask="url(#furMask)"/>
<!-- Belly soft shadow -->
<path d="M 340 410
C 355 470, 410 505, 460 500
C 430 492, 390 470, 368 438
C 355 420, 350 410, 340 410 Z"
fill="#3a2f27" opacity="0.20" mask="url(#furMask)"/>
<!-- Tail shading and speckled fur -->
<path d="M 545 458
C 600 470, 645 518, 595 545
C 545 570, 450 575, 365 548
C 340 540, 340 520, 355 513
C 375 504, 420 520, 473 534
C 525 548, 575 540, 590 526
C 607 510, 565 480, 545 458 Z"
fill="#2b221c" opacity="0.22" mask="url(#furMaskFine)"/>
<!-- Soft body fur speckle overlay -->
<path d="M 350 270
C 310 305, 300 410, 360 510
C 420 560, 520 550, 560 435
C 585 360, 545 285, 470 262
C 415 248, 375 252, 350 270 Z"
fill="#ffffff" opacity="0.06" mask="url(#furMaskFine)"/>
<!-- Tabby-like subtle stripes (masked for fur edge) -->
<g fill="#3a2b22" opacity="0.22" mask="url(#furMask)">
<path d="M 475 300 C 502 315, 520 345, 522 370 C 505 360, 485 340, 475 320 Z"/>
<path d="M 450 320 C 472 332, 490 354, 493 375 C 476 365, 458 348, 450 330 Z"/>
<path d="M 430 340 C 448 352, 462 370, 465 390 C 450 382, 438 366, 430 350 Z"/>
<path d="M 410 360 C 428 372, 440 392, 442 410 C 430 404, 420 390, 410 372 Z"/>
<!-- Tail rings -->
<path d="M 540 480 C 565 487, 585 505, 582 520 C 560 510, 542 497, 540 480 Z"/>
<path d="M 505 500 C 535 508, 560 525, 555 540 C 525 532, 510 520, 505 500 Z"/>
</g>
<!-- Edge fur strokes for realism -->
<g stroke="#a98b73" stroke-width="2.2" opacity="0.4" filter="url(#soften)">
<!-- Left flank -->
<path d="M 330 380 C 324 390, 324 400, 330 410"/>
<path d="M 332 400 C 326 410, 326 420, 332 430"/>
<path d="M 336 420 C 330 430, 330 440, 336 448"/>
<path d="M 338 440 C 333 448, 333 456, 338 463"/>
<!-- Back -->
<path d="M 500 270 C 512 280, 520 295, 520 310"/>
<path d="M 515 290 C 528 303, 533 320, 532 335"/>
<path d="M 520 310 C 533 323, 538 340, 537 355"/>
<!-- Chest fluff -->
<path d="M 358 320 C 352 328, 352 338, 358 345"/>
<path d="M 365 330 C 359 338, 360 348, 366 357"/>
<path d="M 372 340 C 366 348, 367 358, 373 367"/>
<path d="M 380 350 C 374 358, 375 368, 381 377"/>
<path d="M 388 360 C 382 368, 383 378, 389 387"/>
</g>
<!-- Inner fur fine strokes on chest -->
<g stroke="#8f745f" stroke-width="1.4" opacity="0.35" filter="url(#soften)">
<path d="M 370 380 C 368 392, 372 404, 382 415"/>
<path d="M 380 385 C 378 399, 384 410, 395 420"/>
<path d="M 390 390 C 388 404, 395 415, 407 424"/>
<path d="M 400 395 C 398 409, 407 420, 420 427"/>
</g>
<!-- Subtle highlight on head fur -->
<path d="M 350 210
C 360 195, 380 188, 405 190
C 430 192, 450 200, 462 215
C 450 214, 420 214, 395 216
C 372 219, 357 220, 350 210 Z"
fill="#ffffff" opacity="0.08" mask="url(#furMaskFine)"/>
<!-- Nose bridge shade -->
<path d="M 382 220
C 395 215, 405 214, 418 220
C 410 230, 395 232, 382 228 Z"
fill="#2d241f" opacity="0.18" filter="url(#soften)"/>
</g>
</svg>action
“Draw a cat riding a bicycle as an SVG.”
GPT-5 · action · attempt 1 · score 0.0
the actual svg, as the machine wrote it:
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 800 500" width="800" height="500">
<defs>
<linearGradient id="skyGrad" x1="0" y1="0" x2="0" y2="1">
<stop offset="0%" stop-color="#cfeeff"/>
<stop offset="100%" stop-color="#ffffff"/>
</linearGradient>
<linearGradient id="groundGrad" x1="0" y1="0" x2="0" y2="1">
<stop offset="0%" stop-color="#8bd17a"/>
<stop offset="100%" stop-color="#5db05b"/>
</linearGradient>
<radialGradient id="tireGrad" cx="50%" cy="50%" r="50%">
<stop offset="0%" stop-color="#444"/>
<stop offset="100%" stop-color="#1f1f1f"/>
</radialGradient>
<radialGradient id="hubGrad" cx="50%" cy="50%" r="50%">
<stop offset="0%" stop-color="#f0f0f0"/>
<stop offset="100%" stop-color="#b0b0b0"/>
</radialGradient>
<linearGradient id="frameGrad" x1="0" y1="0" x2="1" y2="0">
<stop offset="0%" stop-color="#3AB6C2"/>
<stop offset="100%" stop-color="#2A9D8F"/>
</linearGradient>
<filter id="softShadow" x="-50%" y="-50%" width="200%" height="200%">
<feGaussianBlur in="SourceAlpha" stdDeviation="4"/>
<feOffset dx="0" dy="2" result="off"/>
<feMerge>
<feMergeNode in="off"/>
<feMergeNode in="SourceGraphic"/>
</feMerge>
</filter>
<g id="wheel">
<circle r="75" fill="url(#tireGrad)"/>
<circle r="62" fill="#d9d9d9" stroke="#b9b9b9" stroke-width="4"/>
<g stroke="#9a9a9a" stroke-width="2">
<line x1="0" y1="0" x2="0" y2="-62" transform="rotate(0)"/>
<line x1="0" y1="0" x2="0" y2="-62" transform="rotate(15)"/>
<line x1="0" y1="0" x2="0" y2="-62" transform="rotate(30)"/>
<line x1="0" y1="0" x2="0" y2="-62" transform="rotate(45)"/>
<line x1="0" y1="0" x2="0" y2="-62" transform="rotate(60)"/>
<line x1="0" y1="0" x2="0" y2="-62" transform="rotate(75)"/>
<line x1="0" y1="0" x2="0" y2="-62" transform="rotate(90)"/>
<line x1="0" y1="0" x2="0" y2="-62" transform="rotate(105)"/>
<line x1="0" y1="0" x2="0" y2="-62" transform="rotate(120)"/>
<line x1="0" y1="0" x2="0" y2="-62" transform="rotate(135)"/>
<line x1="0" y1="0" x2="0" y2="-62" transform="rotate(150)"/>
<line x1="0" y1="0" x2="0" y2="-62" transform="rotate(165)"/>
<line x1="0" y1="0" x2="0" y2="-62" transform="rotate(180)"/>
<line x1="0" y1="0" x2="0" y2="-62" transform="rotate(195)"/>
<line x1="0" y1="0" x2="0" y2="-62" transform="rotate(210)"/>
</g>
<circle r="10" fill="url(#hubGrad)" stroke="#8a8a8a" stroke-width="2"/>
</g>
<style>
.frame { stroke: url(#frameGrad); stroke-width: 8; stroke-linecap: round; stroke-linejoin: round; fill: none; }
.metal { stroke: #5b5b5b; fill: none; stroke-linecap: round; stroke-linejoin: round; }
.handlebar { stroke: #3f3f3f; stroke-width: 8; stroke-linecap: round; }
.fur { fill: #f6a55d; }
.furStroke { stroke: #f6a55d; stroke-linecap: round; stroke-linejoin: round; }
.stripe { fill: #d9792c; }
.paw { fill: #f7c493; }
.eyeWhite { fill: #ffffff; }
.pupil { fill: #222; }
.whisker { stroke: #8a5a34; stroke-width: 2; stroke-linecap: round; }
.groundShadow { fill: rgba(0,0,0,0.18); filter: url(#softShadow); }
.scarf { fill: #e74c3c; }
.scarfDark { fill: #c0392b; }
</style>
</defs>
<rect x="0" y="0" width="800" height="500" fill="url(#skyGrad)"/>
<path d="M0,430 C120,400 220,450 360,440 C520,430 600,455 800,430 L800,500 L0,500 Z" fill="url(#groundGrad)"/>
<g opacity="0.3">
<ellipse class="groundShadow" cx="250" cy="440" rx="85" ry="12"/>
<ellipse class="groundShadow" cx="540" cy="440" rx="85" ry="12"/>
</g>
<g id="bicycle" filter="url(#softShadow)">
<g transform="translate(250,360)">
<use href="#wheel"/>
</g>
<g transform="translate(540,360)">
<use href="#wheel"/>
</g>
<g>
<path class="frame" d="M250,360 L330,345"/>
<path class="frame" d="M250,360 L300,240"/>
<path class="frame" d="M300,240 L330,345"/>
<path class="frame" d="M300,240 L500,230"/>
<path class="frame" d="M500,230 L515,290"/>
<path class="frame" d="M515,290 L330,345"/>
<path class="frame" d="M515,290 Q540,330 540,360"/>
</g>
<g>
<line class="handlebar" x1="500" y1="230" x2="515" y2="210"/>
<line class="handlebar" x1="485" y1="210" x2="555" y2="210"/>
<circle cx="485" cy="210" r="7" fill="#2e2e2e"/>
<circle cx="555" cy="210" r="7" fill="#2e2e2e"/>
</g>
<g>
<path d="M298,242 Q320,230 345,236 Q330,246 298,242 Z" fill="#2f2f2f"/>
</g>
<g>
<circle cx="330" cy="345" r="22" fill="#bfbfbf" stroke="#8a8a8a" stroke-width="4"/>
<line x1="330" y1="345" x2="364.3" y2="352.8" class="metal" stroke-width="6"/>
<line x1="330" y1="345" x2="275.7" y2="337.2" class="metal" stroke-width="6"/>
<rect x="360.5" y="348.5" width="16" height="8" fill="#2e2e2e" transform="rotate(10 368.5 352.5)" rx="2"/>
<rect x="265" y="333" width="16" height="8" fill="#2e2e2e" transform="rotate(190 273 337)" rx="2"/>
<circle cx="250" cy="360" r="9" fill="#bfbfbf" stroke="#8a8a8a" stroke-width="3"/>
<path d="M342,335 L238,350" stroke="#555" stroke-width="3" fill="none"/>
<path d="M342,355 L262,370" stroke="#555" stroke-width="3" fill="none"/>
</g>
</g>
<g id="cat">
<ellipse cx="355" cy="265" rx="95" ry="58" transform="rotate(-10 355 265)" class="fur" stroke="#e08a40" stroke-width="2"/>
<g opacity="0.9">
<path d="M300,245 q18,-12 38,-10 q-10,14 -34,18 z" class="stripe"/>
<path d="M330,235 q22,-12 44,-8 q-10 16 -38 18 z" class="stripe"/>
<path d="M360,228 q22,-10 44,-6 q-10 14 -38 16 z" class="stripe"/>
</g>
<path d="M285,265 C275,250 265,235 275,220 C300,195 345,235 345,235" stroke="#f6a55d" stroke-width="18" fill="none" stroke-linecap="round"/>
<g>
<circle cx="480" cy="190" r="45" class="fur" stroke="#e08a40" stroke-width="2"/>
<path d="M448,180 L466,156 L470,188 Z" fill="#f6a55d" stroke="#e08a40" stroke-width="2"/>
<path d="M512,180 L494,156 L490,188 Z" fill="#f6a55d" stroke="#e08a40" stroke-width="2"/>
<path d="M458,173 L466,162 L468,180 Z" fill="#f6b3c4"/>
<path d="M502,173 L494,162 L492,180 Z" fill="#f6b3c4"/>
<ellipse cx="465" cy="190" rx="11" ry="13" class="eyeWhite"/>
<ellipse cx="493" cy="190" rx="11" ry="13" class="eyeWhite"/>
<circle cx="465" cy="193" r="5" class="pupil"/>
<circle cx="493" cy="193" r="5" class="pupil"/>
<circle cx="463" cy="191" r="1.5" fill="#ffffff" opacity="0.9"/>
<circle cx="491" cy="191" r="1.5" fill="#ffffff" opacity="0.9"/>
<path d="M478,204 L486,204 L482,210 Z" fill="#d47a5a"/>
<path d="M482,210 q-6,6 -14,6" stroke="#8a5a34" stroke-width="2" fill="none"/>
<path d="M482,210 q6,6 14,6" stroke="#8a5a34" stroke-width="2" fill="none"/>
<g>
<line x1="450" y1="205" x2="430" y2="200" class="whisker"/>
<line x1="450" y1="210" x2="427" y2="210" class="whisker"/>
<line x1="450" y1="215" x2="430" y2="220" class="whisker"/>
<line x1="514" y1="205" x2="534" y2="200" class="whisker"/>
<line x1="514" y1="210" x2="537" y2="210" class="whisker"/>
<line x1="514" y1="215" x2="534" y2="220" class="whisker"/>
</g>
<path d="M452,182 q14,-10 28,0" stroke="#d9792c" stroke-width="3" fill="none" opacity="0.7"/>
</g>
<g>
<path d="M438,210 q-32,12 -64,26 q-22,9 -34,8" class="scarf"/>
<path d="M438,210 q-6,12 -8,20 q16,-6 28,-2 q-8,-10 -20,-18 z" class="scarfDark"/>
</g>
<path d="M405,240 Q450,220 495,210" class="furStroke" stroke-width="18" fill="none"/>
<path d="M415,245 Q470,222 540,210" class="furStroke" stroke-width="14" opacity="0.85" fill="none"/>
<circle cx="495" cy="210" r="9" class="paw"/>
<circle cx="540" cy="210" r="9" class="paw"/>
<path d="M340,300 Q360,330 365,352" class="furStroke" stroke-width="20" fill="none"/>
<circle cx="365" cy="352" r="9" class="paw"/>
<path d="M330,300 Q305,325 276,337" class="furStroke" stroke-width="18" fill="none" opacity="0.95"/>
<circle cx="276" cy="337" r="8" class="paw"/>
<path d="M285,262 q-18,8 -8,18 q18,16 40,8" stroke="#d9792c" stroke-width="6" fill="none" stroke-linecap="round" opacity="0.7"/>
</g>
<g opacity="0.15">
<circle cx="90" cy="80" r="28" fill="#fff59d"/>
<circle cx="90" cy="80" r="40" fill="#fff59d" opacity="0.4"/>
</g>
</svg>GPT-5 · action · attempt 2 · score 0.0
the actual svg, as the machine wrote it:
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 800 600">
<defs>
<linearGradient id="sky" x1="0" y1="0" x2="0" y2="1">
<stop offset="0%" stop-color="#bfe8ff"/>
<stop offset="60%" stop-color="#eaf7ff"/>
<stop offset="100%" stop-color="#ffffff"/>
</linearGradient>
<linearGradient id="roadGrad" x1="0" y1="0" x2="0" y2="1">
<stop offset="0%" stop-color="#777"/>
<stop offset="100%" stop-color="#444"/>
</linearGradient>
<filter id="blurShadow" x="-50%" y="-50%" width="200%" height="200%">
<feGaussianBlur in="SourceAlpha" stdDeviation="6" result="b"/>
<feOffset dy="2" result="o"/>
<feComponentTransfer>
<feFuncA type="linear" slope="0.4"/>
</feComponentTransfer>
<feMerge>
<feMergeNode in="o"/>
<feMergeNode in="SourceGraphic"/>
</feMerge>
</filter>
<g id="wheel">
<circle r="92" fill="none" stroke="#1f1f1f" stroke-width="16"/>
<circle r="72" fill="none" stroke="#9aa7b4" stroke-width="5"/>
<g stroke="#c7d4df" stroke-width="2">
<line x1="0" y1="0" x2="72" y2="0"/>
<line x1="0" y1="0" x2="-72" y2="0"/>
<line x1="0" y1="0" x2="0" y2="72"/>
<line x1="0" y1="0" x2="0" y2="-72"/>
<line x1="0" y1="0" x2="62.35" y2="36"/>
<line x1="0" y1="0" x2="-62.35" y2="-36"/>
<line x1="0" y1="0" x2="-62.35" y2="36"/>
<line x1="0" y1="0" x2="62.35" y2="-36"/>
<line x1="0" y1="0" x2="36" y2="62.35"/>
<line x1="0" y1="0" x2="-36" y2="-62.35"/>
<line x1="0" y1="0" x2="-36" y2="62.35"/>
<line x1="0" y1="0" x2="36" y2="-62.35"/>
</g>
<circle r="9" fill="#e6eef5" stroke="#7c8a96" stroke-width="3"/>
</g>
<style>
.frame { stroke:#2a6fb5; stroke-width:10; fill:none; stroke-linecap:round; stroke-linejoin:round; }
.thin { stroke-width:6; }
.seat { fill:#2b2b2b; stroke:#1a1a1a; stroke-width:3; }
.bar { stroke:#2b2b2b; stroke-width:8; stroke-linecap:round; }
.grip { fill:#1f1f1f; }
.chainring { fill:#cfd7df; stroke:#8d99a6; stroke-width:3; }
.crank { stroke:#2b2b2b; stroke-width:6; stroke-linecap:round; }
.pedal { fill:#2b2b2b; stroke:#1a1a1a; stroke-width:2; }
.cat-fur { fill:#f4a755; stroke:#c87428; stroke-width:3; }
.cat-belly { fill:#ffd9b0; stroke:none; }
.cat-ear { fill:#f4a755; stroke:#c87428; stroke-width:3; }
.cat-ear-inner { fill:#ffb6b6; opacity:0.8; }
.eye { fill:#fff; }
.pupil { fill:#1b1b1b; }
.nose { fill:#ff7e8a; }
.whisker { stroke:#3f3f3f; stroke-width:2; stroke-linecap:round; }
.stripe { stroke:#d47f2b; stroke-width:5; stroke-linecap:round; opacity:0.7; }
.shadow { fill:#000; opacity:0.18; filter:url(#blurShadow); }
</style>
</defs>
<!-- Background -->
<rect x="0" y="0" width="800" height="600" fill="url(#sky)"/>
<!-- Distant ground -->
<rect x="0" y="460" width="800" height="140" fill="url(#roadGrad)"/>
<!-- Wheel ground shadows -->
<ellipse class="shadow" cx="230" cy="512" rx="96" ry="18"/>
<ellipse class="shadow" cx="550" cy="512" rx="96" ry="18"/>
<!-- Wheels -->
<g transform="translate(230,420)">
<use href="#wheel"/>
</g>
<g transform="translate(550,420)">
<use href="#wheel"/>
</g>
<!-- Bicycle frame geometry points for reference (not rendered) -->
<!-- R(230,420) F(550,420) B(340,400) S(360,300) H(500,320) HB(540,290) -->
<!-- Frame -->
<g class="frame">
<!-- Chainstay -->
<path d="M230,420 L340,400"/>
<!-- Seat tube -->
<path d="M360,300 L340,400"/>
<!-- Seat stay -->
<path d="M230,420 L360,300"/>
<!-- Top tube -->
<path d="M360,300 L500,320"/>
<!-- Down tube -->
<path d="M500,320 L340,400"/>
<!-- Fork (blades) -->
<path d="M500,320 L550,420"/>
<path d="M510,322 L550,420" class="thin"/>
</g>
<!-- Seat -->
<g transform="translate(360,300)">
<rect x="-6" y="-16" width="12" height="26" rx="3" class="seat"/>
<path d="M-40,-18 C-5,-28 25,-25 35,-18 C40,-14 34,-8 20,-6 L-20,-6 C-34,-6 -44,-10 -40,-18 Z" class="seat"/>
</g>
<!-- Headset + stem + handlebar -->
<g>
<!-- Headset cap -->
<circle cx="500" cy="320" r="6" fill="#2b2b2b"/>
<!-- Stem -->
<path d="M500,320 L538,292" class="bar"/>
<!-- Handlebar -->
<path d="M488,290 L590,290" class="bar"/>
<!-- Grips -->
<circle cx="590" cy="290" r="8" class="grip"/>
<circle cx="488" cy="290" r="8" class="grip"/>
</g>
<!-- Drivetrain -->
<g>
<!-- Chainring -->
<circle cx="340" cy="400" r="22" class="chainring"/>
<!-- Cranks -->
<line x1="340" y1="400" x2="374.6" y2="380" class="crank"/>
<line x1="340" y1="400" x2="305.4" y2="420" class="crank" opacity="0.7"/>
<!-- Pedals -->
<g transform="translate(374.6,380) rotate(-30)">
<rect x="-14" y="-5" width="28" height="10" rx="3" class="pedal"/>
</g>
<g transform="translate(305.4,420) rotate(150)">
<rect x="-14" y="-5" width="28" height="10" rx="3" class="pedal"/>
</g>
<!-- Simple chain -->
<path d="M362,400 C390,404 450,412 520,415" stroke="#2b2b2b" stroke-width="3" fill="none" opacity="0.3"/>
</g>
<!-- Cat -->
<g>
<!-- Tail -->
<path d="M300,310
c-40,10 -50,40 -30,60
c20,20 60,0 60,-18
c0,-15 -12,-22 -28,-18" class="cat-fur" fill="none" stroke-width="10" stroke-linecap="round"/>
<!-- Tail stripes -->
<path d="M286,338 l18,-6" class="stripe"/>
<path d="M290,355 l20,-6" class="stripe"/>
<!-- Body -->
<ellipse cx="380" cy="310" rx="80" ry="56" class="cat-fur"/>
<!-- Belly patch -->
<ellipse cx="380" cy="320" rx="46" ry="32" class="cat-belly" opacity="0.85"/>
<!-- Back stripes -->
<path d="M330,290 q20,10 40,0" class="stripe"/>
<path d="M325,310 q25,12 45,2" class="stripe"/>
<path d="M335,330 q30,10 50,0" class="stripe"/>
<!-- Head -->
<g>
<circle cx="430" cy="250" r="46" class="cat-fur"/>
<!-- Ears -->
<path d="M404,214 L420,200 L425,226 Z" class="cat-ear"/>
<path d="M452,214 L440,198 L433,225 Z" class="cat-ear"/>
<path d="M418,212 L423,207 L425,218 Z" class="cat-ear-inner"/>
<path d="M438,212 L442,206 L441,218 Z" class="cat-ear-inner"/>
<!-- Eyes -->
<ellipse cx="418" cy="250" rx="12" ry="14" class="eye"/>
<ellipse cx="443" cy="250" rx="12" ry="14" class="eye"/>
<circle cx="422" cy="252" r="5" class="pupil"/>
<circle cx="447" cy="252" r="5" class="pupil"/>
<circle cx="424" cy="250" r="2" fill="#fff" opacity="0.8"/>
<circle cx="449" cy="250" r="2" fill="#fff" opacity="0.8"/>
<!-- Nose -->
<path d="M430,265 l-8,6 h16 z" class="nose"/>
<!-- Mouth -->
<path d="M422,273 q8,8 16,0" fill="none" stroke="#7a3b3b" stroke-width="3" stroke-linecap="round"/>
<!-- Whiskers -->
<path d="M410,266 h-24" class="whisker"/>
<path d="M410,272 h-24" class="whisker"/>
<path d="M450,266 h24" class="whisker"/>
<path d="M450,272 h24" class="whisker"/>
<!-- Cheek blush -->
<circle cx="410" cy="263" r="6" fill="#ffb0b0" opacity="0.5"/>
<circle cx="450" cy="263" r="6" fill="#ffb0b0" opacity="0.5"/>
</g>
<!-- Arms reaching to handlebar -->
<g stroke-linecap="round">
<!-- Left arm -->
<path d="M360,300
q30,-10 80,0
q20,6 50,-10" fill="none" class="cat-fur" stroke-width="10"/>
<!-- Right arm -->
<path d="M390,300
q40,-8 100,-6
q10,2 28,-4" fill="none" class="cat-fur" stroke-width="10"/>
<!-- Paws on grips -->
<g>
<circle cx="488" cy="290" r="10" class="cat-fur"/>
<circle cx="590" cy="290" r="10" class="cat-fur"/>
<circle cx="488" cy="290" r="6" class="cat-belly" opacity="0.8"/>
<circle cx="590" cy="290" r="6" class="cat-belly" opacity="0.8"/>
</g>
</g>
<!-- Legs to pedals -->
<!-- Right leg to front/down pedal -->
<path d="M370,340
q10,22 20,32
q10,10 28,8" fill="none" class="cat-fur" stroke-width="12" stroke-linecap="round"/>
<circle cx="374.6" cy="380" r="9" class="cat-fur"/>
<!-- Left leg to back/up pedal -->
<path d="M350,340
q-6,20 -12,40
q-4,12 -20,22" fill="none" class="cat-fur" stroke-width="12" stroke-linecap="round" opacity="0.85"/>
<circle cx="305.4" cy="420" r="8" class="cat-fur" opacity="0.85"/>
<!-- Collar and bell -->
<path d="M402,280 q14,-10 28,0" fill="none" stroke="#d12929" stroke-width="6" stroke-linecap="round"/>
<circle cx="416" cy="285" r="6" fill="#ffd247" stroke="#d39f1f" stroke-width="2"/>
<circle cx="416" cy="287" r="2" fill="#b8860b"/>
</g>
<!-- Front wheel highlight -->
<circle cx="550" cy="420" r="72" fill="none" stroke="#ffffff" stroke-opacity="0.15" stroke-width="4"/>
<!-- Rear wheel highlight -->
<circle cx="230" cy="420" r="72" fill="none" stroke="#ffffff" stroke-opacity="0.15" stroke-width="4"/>
<!-- Subtle foreground shadow under cat -->
<ellipse class="shadow" cx="390" cy="500" rx="140" ry="20" opacity="0.12"/>
</svg>GPT-5 · action · attempt 3 · score 9.0
the actual svg, as the machine wrote it:
<svg xmlns="http://www.w3.org/2000/svg" width="800" height="500" viewBox="0 0 800 500" role="img" aria-labelledby="title desc">
<title id="title">Cat Riding a Bicycle</title>
<desc id="desc">An orange cat with stripes rides a blue bicycle with two large wheels on a simple ground, holding the handlebar and placing paws on the pedals.</desc>
<defs>
<linearGradient id="skyGrad" x1="0" y1="0" x2="0" y2="1">
<stop offset="0%" stop-color="#cfeffd"/>
<stop offset="100%" stop-color="#ffffff"/>
</linearGradient>
<radialGradient id="hubGrad" cx="50%" cy="50%" r="50%">
<stop offset="0%" stop-color="#fff"/>
<stop offset="100%" stop-color="#bbb"/>
</radialGradient>
</defs>
<!-- Background -->
<rect x="0" y="0" width="800" height="500" fill="url(#skyGrad)"/>
<rect x="0" y="440" width="800" height="60" fill="#e9f2e1"/>
<path d="M0,440 H800" stroke="#b8c9b0" stroke-width="3" fill="none"/>
<!-- Wheels -->
<g id="rearWheel" transform="translate(240,360)">
<circle r="84" fill="none" stroke="#1e1e1e" stroke-width="14"/>
<circle r="66" fill="none" stroke="#bfbfbf" stroke-width="6"/>
<g stroke="#bfbfbf" stroke-width="2" stroke-linecap="round">
<line x1="0" y1="0" x2="0" y2="-66"/>
<line x1="0" y1="0" x2="0" y2="-66" transform="rotate(30)"/>
<line x1="0" y1="0" x2="0" y2="-66" transform="rotate(60)"/>
<line x1="0" y1="0" x2="0" y2="-66" transform="rotate(90)"/>
<line x1="0" y1="0" x2="0" y2="-66" transform="rotate(120)"/>
<line x1="0" y1="0" x2="0" y2="-66" transform="rotate(150)"/>
<line x1="0" y1="0" x2="0" y2="-66" transform="rotate(180)"/>
<line x1="0" y1="0" x2="0" y2="-66" transform="rotate(210)"/>
<line x1="0" y1="0" x2="0" y2="-66" transform="rotate(240)"/>
<line x1="0" y1="0" x2="0" y2="-66" transform="rotate(270)"/>
<line x1="0" y1="0" x2="0" y2="-66" transform="rotate(300)"/>
<line x1="0" y1="0" x2="0" y2="-66" transform="rotate(330)"/>
</g>
<circle r="10" fill="url(#hubGrad)" stroke="#8a8a8a" stroke-width="2"/>
</g>
<g id="frontWheel" transform="translate(520,360)">
<circle r="84" fill="none" stroke="#1e1e1e" stroke-width="14"/>
<circle r="66" fill="none" stroke="#bfbfbf" stroke-width="6"/>
<g stroke="#bfbfbf" stroke-width="2" stroke-linecap="round">
<line x1="0" y1="0" x2="0" y2="-66"/>
<line x1="0" y1="0" x2="0" y2="-66" transform="rotate(30)"/>
<line x1="0" y1="0" x2="0" y2="-66" transform="rotate(60)"/>
<line x1="0" y1="0" x2="0" y2="-66" transform="rotate(90)"/>
<line x1="0" y1="0" x2="0" y2="-66" transform="rotate(120)"/>
<line x1="0" y1="0" x2="0" y2="-66" transform="rotate(150)"/>
<line x1="0" y1="0" x2="0" y2="-66" transform="rotate(180)"/>
<line x1="0" y1="0" x2="0" y2="-66" transform="rotate(210)"/>
<line x1="0" y1="0" x2="0" y2="-66" transform="rotate(240)"/>
<line x1="0" y1="0" x2="0" y2="-66" transform="rotate(270)"/>
<line x1="0" y1="0" x2="0" y2="-66" transform="rotate(300)"/>
<line x1="0" y1="0" x2="0" y2="-66" transform="rotate(330)"/>
</g>
<circle r="10" fill="url(#hubGrad)" stroke="#8a8a8a" stroke-width="2"/>
</g>
<!-- Bicycle frame -->
<g id="bike" stroke-linecap="round" stroke-linejoin="round">
<!-- tubes -->
<g stroke="#2e86de" stroke-width="10" fill="none">
<line x1="240" y1="360" x2="380" y2="345"/> <!-- chainstay -->
<line x1="380" y1="345" x2="370" y2="270"/> <!-- seat tube -->
<line x1="370" y1="270" x2="540" y2="280"/> <!-- top tube -->
<line x1="540" y1="280" x2="380" y2="345"/> <!-- down tube -->
<line x1="240" y1="360" x2="370" y2="270"/> <!-- seat stay -->
</g>
<!-- fork -->
<g stroke="#2e86de" stroke-width="9" fill="none">
<line x1="540" y1="280" x2="515" y2="360"/>
<line x1="548" y1="282" x2="525" y2="360"/>
</g>
<!-- handlebar stem and bar -->
<g stroke="#2b2b2b" fill="none">
<line x1="540" y1="280" x2="552" y2="255" stroke-width="6"/>
<path d="M515,245 Q542,230 570,245" stroke-width="8" stroke-linecap="round"/>
<circle cx="515" cy="245" r="6" fill="#2b2b2b"/>
<circle cx="570" cy="245" r="6" fill="#2b2b2b"/>
</g>
<!-- seat and post -->
<g>
<line x1="370" y1="270" x2="370" y2="258" stroke="#2b2b2b" stroke-width="6"/>
<path d="M355,258 C365,248 392,248 400,258 C392,268 360,268 355,258 Z" fill="#2b2b2b" stroke="#1a1a1a" stroke-width="2"/>
</g>
<!-- crankset and pedals -->
<g id="cranks">
<circle cx="380" cy="345" r="18" fill="#444" stroke="#222" stroke-width="3"/>
<!-- right crank arm -->
<line x1="380" y1="345" x2="416.3" y2="328.1" stroke="#444" stroke-width="8"/>
<g transform="translate(416.3,328.1) rotate(-25)">
<rect x="0" y="-4.5" width="26" height="9" rx="3" ry="3" fill="#2b2b2b" stroke="#1a1a1a" stroke-width="1.5"/>
</g>
<!-- left crank arm -->
<line x1="380" y1="345" x2="343.7" y2="361.9" stroke="#777" stroke-width="8"/>
<g transform="translate(343.7,361.9) rotate(155)">
<rect x="0" y="-4.5" width="26" height="9" rx="3" ry="3" fill="#2b2b2b" stroke="#1a1a1a" stroke-width="1.5"/>
</g>
<!-- simple chain line -->
<path d="M365,353 L258,352" stroke="#555" stroke-width="3" stroke-linecap="round"/>
</g>
</g>
<!-- Cat -->
<g id="cat" stroke-linecap="round" stroke-linejoin="round">
<!-- tail behind -->
<path d="M350,275 Q315,260 335,235 Q370,205 395,222" fill="none" stroke="#C96B2C" stroke-width="12"/>
<!-- body -->
<ellipse cx="420" cy="270" rx="72" ry="48" fill="#F7A85A" stroke="#C96B2C" stroke-width="4"/>
<!-- back stripes -->
<path d="M390,248 l-18,-10 l10,20 Z" fill="#e07c3a" opacity="0.9"/>
<path d="M415,240 l-20,-9 l9,22 Z" fill="#e07c3a" opacity="0.9"/>
<path d="M442,246 l-18,-10 l8,20 Z" fill="#e07c3a" opacity="0.9"/>
<!-- head -->
<g>
<circle cx="470" cy="205" r="36" fill="#F7A85A" stroke="#C96B2C" stroke-width="4"/>
<!-- ears -->
<path d="M450,178 L460,160 L470,182 Z" fill="#F7A85A" stroke="#C96B2C" stroke-width="3"/>
<path d="M487,178 L477,160 L467,182 Z" fill="#F7A85A" stroke="#C96B2C" stroke-width="3"/>
<path d="M459,174 L463,168 L468,178 Z" fill="#f6b4c6" opacity="0.9"/>
<path d="M479,174 L475,168 L470,178 Z" fill="#f6b4c6" opacity="0.9"/>
<!-- face -->
<ellipse cx="459" cy="197" rx="7.5" ry="6.5" fill="#fff" stroke="#C96B2C" stroke-width="2"/>
<ellipse cx="482" cy="197" rx="7.5" ry="6.5" fill="#fff" stroke="#C96B2C" stroke-width="2"/>
<circle cx="459" cy="198" r="3" fill="#2b2b2b"/>
<circle cx="482" cy="198" r="3" fill="#2b2b2b"/>
<path d="M471,206 l-6,6 l6,0" stroke="#C96B2C" stroke-width="2" fill="none"/>
<path d="M471,206 l6,6 l-6,0" stroke="#C96B2C" stroke-width="2" fill="none"/>
<path d="M470,202 q0,3 0,4" stroke="#C96B2C" stroke-width="2" fill="none"/>
<circle cx="470" cy="204" r="2.4" fill="#f48aa4" stroke="#C96B2C" stroke-width="1"/>
<!-- whiskers -->
<g stroke="#C96B2C" stroke-width="2">
<line x1="448" y1="205" x2="430" y2="201"/>
<line x1="448" y1="210" x2="430" y2="214"/>
<line x1="492" y1="205" x2="510" y2="201"/>
<line x1="492" y1="210" x2="510" y2="214"/>
</g>
</g>
<!-- arms to handlebar -->
<path d="M405,255 Q460,235 520,245" stroke="#C96B2C" stroke-width="10" fill="none"/>
<circle cx="520" cy="245" r="10" fill="#F7A85A" stroke="#C96B2C" stroke-width="3"/>
<path d="M445,255 Q505,230 565,245" stroke="#C96B2C" stroke-width="10" fill="none"/>
<circle cx="565" cy="245" r="10" fill="#F7A85A" stroke="#C96B2C" stroke-width="3"/>
<!-- legs to pedals -->
<path d="M420,295 Q445,330 416.3,328.1" stroke="#C96B2C" stroke-width="12" fill="none"/>
<g transform="translate(416.3,328.1) rotate(-25)">
<ellipse cx="12" cy="0" rx="11" ry="7" fill="#F7A85A" stroke="#C96B2C" stroke-width="3"/>
<circle cx="14" cy="0" r="2.5" fill="#f4a6b8"/>
</g>
<path d="M395,300 Q360,340 343.7,361.9" stroke="#C96B2C" stroke-width="12" fill="none"/>
<g transform="translate(343.7,361.9) rotate(155)">
<ellipse cx="12" cy="0" rx="11" ry="7" fill="#F7A85A" stroke="#C96B2C" stroke-width="3"/>
<circle cx="14" cy="0" r="2.5" fill="#f4a6b8"/>
</g>
<!-- little belly highlight -->
<ellipse cx="420" cy="280" rx="36" ry="24" fill="#ffd1a6" opacity="0.6"/>
</g>
<!-- Simple wheel shadows -->
<ellipse cx="240" cy="444" rx="78" ry="10" fill="#cfd8cf" opacity="0.6"/>
<ellipse cx="520" cy="444" rx="78" ry="10" fill="#cfd8cf" opacity="0.6"/>
</svg>GPT-5 · action · attempt 4 · score 8.8
the actual svg, as the machine wrote it:
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 900 600">
<title>Cat riding a bicycle</title>
<defs>
<linearGradient id="sky" x1="0" y1="0" x2="0" y2="1">
<stop offset="0%" stop-color="#cfefff"/>
<stop offset="100%" stop-color="#f6fdff"/>
</linearGradient>
<linearGradient id="ground" x1="0" y1="0" x2="0" y2="1">
<stop offset="0%" stop-color="#a0d97a"/>
<stop offset="100%" stop-color="#6ab062"/>
</linearGradient>
<radialGradient id="wheelShadow" cx="50%" cy="50%" r="50%">
<stop offset="0%" stop-color="#000" stop-opacity="0.25"/>
<stop offset="100%" stop-color="#000" stop-opacity="0"/>
</radialGradient>
</defs>
<!-- Sky and ground -->
<rect width="100%" height="100%" fill="url(#sky)"/>
<path d="M0,470 Q200,430 400,460 T900,455 L900,600 L0,600 Z" fill="url(#ground)" opacity="0.9"/>
<!-- Ground shadow -->
<g opacity="0.2">
<ellipse cx="260" cy="465" rx="120" ry="18" fill="url(#wheelShadow)"/>
<ellipse cx="540" cy="465" rx="120" ry="18" fill="url(#wheelShadow)"/>
</g>
<!-- Bicycle -->
<g id="bicycle" stroke-linecap="round" stroke-linejoin="round">
<!-- Wheels -->
<g id="rearWheel" transform="translate(260,420)">
<circle r="95" fill="none" stroke="#222" stroke-width="12"/>
<circle r="78" fill="none" stroke="#cdd3d6" stroke-width="5"/>
<g stroke="#9aa3a8" stroke-width="2">
<line x1="0" y1="0" x2="78" y2="0"/>
<line x1="0" y1="0" x2="-78" y2="0"/>
<line x1="0" y1="0" x2="0" y2="78"/>
<line x1="0" y1="0" x2="0" y2="-78"/>
<line x1="0" y1="0" x2="55" y2="55"/>
<line x1="0" y1="0" x2="-55" y2="-55"/>
<line x1="0" y1="0" x2="55" y2="-55"/>
<line x1="0" y1="0" x2="-55" y2="55"/>
<line x1="0" y1="0" x2="20" y2="75"/>
<line x1="0" y1="0" x2="-20" y2="-75"/>
<line x1="0" y1="0" x2="-20" y2="75"/>
<line x1="0" y1="0" x2="20" y2="-75"/>
</g>
<circle r="8" fill="#cfd8dc" stroke="#90a4ae" stroke-width="2"/>
</g>
<g id="frontWheel" transform="translate(540,420)">
<circle r="95" fill="none" stroke="#222" stroke-width="12"/>
<circle r="78" fill="none" stroke="#cdd3d6" stroke-width="5"/>
<g stroke="#9aa3a8" stroke-width="2">
<line x1="0" y1="0" x2="78" y2="0"/>
<line x1="0" y1="0" x2="-78" y2="0"/>
<line x1="0" y1="0" x2="0" y2="78"/>
<line x1="0" y1="0" x2="0" y2="-78"/>
<line x1="0" y1="0" x2="55" y2="55"/>
<line x1="0" y1="0" x2="-55" y2="-55"/>
<line x1="0" y1="0" x2="55" y2="-55"/>
<line x1="0" y1="0" x2="-55" y2="55"/>
<line x1="0" y1="0" x2="20" y2="75"/>
<line x1="0" y1="0" x2="-20" y2="-75"/>
<line x1="0" y1="0" x2="-20" y2="75"/>
<line x1="0" y1="0" x2="20" y2="-75"/>
</g>
<circle r="8" fill="#cfd8dc" stroke="#90a4ae" stroke-width="2"/>
</g>
<!-- Frame geometry -->
<!-- Key points: RH(260,420), FH(540,420), BB(360,420), S(410,300), H(560,320) -->
<g stroke="#2d4861" stroke-width="10">
<line x1="360" y1="420" x2="260" y2="420"/> <!-- chainstay -->
<line x1="410" y1="300" x2="260" y2="420"/> <!-- seatstay -->
<line x1="360" y1="420" x2="560" y2="320"/> <!-- down tube -->
<line x1="410" y1="300" x2="560" y2="320"/> <!-- top tube -->
<line x1="360" y1="420" x2="410" y2="300"/> <!-- seat tube -->
<line x1="560" y1="320" x2="540" y2="420"/> <!-- fork -->
</g>
<!-- Seat and post -->
<line x1="410" y1="300" x2="410" y2="315" stroke="#2d4861" stroke-width="10"/>
<path d="M392,288 q18,-10 36,0 q10,5 10,12 q0,8 -10,8 h-36 q-10,0 -10,-8 q0,-7 10,-12z" fill="#333"/>
<!-- Handlebar and stem -->
<line x1="560" y1="320" x2="555" y2="300" stroke="#2d4861" stroke-width="8"/>
<path d="M510,295 C535,285 585,285 615,295" fill="none" stroke="#333" stroke-width="10"/>
<circle cx="515" cy="295" r="7" fill="#111"/>
<circle cx="610" cy="295" r="7" fill="#111"/>
<!-- Drivetrain -->
<g>
<circle cx="360" cy="420" r="28" fill="#566" stroke="#233" stroke-width="4"/>
<circle cx="360" cy="420" r="18" fill="none" stroke="#9fb" stroke-dasharray="3 7" stroke-width="6" opacity="0.7"/>
<!-- crank arms -->
<line x1="360" y1="420" x2="412" y2="401" stroke="#233" stroke-width="8"/>
<line x1="360" y1="420" x2="308" y2="439" stroke="#455a64" stroke-width="6" opacity="0.8"/>
<!-- pedals -->
<rect x="405" y="394" width="20" height="14" rx="3" ry="3" fill="#444" transform="rotate(-20 415 401)"/>
<rect x="290" y="432" width="20" height="14" rx="3" ry="3" fill="#444" transform="rotate(160 300 439)"/>
<!-- rear cog -->
<circle cx="260" cy="420" r="10" fill="#566" stroke="#233" stroke-width="3"/>
<!-- chain -->
<path d="M388,420 C420,418 470,415 500,415 C525,415 545,417 560,420" fill="none" stroke="#222" stroke-width="3" opacity="0.08"/>
<path d="M388,420 L250,420" stroke="#222" stroke-width="6" stroke-linecap="round" opacity="0.7"/>
<path d="M332,420 L270,420" stroke="#222" stroke-width="6" stroke-linecap="round" opacity="0.7"/>
</g>
</g>
<!-- Cat -->
<g id="cat" stroke-linecap="round" stroke-linejoin="round">
<!-- Tail -->
<path d="M360,300 C330,280 325,245 350,235 C380,222 405,260 395,278" fill="none" stroke="#e07f2d" stroke-width="16"/>
<path d="M362,295 C340,280 336,255 354,247" fill="none" stroke="#f4a460" stroke-width="8" opacity="0.7"/>
<!-- Body -->
<ellipse cx="440" cy="292" rx="98" ry="62" fill="#f39c3a" stroke="#d1701e" stroke-width="3"/>
<ellipse cx="450" cy="308" rx="58" ry="34" fill="#ffd8a8" opacity="0.9"/>
<!-- Stripes -->
<g stroke="#d1701e" stroke-width="6" opacity="0.8">
<path d="M385,275 q20,-18 45,-10"/>
<path d="M380,298 q25,-15 55,-8"/>
<path d="M392,320 q22,-10 44,-4"/>
</g>
<!-- Head -->
<g>
<circle cx="500" cy="240" r="46" fill="#f39c3a" stroke="#d1701e" stroke-width="3"/>
<!-- Ears -->
<path d="M474,205 L490,228 L460,220 Z" fill="#f39c3a" stroke="#d1701e" stroke-width="3"/>
<path d="M526,205 L510,228 L540,220 Z" fill="#f39c3a" stroke="#d1701e" stroke-width="3"/>
<path d="M470,214 L488,228 L466,225 Z" fill="#ffbf93" opacity="0.7"/>
<path d="M530,214 L512,228 L534,225 Z" fill="#ffbf93" opacity="0.7"/>
<!-- Eyes -->
<ellipse cx="486" cy="242" rx="11" ry="14" fill="#fff"/>
<ellipse cx="514" cy="242" rx="11" ry="14" fill="#fff"/>
<circle cx="486" cy="246" r="5" fill="#2b2b2b"/>
<circle cx="514" cy="246" r="5" fill="#2b2b2b"/>
<circle cx="488" cy="244" r="2" fill="#fff" opacity="0.9"/>
<circle cx="516" cy="244" r="2" fill="#fff" opacity="0.9"/>
<!-- Nose and mouth -->
<polygon points="500,257 493,263 507,263" fill="#e27d75"/>
<path d="M493,266 q7,10 0,14" stroke="#5a3a2a" stroke-width="3" fill="none"/>
<path d="M507,266 q-7,10 0,14" stroke="#5a3a2a" stroke-width="3" fill="none"/>
<!-- Whiskers -->
<g stroke="#5a3a2a" stroke-width="2">
<line x1="470" y1="260" x2="490" y2="258"/>
<line x1="470" y1="268" x2="490" y2="266"/>
<line x1="470" y1="276" x2="490" y2="274"/>
<line x1="510" y1="258" x2="530" y2="260"/>
<line x1="510" y1="266" x2="530" y2="268"/>
<line x1="510" y1="274" x2="530" y2="276"/>
</g>
</g>
<!-- Arms reaching handlebar -->
<g fill="none" stroke="#f39c3a" stroke-width="16">
<path d="M470,285 C505,280 540,282 560,296"/>
<path d="M485,295 C525,292 575,288 610,296"/>
</g>
<!-- Paws on grips -->
<circle cx="515" cy="295" r="10" fill="#f39c3a" stroke="#d1701e" stroke-width="3"/>
<circle cx="610" cy="295" r="10" fill="#f39c3a" stroke="#d1701e" stroke-width="3"/>
<!-- Legs to pedals -->
<g fill="none" stroke="#f39c3a" stroke-width="18">
<path d="M425,335 C405,360 400,385 412,401"/> <!-- to front pedal -->
<path d="M430,335 C410,365 385,395 308,439" opacity="0.7"/> <!-- to back pedal -->
</g>
<!-- Feet over pedals -->
<ellipse cx="415" cy="401" rx="18" ry="10" fill="#f39c3a" stroke="#d1701e" stroke-width="3" transform="rotate(-20 415 401)"/>
<ellipse cx="300" cy="439" rx="18" ry="10" fill="#f39c3a" stroke="#d1701e" stroke-width="3" transform="rotate(160 300 439)"/>
</g>
<!-- Subtle motion accents -->
<g stroke="#7fb3d5" stroke-width="4" opacity="0.5">
<path d="M140,420 q-25,5 -50,0"/>
<path d="M720,420 q25,5 50,0"/>
</g>
</svg>style
“Draw an origami-style cat with geometric folds as an SVG.”
GPT-5 · style · attempt 1 · score 9.0
the actual svg, as the machine wrote it:
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 600 600" width="100%" height="100%">
<defs>
<style>
.edge { stroke:#6a6156; stroke-width:2; stroke-linejoin:round; stroke-linecap:round; }
.facet { stroke:#7b7266; stroke-width:1.2; stroke-linejoin:round; stroke-linecap:round; }
.fold { stroke:#8f8577; stroke-width:1.2; stroke-dasharray:6 5; fill:none; opacity:.9; }
</style>
<filter id="ds" x="-20%" y="-20%" width="140%" height="140%">
<feDropShadow dx="0" dy="4" stdDeviation="4" flood-color="#000000" flood-opacity="0.15"/>
</filter>
<filter id="blur">
<feGaussianBlur stdDeviation="3"/>
</filter>
</defs>
<!-- ground shadow -->
<ellipse cx="350" cy="540" rx="170" ry="20" fill="#000000" opacity="0.08" filter="url(#blur)"/>
<g filter="url(#ds)">
<!-- tail behind body -->
<polygon class="edge" fill="#d7cab5" points="460,430 220,330 240,360 430,460"/>
<!-- tail fold (placed before body so it's hidden under body where overlapping) -->
<path class="fold" d="M 240 345 L 435 450"/>
<!-- body base -->
<polygon class="edge" fill="#ede3d1" points="260,290 320,280 420,300 470,420 400,520 270,500 240,380"/>
<!-- side facet on body -->
<polygon class="facet" fill="#dacdb8" points="320,280 420,300 350,440 260,350"/>
<!-- hind leg facet -->
<polygon class="facet" fill="#c5b7a2" points="470,420 400,520 350,470"/>
<!-- belly highlight facet -->
<polygon class="facet" fill="#f3ead9" points="270,500 330,490 300,440"/>
<!-- front leg facet -->
<polygon class="facet" fill="#d1c3ad" points="240,380 270,500 300,420"/>
<!-- neck -->
<polygon class="facet" fill="#e2d6c2" points="270,250 330,250 320,280 260,290"/>
<!-- ears behind head -->
<polygon class="edge" fill="#d9ccb6" points="270,140 240,210 300,180"/>
<polygon class="edge" fill="#d9ccb6" points="330,140 300,180 360,210"/>
<!-- head -->
<polygon class="edge" fill="#efe5d3" points="240,210 300,180 360,210 330,250 270,250"/>
<!-- snout highlight -->
<polygon class="facet" fill="#f7efdf" points="300,180 320,220 280,220"/>
<!-- body fold lines -->
<path class="fold" d="M 420 300 L 270 500"/>
<path class="fold" d="M 260 290 L 240 380"/>
<!-- front leg subtle fold -->
<path class="fold" d="M 255 420 L 285 455"/>
<!-- hind leg subtle fold -->
<path class="fold" d="M 360 480 L 470 420"/>
<!-- head and ear folds -->
<path class="fold" d="M 300 160 L 300 245"/>
<path class="fold" d="M 270 140 L 240 210"/>
<path class="fold" d="M 330 140 L 360 210"/>
</g>
</svg>GPT-5 · style · attempt 2 · score 0.0
the actual svg, as the machine wrote it:
<svg xmlns="http://www.w3.org/2000/svg" width="800" height="600" viewBox="0 0 800 600">
<defs>
<linearGradient id="paperGrad" x1="25%" y1="15%" x2="80%" y2="90%">
<stop offset="0%" stop-color="#f3e8d6"/>
<stop offset="55%" stop-color="#e8d6bb"/>
<stop offset="100%" stop-color="#d4bea0"/>
</linearGradient>
<filter id="dropShadow" x="-20%" y="-20%" width="140%" height="140%">
<feOffset dx="0" dy="4" in="SourceAlpha" result="off"/>
<feGaussianBlur in="off" stdDeviation="6" result="blur"/>
<feColorMatrix in="blur" type="matrix" values="0 0 0 0 0.12 0 0 0 0 0.10 0 0 0 0 0.08 0 0 0 0.45 0" result="shadow"/>
<feMerge>
<feMergeNode in="shadow"/>
<feMergeNode in="SourceGraphic"/>
</feMerge>
</filter>
<filter id="groundBlur" x="-50%" y="-50%" width="200%" height="200%">
<feGaussianBlur stdDeviation="12"/>
</filter>
<clipPath id="catClip">
<path d="M515,510
L470,505
L430,495
L420,490
L405,460
L410,420
L430,380
L470,380
L560,340
L610,320
L470,260
L390,300
L440,270
L470,255
L495,210
L525,225
L560,220
L530,260
L480,280
L470,300
L455,330
L470,360
L490,400
L505,450 Z"/>
</clipPath>
<style>
.facet0{fill:#f3e8d6}
.facet1{fill:#ead8bd}
.facet2{fill:#d7bea0}
.facet3{fill:#c9b094}
.facet4{fill:#b89e81}
.base{fill:url(#paperGrad)}
.fold{fill:none; stroke:#6a5945; stroke-width:1.5; stroke-linecap:round; stroke-linejoin:round; opacity:.8}
.dash{stroke-dasharray:7 5; opacity:.65}
.lightfold{fill:none; stroke:#ffffff; stroke-width:1; stroke-dasharray:5 4; opacity:.55}
</style>
</defs>
<!-- Ground shadow -->
<ellipse cx="470" cy="525" rx="150" ry="20" fill="#000000" opacity="0.18" filter="url(#groundBlur)"/>
<g filter="url(#dropShadow)">
<!-- Silhouette base -->
<path class="base" d="M515,510
L470,505
L430,495
L420,490
L405,460
L410,420
L430,380
L470,380
L560,340
L610,320
L470,260
L390,300
L440,270
L470,255
L495,210
L525,225
L560,220
L530,260
L480,280
L470,300
L455,330
L470,360
L490,400
L505,450 Z"/>
<!-- Facets clipped to silhouette -->
<g clip-path="url(#catClip)">
<!-- Head facets -->
<polygon class="facet2" points="480,280 530,260 525,225"/>
<polygon class="facet3" points="480,280 525,225 495,210"/>
<polygon class="facet1" points="530,260 560,220 525,225"/>
<!-- Neck and shoulder -->
<polygon class="facet2" points="440,270 480,280 470,300"/>
<polygon class="facet4" points="440,270 470,260 480,280"/>
<!-- Back ridge -->
<polygon class="facet3" points="440,270 390,300 470,260"/>
<polygon class="facet2" points="390,300 430,380 470,260"/>
<!-- Tail planes -->
<polygon class="facet3" points="470,260 520,300 560,340"/>
<polygon class="facet4" points="520,300 560,340 470,380"/>
<polygon class="facet1" points="560,340 610,320 570,315"/>
<!-- Body center facets -->
<polygon class="facet0" points="470,300 470,360 430,380"/>
<polygon class="facet2" points="470,360 470,480 430,380"/>
<polygon class="facet3" points="470,480 515,510 470,360"/>
<polygon class="facet4" points="470,480 420,490 430,380"/>
<!-- Front leg facets -->
<polygon class="facet2" points="470,360 490,400 505,450"/>
<polygon class="facet1" points="470,360 505,450 515,510"/>
<!-- Chest highlight -->
<polygon class="facet0" points="470,300 455,330 480,320"/>
<!-- Subtle paper texture bands (semi-transparent overlays) -->
<rect x="360" y="200" width="280" height="360" fill="#ffffff" opacity="0.03"/>
<rect x="360" y="200" width="280" height="180" fill="#000000" opacity="0.025"/>
</g>
<!-- Crease lines -->
<g clip-path="url(#catClip)">
<!-- Head creases -->
<polyline class="fold" points="480,280 525,225 530,260 480,280"/>
<line class="fold dash" x1="525" y1="225" x2="495" y2="210"/>
<!-- Neck/back creases -->
<line class="fold" x1="440" y1="270" x2="470" y2="260"/>
<line class="fold dash" x1="440" y1="270" x2="480" y2="280"/>
<!-- Spine and body creases -->
<polyline class="fold" points="470,260 470,300 470,360 470,480"/>
<line class="fold dash" x1="390" y1="300" x2="430" y2="380"/>
<line class="fold" x1="470" y1="300" x2="430" y2="380"/>
<line class="fold dash" x1="470" y1="380" x2="560" y2="340"/>
<!-- Tail creases -->
<line class="fold" x1="520" y1="300" x2="560" y2="340"/>
<line class="fold dash" x1="560" y1="340" x2="610" y2="320"/>
<!-- Leg creases -->
<polyline class="fold" points="470,360 490,400 505,450 515,510"/>
<line class="lightfold" x1="470" y1="480" x2="420" y2="490"/>
<line class="lightfold" x1="470" y1="505" x2="430" y2="495"/>
<!-- Facial detail (nose fold) -->
<line class="lightfold" x1="530" y1="260" x2="560" y2="220"/>
</g>
</g>
</svg>GPT-5 · style · attempt 3 · score 8.0
the actual svg, as the machine wrote it:
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 800 600">
<defs>
<filter id="blur" x="-50%" y="-50%" width="200%" height="200%">
<feGaussianBlur stdDeviation="6"/>
</filter>
<style>
.crease { stroke: #6e3b1f; stroke-width: 2; stroke-linecap: round; stroke-dasharray: 6 5; opacity: 0.4; fill: none; }
</style>
</defs>
<!-- ground shadow -->
<ellipse cx="330" cy="545" rx="160" ry="18" fill="black" opacity="0.16" filter="url(#blur)"/>
<g id="origami-cat">
<!-- tail segments (folded ribbon) -->
<polygon points="430,360 445,372 535,312 520,300" fill="#f6b783"/>
<polygon points="445,372 460,384 550,324 535,312" fill="#e07b3f"/>
<polygon points="520,300 535,312 620,372 605,360" fill="#f6b783"/>
<polygon points="535,312 550,324 635,384 620,372" fill="#e07b3f"/>
<!-- tail tip -->
<polygon points="620,372 635,384 570,460" fill="#c55a22"/>
<polygon points="605,360 620,372 555,448" fill="#f3a261"/>
<!-- back body plane -->
<polygon points="220,390 350,310 430,360 380,520 240,520" fill="#e07b3f"/>
<!-- neck/shoulder plane -->
<polygon points="320,280 350,310 300,360 280,320" fill="#f6b783"/>
<!-- chest/front plane -->
<polygon points="350,310 430,360 340,420" fill="#f3a261"/>
<!-- belly/underside plane -->
<polygon points="340,420 380,520 240,520 300,360" fill="#f7c091"/>
<!-- head: ears -->
<!-- left ear outer -->
<polygon points="350,190 368,224 338,230" fill="#c55a22"/>
<!-- left ear inner fold -->
<polygon points="356,200 362,223 345,226" fill="#e07b3f"/>
<!-- right ear outer -->
<polygon points="420,200 403,232 437,238" fill="#c55a22"/>
<!-- right ear inner fold -->
<polygon points="414,204 408,229 431,234" fill="#e07b3f"/>
<!-- head top plane -->
<polygon points="350,190 420,200 380,270 320,280" fill="#f3a261"/>
<!-- face side plane -->
<polygon points="380,270 470,265 430,300 350,310" fill="#f6b783"/>
<!-- cheek plane -->
<polygon points="350,310 430,300 430,360" fill="#e07b3f"/>
<!-- snout underside -->
<polygon points="430,300 470,265 468,292" fill="#ffd2ab"/>
<!-- creases: tail folds -->
<line x1="445" y1="372" x2="535" y2="312" class="crease"/>
<line x1="535" y1="312" x2="620" y2="372" class="crease"/>
<!-- creases: body and neck -->
<line x1="330" y1="330" x2="260" y2="520" class="crease"/>
<line x1="350" y1="370" x2="300" y2="430" class="crease"/>
<line x1="320" y1="280" x2="300" y2="360" class="crease"/>
<!-- creases: head and face -->
<line x1="430" y1="300" x2="470" y2="265" class="crease"/>
<line x1="360" y1="226" x2="346" y2="226" class="crease"/>
<line x1="410" y1="228" x2="432" y2="234" class="crease"/>
<line x1="380" y1="270" x2="350" y2="310" class="crease"/>
</g>
</svg>GPT-5 · style · attempt 4 · score 8.3
the actual svg, as the machine wrote it:
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 800 600" width="100%" height="100%" role="img" aria-labelledby="title desc">
<title>Origami-style Cat</title>
<desc>Geometric folded paper cat composed of polygon facets with subtle fold lines, evoking an origami sculpture.</desc>
<defs>
<linearGradient id="bg" x1="0" y1="0" x2="0" y2="1">
<stop offset="0%" stop-color="#fbf9f6"/>
<stop offset="100%" stop-color="#f2eee8"/>
</linearGradient>
<radialGradient id="shadowGrad" cx="50%" cy="50%" r="50%">
<stop offset="0%" stop-color="rgba(0,0,0,0.25)"/>
<stop offset="100%" stop-color="rgba(0,0,0,0)"/>
</radialGradient>
</defs>
<!-- Background -->
<rect x="0" y="0" width="800" height="600" fill="url(#bg)"/>
<!-- Ground shadow -->
<ellipse cx="450" cy="470" rx="170" ry="24" fill="url(#shadowGrad)"/>
<!-- Tail (behind body) -->
<g id="tail">
<!-- Tail facets -->
<polygon points="540,370 585,335 620,280" fill="#d7c5b2"/>
<polygon points="540,370 620,280 600,300" fill="#c9b39e"/>
<!-- Tail tip fold highlight -->
<polygon points="620,280 608,288 612,276" fill="#eee2d6"/>
</g>
<!-- Body facets -->
<g id="body">
<!-- Triangulated body using center (460,360) -->
<polygon points="380,300 520,310 460,360" fill="#e3d4c4"/>
<polygon points="520,310 540,370 460,360" fill="#d7c5b2"/>
<polygon points="540,370 500,440 460,360" fill="#c9b39e"/>
<polygon points="500,440 420,455 460,360" fill="#b99f87"/>
<polygon points="420,455 370,440 460,360" fill="#c9b39e"/>
<polygon points="370,440 360,380 460,360" fill="#d7c5b2"/>
<polygon points="360,380 380,300 460,360" fill="#e3d4c4"/>
<!-- Front leg accent facet -->
<polygon points="370,440 385,395 395,440" fill="#b99f87"/>
</g>
<!-- Head facets -->
<g id="head">
<!-- Triangulated head using center (340,260) -->
<polygon points="300,220 360,230 340,260" fill="#eee2d6"/>
<polygon points="360,230 380,300 340,260" fill="#e3d4c4"/>
<polygon points="380,300 330,315 340,260" fill="#d7c5b2"/>
<polygon points="330,315 295,300 340,260" fill="#c9b39e"/>
<polygon points="295,300 300,220 340,260" fill="#e3d4c4"/>
</g>
<!-- Fold lines -->
<g id="fold-lines" stroke="#8b7762" stroke-linecap="round" stroke-dasharray="8 8" stroke-opacity="0.5" fill="none">
<!-- Head center to vertices -->
<line x1="340" y1="260" x2="300" y2="220"/>
<line x1="340" y1="260" x2="360" y2="230"/>
<line x1="340" y1="260" x2="380" y2="300"/>
<line x1="340" y1="260" x2="330" y2="315"/>
<line x1="340" y1="260" x2="295" y2="300"/>
<!-- Subtle ear ridge -->
<line x1="300" y1="220" x2="360" y2="230"/>
<!-- Body center to vertices -->
<line x1="460" y1="360" x2="380" y2="300"/>
<line x1="460" y1="360" x2="520" y2="310"/>
<line x1="460" y1="360" x2="540" y2="370"/>
<line x1="460" y1="360" x2="500" y2="440"/>
<line x1="460" y1="360" x2="420" y2="455"/>
<line x1="460" y1="360" x2="370" y2="440"/>
<line x1="460" y1="360" x2="360" y2="380"/>
<!-- Tail folds -->
<line x1="540" y1="370" x2="620" y2="280"/>
<line x1="540" y1="370" x2="585" y2="335"/>
</g>
<!-- Silhouette outlines -->
<g id="outlines" fill="none" stroke="#8b7762" stroke-width="2" stroke-linejoin="round">
<path d="M300,220 L360,230 L380,300 L330,315 L295,300 Z"/>
<path d="M380,300 L520,310 L540,370 L500,440 L420,455 L370,440 L360,380 Z"/>
<path d="M540,370 L585,335 L620,280 L600,300 Z"/>
</g>
</svg>constraint
“Draw a recognizable cat as an SVG using at most 12 SVG elements.”
GPT-5 · constraint · attempt 1 · score 8.0
the actual svg, as the machine wrote it:
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 200 200">
<path d="M150 120 Q182 125 186 146 Q192 172 160 184 Q136 192 120 174 Q146 178 163 168 Q178 160 172 145 Q166 130 150 128 Z" fill="#dcdcdc" stroke="#333" stroke-width="3" stroke-linejoin="round" stroke-linecap="round"/>
<path d="M100 35 L82 18 L72 45 Q62 55 58 75 Q50 110 70 140 Q78 152 93 165 Q100 170 107 165 Q122 154 133 142 Q155 115 150 90 Q147 75 138 62 L128 45 L118 18 Z" fill="#dcdcdc" stroke="#333" stroke-width="3" stroke-linejoin="round" stroke-linecap="round"/>
<path d="M82 22 L90 40 L74 40 Z M118 22 L126 40 L110 40 Z" fill="#f5b5c8"/>
<circle cx="90" cy="70" r="5" fill="#1a1a1a"/>
<circle cx="110" cy="70" r="5" fill="#1a1a1a"/>
<path d="M100 78 l4 6 h-8 Z M100 84 q-8 8 -16 0 M100 84 q8 8 16 0" fill="none" stroke="#333" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M86 84 l-26 -6 M86 88 l-28 0 M86 92 l-26 6 M114 84 l26 -6 M114 88 l28 0 M114 92 l26 6" fill="none" stroke="#333" stroke-width="2" stroke-linecap="round"/>
</svg>GPT-5 · constraint · attempt 2 · score 9.0
the actual svg, as the machine wrote it:
<svg xmlns="http://www.w3.org/2000/svg" width="220" height="220" viewBox="0 0 220 220">
<polygon points="70,95 95,35 110,95" fill="#f6b26b"/>
<polygon points="110,95 125,35 150,95" fill="#f6b26b"/>
<circle cx="110" cy="120" r="70" fill="#f6b26b"/>
<circle cx="85" cy="120" r="8" fill="#1e1e1e"/>
<circle cx="135" cy="120" r="8" fill="#1e1e1e"/>
<polygon points="110,135 100,150 120,150" fill="#ff8da1"/>
<path d="M110 150 Q100 165 90 155 M110 150 Q120 165 130 155
M88 147 L40 141 M88 154 L40 154 M88 161 L40 167
M132 147 L180 141 M132 154 L180 154 M132 161 L180 167"
fill="none" stroke="#333" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/>
</svg>GPT-5 · constraint · attempt 3 · score 8.3
the actual svg, as the machine wrote it:
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 220 220">
<path d="M160 180 C195 165 195 120 170 105 C155 95 140 105 152 120 C165 135 155 150 140 155" fill="none" stroke="#333" stroke-width="8" stroke-linecap="round" stroke-linejoin="round"/>
<ellipse cx="110" cy="155" rx="58" ry="62" fill="#d8d8d8" stroke="#333" stroke-width="3"/>
<polygon points="92,70 76,38 112,58" fill="#d8d8d8" stroke="#333" stroke-width="3"/>
<polygon points="128,70 144,38 108,58" fill="#d8d8d8" stroke="#333" stroke-width="3"/>
<circle cx="110" cy="92" r="36" fill="#d8d8d8" stroke="#333" stroke-width="3"/>
<circle cx="97" cy="92" r="5.5" fill="#111"/>
<circle cx="123" cy="92" r="5.5" fill="#111"/>
<polygon points="110,104 104,112 116,112" fill="#ff98a3" stroke="#333" stroke-width="1.5"/>
<path d="M110 112 v5 M110 117 C106 120 100 120 95 117 M110 117 C114 120 120 120 125 117 M98 108 L70 104 M98 112 L68 112 M98 116 L70 120 M122 108 L150 104 M122 112 L152 112 M122 116 L150 120" fill="none" stroke="#333" stroke-width="2" stroke-linecap="round"/>
</svg>GPT-5 · constraint · attempt 4 · score 9.0
the actual svg, as the machine wrote it:
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 200 200" width="200" height="200">
<path d="M85 40 L95 15 L105 40 L115 15 L125 40 C145 55 150 80 142 110 C160 110 178 128 154 140 C175 142 185 165 160 175 C138 182 124 162 122 148 C115 164 100 172 88 170 C60 166 46 146 48 118 C50 100 58 85 70 80 C60 65 70 50 85 40 Z" fill="#9aa3a8" stroke="#333" stroke-width="3" stroke-linejoin="round" stroke-linecap="round"/>
<circle cx="97" cy="68" r="5" fill="#111"/>
<circle cx="113" cy="68" r="5" fill="#111"/>
<polygon points="105,82 100,90 110,90" fill="#f39" stroke="#333" stroke-width="1" stroke-linejoin="round"/>
<path d="M105 88 L80 82 M105 90 L80 90 M105 92 L80 98 M105 88 L130 82 M105 90 L130 90 M105 92 L130 98 M105 92 Q103 96 101 98 M105 92 Q107 96 109 98" fill="none" stroke="#333" stroke-width="2" stroke-linecap="round"/>
<polygon points="95,20 100,38 88,38" fill="#f4b6c1"/>
<polygon points="115,20 122,38 108,38" fill="#f4b6c1"/>
</svg>animation
“Draw a cat whose tail sways continuously, as an SVG using SMIL or CSS animation only (no JavaScript).”
GPT-5 · animation · attempt 1 · score 8.8
the actual svg, as the machine wrote it:
<svg xmlns="http://www.w3.org/2000/svg" width="480" height="320" viewBox="0 0 480 320">
<defs>
<radialGradient id="fur" cx="40%" cy="35%" r="70%">
<stop offset="0%" stop-color="#d9d9d9"/>
<stop offset="70%" stop-color="#c8c8c8"/>
<stop offset="100%" stop-color="#b3b3b3"/>
</radialGradient>
<radialGradient id="headShade" cx="35%" cy="30%" r="70%">
<stop offset="0%" stop-color="#e2e2e2"/>
<stop offset="100%" stop-color="#c9c9c9"/>
</radialGradient>
</defs>
<!-- ground shadow -->
<ellipse cx="240" cy="255" rx="120" ry="18" fill="rgba(0,0,0,0.08)"/>
<!-- tail (behind body) -->
<g id="tail" stroke="#8b8b8b" fill="none" stroke-width="18" stroke-linecap="round" stroke-linejoin="round">
<!-- Tail root/hip pivot at 300,170 -->
<path d="M300,170 C350,160 380,190 395,220" />
<animateTransform attributeName="transform"
type="rotate"
values="-20 300 170; 20 300 170; -20 300 170"
keyTimes="0;0.5;1"
dur="3.2s"
repeatCount="indefinite"/>
</g>
<!-- body -->
<ellipse cx="280" cy="190" rx="98" ry="70" fill="url(#fur)" stroke="#7a7a7a" stroke-width="2"/>
<!-- back leg -->
<path d="M330,225 q30,10 5,22 q-25,12 -45,-2" fill="#c2c2c2" stroke="#7a7a7a" stroke-width="2" opacity="0.7"/>
<!-- chest / tummy highlight -->
<ellipse cx="250" cy="200" rx="50" ry="42" fill="rgba(255,255,255,0.35)"/>
<!-- head -->
<circle cx="190" cy="130" r="48" fill="url(#headShade)" stroke="#7a7a7a" stroke-width="2"/>
<!-- ears -->
<path d="M160,92 L178,52 L196,94 Z" fill="#c7c7c7" stroke="#7a7a7a" stroke-width="2"/>
<path d="M210,92 L228,54 L246,96 Z" fill="#c7c7c7" stroke="#7a7a7a" stroke-width="2"/>
<path d="M168,88 L178,66 L186,88 Z" fill="#e6e6e6" opacity="0.8"/>
<path d="M218,88 L228,68 L236,90 Z" fill="#e6e6e6" opacity="0.8"/>
<!-- eyes -->
<ellipse cx="175" cy="130" rx="9" ry="12" fill="#ffffff" stroke="#666" stroke-width="1.5"/>
<ellipse cx="205" cy="130" rx="9" ry="12" fill="#ffffff" stroke="#666" stroke-width="1.5"/>
<circle cx="175" cy="133" r="3.2" fill="#1a1a1a"/>
<circle cx="205" cy="133" r="3.2" fill="#1a1a1a"/>
<circle cx="177" cy="131" r="1.2" fill="#ffffff"/>
<circle cx="207" cy="131" r="1.2" fill="#ffffff"/>
<!-- nose -->
<path d="M190,144 l7,6 l-14,0 Z" fill="#e3918f" stroke="#7a7a7a" stroke-width="1"/>
<!-- mouth -->
<path d="M183,150 q7,10 0,14" fill="none" stroke="#7a7a7a" stroke-width="2" stroke-linecap="round"/>
<path d="M197,150 q-7,10 0,14" fill="none" stroke="#7a7a7a" stroke-width="2" stroke-linecap="round"/>
<!-- whiskers -->
<g stroke="#7a7a7a" stroke-width="2">
<line x1="150" y1="146" x2="118" y2="140"/>
<line x1="150" y1="152" x2="112" y2="152"/>
<line x1="150" y1="158" x2="118" y2="164"/>
<line x1="230" y1="146" x2="262" y2="140"/>
<line x1="230" y1="152" x2="268" y2="152"/>
<line x1="230" y1="158" x2="262" y2="164"/>
</g>
<!-- front paws -->
<ellipse cx="230" cy="244" rx="18" ry="12" fill="#cfcfcf" stroke="#7a7a7a" stroke-width="2"/>
<ellipse cx="260" cy="244" rx="18" ry="12" fill="#cfcfcf" stroke="#7a7a7a" stroke-width="2"/>
<!-- back paw (peeking) -->
<ellipse cx="322" cy="246" rx="16" ry="10" fill="#c2c2c2" stroke="#7a7a7a" stroke-width="2" opacity="0.9"/>
</svg>GPT-5 · animation · attempt 2 · score 9.0
the actual svg, as the machine wrote it:
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 400 400">
<defs>
<radialGradient id="bellyGrad" cx="50%" cy="45%" r="70%">
<stop offset="0%" stop-color="#f7e2c7"/>
<stop offset="100%" stop-color="#f0d4b3"/>
</radialGradient>
</defs>
<!-- Ground shadow -->
<ellipse cx="200" cy="345" rx="115" ry="20" fill="#000" fill-opacity="0.08"/>
<!-- Tail (behind body) -->
<g id="tail" transform="rotate(0 280 250)">
<!-- main tail -->
<path d="M280 250
C348 226 344 170 330 148
S306 112 320 100"
fill="none"
stroke="#e3b780"
stroke-width="22"
stroke-linecap="round"
stroke-linejoin="round"/>
<!-- darker tail tip -->
<circle cx="320" cy="100" r="11" fill="#c7966b"/>
<animateTransform attributeName="transform"
type="rotate"
values="22 280 250; -18 280 250; 22 280 250"
keyTimes="0; 0.5; 1"
calcMode="spline"
keySplines="0.45 0 0.55 1; 0.45 0 0.55 1"
dur="4s"
repeatCount="indefinite"/>
</g>
<!-- Body -->
<ellipse cx="200" cy="245" rx="85" ry="115" fill="#f0c893" stroke="#c08a61" stroke-width="2"/>
<!-- Belly patch -->
<ellipse cx="200" cy="265" rx="46" ry="66" fill="url(#bellyGrad)" opacity="0.95"/>
<!-- Back paw (left, partially behind) -->
<ellipse cx="150" cy="330" rx="26" ry="14" fill="#f0c893" stroke="#c08a61" stroke-width="2" opacity="0.95"/>
<!-- Front paws -->
<g>
<ellipse cx="172" cy="332" rx="22" ry="12" fill="#f0c893" stroke="#c08a61" stroke-width="2"/>
<ellipse cx="228" cy="332" rx="22" ry="12" fill="#f0c893" stroke="#c08a61" stroke-width="2"/>
</g>
<!-- Head and features -->
<g>
<!-- Ears (behind head) -->
<polygon points="165,108 188,58 208,108" fill="#e2b27a" stroke="#c08a61" stroke-width="2"/>
<polygon points="235,108 212,58 192,108" fill="#e2b27a" stroke="#c08a61" stroke-width="2"/>
<!-- Inner ears -->
<polygon points="177,106 189,76 200,106" fill="#f2b7bd" opacity="0.9"/>
<polygon points="223,106 211,76 200,106" fill="#f2b7bd" opacity="0.9"/>
<!-- Head -->
<circle cx="200" cy="130" r="52" fill="#f0c893" stroke="#c08a61" stroke-width="2"/>
<!-- Eyes -->
<g>
<circle cx="184" cy="125" r="7.2" fill="#222"/>
<circle cx="216" cy="125" r="7.2" fill="#222"/>
<circle cx="182.5" cy="123.5" r="2" fill="#fff" opacity="0.9"/>
<circle cx="214.5" cy="123.5" r="2" fill="#fff" opacity="0.9"/>
</g>
<!-- Nose -->
<polygon points="195,149 205,149 200,155" fill="#e78f96"/>
<!-- Mouth -->
<path d="M200 156 q -6 7 -14 0 M200 156 q 6 7 14 0" fill="none" stroke="#8a5a3a" stroke-width="2" stroke-linecap="round"/>
<!-- Whiskers -->
<g stroke="#8a5a3a" stroke-width="2" stroke-linecap="round" opacity="0.9">
<line x1="172" y1="150" x2="138" y2="146"/>
<line x1="172" y1="156" x2="136" y2="156"/>
<line x1="172" y1="162" x2="138" y2="166"/>
<line x1="228" y1="150" x2="262" y2="146"/>
<line x1="228" y1="156" x2="264" y2="156"/>
<line x1="228" y1="162" x2="262" y2="166"/>
</g>
</g>
<!-- Chest fluff -->
<path d="M176 188
q 6 10 12 0
q 6 10 12 0
q 6 10 12 0"
fill="none" stroke="#e9d3b8" stroke-width="3" stroke-linecap="round" opacity="0.7"/>
<!-- Subtle stripes on tail base blending into body (overlay to smooth junction) -->
<path d="M279 247 q 10 -6 20 0" fill="none" stroke="#d6ab84" stroke-width="8" stroke-linecap="round" opacity="0.45"/>
</svg>GPT-5 · animation · attempt 3 · score 8.8
the actual svg, as the machine wrote it:
<svg xmlns="http://www.w3.org/2000/svg" width="512" height="512" viewBox="0 0 400 300">
<defs>
<linearGradient id="bg" x1="0" y1="0" x2="0" y2="1">
<stop offset="0%" stop-color="#f7fbff"/>
<stop offset="100%" stop-color="#eaf4ff"/>
</linearGradient>
</defs>
<rect width="100%" height="100%" fill="url(#bg)"/>
<!-- ground shadow -->
<ellipse cx="210" cy="260" rx="120" ry="18" fill="#000" opacity="0.08"/>
<!-- TAIL (behind the body) -->
<g id="tail">
<!-- outline -->
<path d="M330 190
C 388 140 388 70 338 80
C 300 88 322 138 356 150"
fill="none" stroke="#6b3f26" stroke-width="28" stroke-linecap="round" stroke-linejoin="round"/>
<!-- fur -->
<path d="M330 190
C 388 140 388 70 338 80
C 300 88 322 138 356 150"
fill="none" stroke="#f5c37a" stroke-width="22" stroke-linecap="round" stroke-linejoin="round"/>
<!-- subtle stripes -->
<path d="M360 110 q12 -12 28 -6" fill="none" stroke="#e2a95e" stroke-width="7" stroke-linecap="round" opacity="0.8"/>
<path d="M350 132 q10 -10 24 -5" fill="none" stroke="#e2a95e" stroke-width="7" stroke-linecap="round" opacity="0.8"/>
<animateTransform attributeName="transform" type="rotate"
values="-18 330 190; 16 330 190; -18 330 190"
keyTimes="0;0.5;1"
calcMode="spline"
keySplines="0.42 0 0.58 1;0.42 0 0.58 1"
dur="3.8s" repeatCount="indefinite"/>
</g>
<!-- BODY -->
<ellipse cx="220" cy="190" rx="120" ry="80" fill="#f5c37a" stroke="#6b3f26" stroke-width="4"/>
<!-- belly patch -->
<ellipse cx="215" cy="205" rx="65" ry="45" fill="#f8ddb4" opacity="0.9"/>
<!-- back stripes -->
<path d="M240 145 q35 -18 70 -6" fill="none" stroke="#e2a95e" stroke-width="8" stroke-linecap="round" opacity="0.9"/>
<path d="M230 165 q40 -16 78 -4" fill="none" stroke="#e2a95e" stroke-width="8" stroke-linecap="round" opacity="0.9"/>
<!-- hind paw -->
<ellipse cx="285" cy="245" rx="30" ry="18" fill="#f5c37a" stroke="#6b3f26" stroke-width="3"/>
<!-- front paws -->
<ellipse cx="175" cy="248" rx="20" ry="14" fill="#f5c37a" stroke="#6b3f26" stroke-width="3"/>
<ellipse cx="205" cy="248" rx="20" ry="14" fill="#f5c37a" stroke="#6b3f26" stroke-width="3"/>
<!-- HEAD -->
<circle cx="150" cy="120" r="55" fill="#f5c37a" stroke="#6b3f26" stroke-width="4"/>
<!-- ears -->
<polygon points="105,98 134,56 154,100" fill="#f5c37a" stroke="#6b3f26" stroke-width="4" stroke-linejoin="round"/>
<polygon points="162,100 187,56 210,95" fill="#f5c37a" stroke="#6b3f26" stroke-width="4" stroke-linejoin="round"/>
<!-- inner ears -->
<polygon points="118,98 134,70 147,98" fill="#f7c8b8" opacity="0.9"/>
<polygon points="171,98 187,70 200,95" fill="#f7c8b8" opacity="0.9"/>
<!-- face -->
<ellipse cx="133" cy="125" rx="8" ry="12" fill="#2f2f2f"/>
<ellipse cx="167" cy="125" rx="8" ry="12" fill="#2f2f2f"/>
<circle cx="136" cy="121" r="2.2" fill="#fff" opacity="0.8"/>
<circle cx="170" cy="121" r="2.2" fill="#fff" opacity="0.8"/>
<polygon points="150,135 143,145 157,145" fill="#ef8fa1"/>
<path d="M143 150 q7 6 14 0" fill="none" stroke="#6b3f26" stroke-width="3" stroke-linecap="round"/>
<path d="M150 150 q-8 10 -18 8" fill="none" stroke="#6b3f26" stroke-width="3" stroke-linecap="round"/>
<path d="M150 150 q8 10 18 8" fill="none" stroke="#6b3f26" stroke-width="3" stroke-linecap="round"/>
<!-- whiskers -->
<path d="M112 144 h-32" stroke="#6b3f26" stroke-width="2.5" stroke-linecap="round" fill="none"/>
<path d="M115 150 h-36" stroke="#6b3f26" stroke-width="2.5" stroke-linecap="round" fill="none"/>
<path d="M188 144 h32" stroke="#6b3f26" stroke-width="2.5" stroke-linecap="round" fill="none"/>
<path d="M185 150 h36" stroke="#6b3f26" stroke-width="2.5" stroke-linecap="round" fill="none"/>
<!-- neck fluff -->
<path d="M180 150 q-12 22 -42 24" fill="none" stroke="#e2a95e" stroke-width="6" stroke-linecap="round" opacity="0.7"/>
<!-- little connection patch to hide tail joint -->
<circle cx="330" cy="190" r="12" fill="#f5c37a" opacity="0.95"/>
</svg>GPT-5 · animation · attempt 4 · score 9.0
the actual svg, as the machine wrote it:
<svg xmlns="http://www.w3.org/2000/svg" width="420" height="320" viewBox="0 0 420 320">
<defs>
<radialGradient id="shadow" cx="50%" cy="50%" r="60%">
<stop offset="0%" stop-color="rgba(0,0,0,0.25)"/>
<stop offset="100%" stop-color="rgba(0,0,0,0)"/>
</radialGradient>
</defs>
<!-- Ground shadow -->
<ellipse cx="220" cy="260" rx="110" ry="28" fill="rgba(0,0,0,0.12)"/>
<!-- Tail (behind body) -->
<g id="tail">
<!-- Main tail -->
<path d="M305 160 Q 360 125 350 170 Q 340 220 320 210"
fill="none" stroke="#d9a66c" stroke-width="20"
stroke-linecap="round" stroke-linejoin="round"/>
<!-- Tail stripes -->
<path d="M305 160 Q 360 125 350 170 Q 340 220 320 210"
fill="none" stroke="#8b6a3e" stroke-width="7"
stroke-linecap="round" stroke-linejoin="round"
stroke-dasharray="16 18" stroke-dashoffset="8" opacity="0.9"/>
<animateTransform attributeName="transform" type="rotate"
values="-18 305 160; 18 305 160; -18 305 160"
dur="2.6s" repeatCount="indefinite"/>
</g>
<!-- Body -->
<ellipse cx="220" cy="170" rx="105" ry="68" fill="#d9a66c" stroke="#8b6a3e" stroke-width="3"/>
<!-- Belly -->
<ellipse cx="220" cy="185" rx="64" ry="38" fill="#efd6b0" opacity="0.9"/>
<!-- Legs/Paws -->
<g fill="#d9a66c" stroke="#8b6a3e" stroke-width="3">
<ellipse cx="170" cy="230" rx="18" ry="12"/>
<ellipse cx="200" cy="235" rx="20" ry="12"/>
<ellipse cx="240" cy="235" rx="20" ry="12"/>
<ellipse cx="270" cy="230" rx="18" ry="12"/>
</g>
<!-- Head -->
<circle cx="150" cy="120" r="38" fill="#d9a66c" stroke="#8b6a3e" stroke-width="3"/>
<!-- Ears -->
<g stroke="#8b6a3e" stroke-width="3">
<polygon points="122,78 140,97 105,98" fill="#d9a66c"/>
<polygon points="178,78 195,98 160,97" fill="#d9a66c"/>
<!-- Inner ears -->
<polygon points="125,86 139,98 112,98" fill="#efb3b3" stroke="none"/>
<polygon points="175,86 188,98 161,98" fill="#efb3b3" stroke="none"/>
</g>
<!-- Face details -->
<!-- Eyes -->
<g>
<ellipse cx="138" cy="118" rx="10" ry="12" fill="#76c76a" stroke="#3a5d2a" stroke-width="2"/>
<ellipse cx="162" cy="118" rx="10" ry="12" fill="#76c76a" stroke="#3a5d2a" stroke-width="2"/>
<rect x="135" y="109" width="6" height="18" rx="3" fill="#1d1d1d"/>
<rect x="159" y="109" width="6" height="18" rx="3" fill="#1d1d1d"/>
<!-- Eye highlights -->
<circle cx="142" cy="113" r="2" fill="#fff"/>
<circle cx="166" cy="113" r="2" fill="#fff"/>
</g>
<!-- Nose -->
<polygon points="150,130 145,138 155,138" fill="#e58ea0" stroke="#8b6a3e" stroke-width="2"/>
<!-- Mouth -->
<path d="M145 140 q5 6 10 0" fill="none" stroke="#8b6a3e" stroke-width="2" stroke-linecap="round"/>
<path d="M145 140 q-8 10 -18 8" fill="none" stroke="#8b6a3e" stroke-width="2" stroke-linecap="round"/>
<path d="M155 140 q8 10 18 8" fill="none" stroke="#8b6a3e" stroke-width="2" stroke-linecap="round"/>
<!-- Whiskers -->
<g stroke="#8b6a3e" stroke-width="2" stroke-linecap="round">
<line x1="120" y1="136" x2="88" y2="132"/>
<line x1="120" y1="142" x2="88" y2="146"/>
<line x1="180" y1="136" x2="212" y2="132"/>
<line x1="180" y1="142" x2="212" y2="146"/>
</g>
<!-- Back stripes -->
<g stroke="#8b6a3e" stroke-width="4" stroke-linecap="round" opacity="0.7">
<path d="M190 145 q15 -15 35 -8"/>
<path d="M200 160 q18 -14 42 -6"/>
<path d="M210 175 q20 -10 45 -3"/>
</g>
</svg>