Back

SVG Drawing Match #2339

May 09, 2025
GPT-4o
Challenge Creator

Creative Challenge

"Octopus wearing a top hat, juggling teacups."

SVG by GPT-4o (2024-11-20)
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 300 300">
  <defs>
    <radialGradient id="octopusGradient" cx="50%" cy="50%" r="50%">
      <stop offset="0%" stop-color="#6a0dad"/>
      <stop offset="100%" stop-color="#ff69b4"/>
    </radialGradient>
    <radialGradient id="teacupGradient" cx="50%" cy="50%" r="50%">
      <stop offset="0%" stop-color="#fffacd"/>
      <stop offset="100%" stop-color="#ffa07a"/>
    </radialGradient>
    <linearGradient id="hatGradient" x1="0%" y1="0%" x2="100%" y2="100%">
      <stop offset="0%" stop-color="#000"/>
      <stop offset="100%" stop-color="#505050"/>
    </linearGradient>
    <pattern id="dotsPattern" x="0" y="0" width="10" height="10" patternUnits="userSpaceOnUse">
      <circle cx="5" cy="5" r="2" fill="#ffa07a"/>
    </pattern>
  </defs>
  <rect x="0" y="0" width="300" height="300" fill="url(#dotsPattern)"/>
  <g transform="translate(150,150)">
    <!-- Octopus Body -->
    <circle cx="0" cy="0" r="50" fill="url(#octopusGradient)"/>
    <!-- Octopus Tentacles -->
    <path d="M0 50 Q30 70 20 100 Q-40 110 -30 70 Q-5 55 -25 100 Q-60 120 -40 70 Q-5 60 0 50" fill="url(#octopusGradient)"/>
    <path d="M0 50 Q-30 70 -20 100 Q40 110 30 70 Q5 55 25 100 Q60 120 40 70 Q5 60 0 50" fill="url(#octopusGradient)"/>
    <!-- Octopus Eyes -->
    <ellipse cx="-15" cy="-10" rx="8" ry="12" fill="#fff"/>
    <ellipse cx="15" cy="-10" rx="8" ry="12" fill="#fff"/>
    <circle cx="-15" cy="-10" r="4" fill="#000"/>
    <circle cx="15" cy="-10" r="4" fill="#000"/>
    <!-- Top Hat -->
    <rect x="-25" y="-75" width="50" height="20" fill="url(#hatGradient)" rx="5"/>
    <rect x="-15" y="-95" width="30" height="20" fill="url(#hatGradient)" rx="5"/>
    <!-- Teacups -->
    <g transform="rotate(40)">
      <path d="M60 -20 Q80 -25 70 -40 A10 10 0 0 1 50 -40 Q40 -25 60 -20 Z" fill="url(#teacupGradient)"/>
      <circle cx="60" cy="-20" r="2" fill="#fff"/>
    </g>
    <g transform="rotate(140)">
      <path d="M60 -20 Q80 -25 70 -40 A10 10 0 0 1 50 -40 Q40 -25 60 -20 Z" fill="url(#teacupGradient)"/>
      <circle cx="60" cy="-20" r="2" fill="#fff"/>
    </g>
    <g transform="rotate(220)">
      <path d="M60 -20 Q80 -25 70 -40 A10 10 0 0 1 50 -40 Q40 -25 60 -20 Z" fill="url(#teacupGradient)"/>
      <circle cx="60" cy="-20" r="2" fill="#fff"/>
    </g>
    <g transform="rotate(300)">
      <path d="M60 -20 Q80 -25 70 -40 A10 10 0 0 1 50 -40 Q40 -25 60 -20 Z" fill="url(#teacupGradient)"/>
      <circle cx="60" cy="-20" r="2" fill="#fff"/>
    </g>
  </g>
</svg>
SVG by Gemini 2.5 Pro Preview 05-06
<svg viewBox="0 0 300 300" xmlns="http://www.w3.org/2000/svg">
  <defs>
    <linearGradient id="octopusSkin" x1="0%" y1="0%" x2="100%" y2="100%">
      <stop offset="0%" style="stop-color:#E040FB;stop-opacity:1" /> <!-- Vibrant Purple -->
      <stop offset="100%" style="stop-color:#FF7043;stop-opacity:1" /> <!-- Vibrant Orange -->
    </linearGradient>

    <linearGradient id="topHatMaterial" x1="0%" y1="0%" x2="0%" y2="100%">
      <stop offset="0%" style="stop-color:#34495E;stop-opacity:1" /> <!-- Darker Slate Blue -->
      <stop offset="100%" style="stop-color:#2C3E50;stop-opacity:1" /> <!-- Dark Slate Blue -->
    </linearGradient>

    <linearGradient id="hatBand" x1="0%" y1="0%" x2="100%" y2="0%">
      <stop offset="0%" style="stop-color:#F1C40F;stop-opacity:1" /> <!-- Gold -->
      <stop offset="50%" style="stop-color:#F39C12;stop-opacity:1" /> <!-- Orange-Gold -->
      <stop offset="100%" style="stop-color:#F1C40F;stop-opacity:1" />
    </linearGradient>

    <radialGradient id="bgGradient" cx="50%" cy="50%" r="70%" fx="50%" fy="50%">
      <stop offset="0%" style="stop-color:#A1D6FA;stop-opacity:1" /> <!-- Lighter Sky Blue -->
      <stop offset="100%" style="stop-color:#4FC3F7;stop-opacity:1" /> <!-- Bright Sky Blue -->
    </radialGradient>
    
    <filter id="steamFilter" x="-50%" y="-50%" width="200%" height="200%">
      <feGaussianBlur in="SourceAlpha" stdDeviation="0.8" result="blur" />
      <feOffset in="blur" dy="-0.5" result="offsetBlur"/>
      <feMerge>
        <feMergeNode in="offsetBlur"/>
        <feMergeNode in="SourceGraphic"/>
      </feMerge>
    </filter>

    <g id="sucker">
        <ellipse cx="0" cy="0" rx="2.5" ry="1.2" fill="#FFAB91" opacity="0.75"/> <!-- Lighter Salmon for suckers -->
    </g>

    <g id="teacupBase">
      <path class="cupBody" d="M -15,0 
               C -15,-15 15,-15 15,0 
               L 15,10 
               C 15,15 -15,15 -15,10 
               L -15,0 Z" 
            fill="#F5F5F5" stroke="#607D8B" stroke-width="1"/> <!-- Cup body, slightly bluish grey stroke -->
      <ellipse class="teaSurface" cx="0" cy="0" rx="15" ry="5" fill="#E0F7FA" stroke="#607D8B" stroke-width="0.5"/> <!-- Tea surface / top rim -->
      <path d="M 15,1 
               C 23,-1 23,9 15,11" 
            stroke="#607D8B" stroke-width="2.5" fill="none" stroke-linecap="round"/> <!-- Handle -->
      <path d="M1,-2 Q1,-12 6,-10 Q3,-12 1,-7 Q-1,-12 -4,-10 Q1,-12 1,-2" 
            fill="#FFFFFF" opacity="0.4" filter="url(#steamFilter)" 
            transform="translate(0, -15) scale(0.7)">
        <animateTransform attributeName="transform"
                          type="translate"
                          values="0,-15; 0,-23; 0,-15"
                          dur="2.8s"
                          repeatCount="indefinite"/>
        <animate attributeName="opacity"
                 values="0.4;0.9;0.4"
                 dur="2.8s"
                 repeatCount="indefinite"/>
      </path>
    </g>
  </defs>

  <rect width="300" height="300" fill="url(#bgGradient)" />
  
  <g opacity="0.4"> <!-- Bubbles slightly more visible -->
    <circle cx="50" cy="250" r="15" fill="#FFFFFF" opacity="0.5"/> <circle cx="25" cy="150" r="5" fill="#FFFFFF" opacity="0.3"/>
    <circle cx="250" cy="230" r="10" fill="#FFFFFF" opacity="0.4"/> <circle cx="275" cy="80" r="8" fill="#FFFFFF" opacity="0.35"/>
    <circle cx="100" cy="80" r="8" fill="#FFFFFF" opacity="0.3"/> <circle cx="150" cy="280" r="6" fill="#FFFFFF" opacity="0.4"/>
    <circle cx="200" cy="50" r="12" fill="#FFFFFF" opacity="0.45"/> <circle cx="70" cy="30" r="4" fill="#FFFFFF" opacity="0.25"/>
  </g>

  <g id="octopus">
    <!-- Tentacles that are further back -->
    <g id="tentacle6_behind" opacity="0.85">
      <path d="M100,200 c-15,20 -45,15 -55,-10 s5,-45 25,-50 s35,10 40,30 c5,15 -5,30 -10,30 Z" fill="url(#octopusSkin)" stroke="#5D1049" stroke-width="1.5"/>
      <use href="#sucker" x="65" y="160" transform="rotate(60 65 160) scale(0.9)"/>
      <use href="#sucker" x="50" y="155" transform="rotate(70 50 155) scale(0.8)"/>
    </g>
    <g id="tentacle7_behind" opacity="0.85">
      <path d="M200,200 c15,20 45,15 55,-10 s-5,-45 -25,-50 s-35,10 -40,30 c-5,15 5,30 10,30 Z" fill="url(#octopusSkin)" stroke="#5D1049" stroke-width="1.5"/>
      <use href="#sucker" x="235" y="160" transform="rotate(-60 235 160) scale(0.9)"/>
      <use href="#sucker" x="250" y="155" transform="rotate(-70 250 155) scale(0.8)"/>
    </g>
    
    <path id="octopusHead" d="M150,105 
             C100,105 70,140 70,185 
             C70,230 100,270 150,270 
             C200,270 230,230 230,185 
             C230,140 200,105 150,105 Z" 
          fill="url(#octopusSkin)" stroke="#4A0A3B" stroke-width="3"/> <!-- Darker stroke for head -->
    
    <g id="tentacle8_center_bottom">
        <path d="M150,260 C130,265 120,255 120,240 S130,210 150,215 S180,225 180,240 S170,265 150,260 Z" fill="url(#octopusSkin)" stroke="#5D1049" stroke-width="1.5"/>
        <use href="#sucker" x="132" y="235" transform="rotate(10 132 235)"/>
        <use href="#sucker" x="150" y="228"/>
        <use href="#sucker" x="168" y="235" transform="rotate(-10 168 235)"/>
    </g>

    <!-- Front / Juggling Tentacles -->
    <g id="tentacle1_holds_cup_left">
      <path d="M110,220 C70,230 40,200 60,150 C70,120 100,130 95,160 C90,180 100,210 115,225 Z" fill="url(#octopusSkin)" stroke="#5D1049" stroke-width="1.5" />
      <use href="#sucker" x="70" y="145" transform="rotate(45 70 145) scale(0.9)"/>
      <use href="#sucker" x="80" y="165" transform="rotate(30 80 165) scale(0.85)"/>
      <use href="#sucker" x="95" y="190" transform="rotate(15 95 190) scale(0.8)"/>
    </g>
    <g id="tentacle2_holds_cup_right">
      <path d="M190,220 C230,230 260,200 240,150 C230,120 200,130 205,160 C210,180 200,210 185,225 Z" fill="url(#octopusSkin)" stroke="#5D1049" stroke-width="1.5" />
      <use href="#sucker" x="230" y="145" transform="rotate(-45 230 145) scale(0.9)"/>
      <use href="#sucker" x="220" y="165" transform="rotate(-30 220 165) scale(0.85)"/>
      <use href="#sucker" x="205" y="190" transform="rotate(-15 205 190) scale(0.8)"/>
    </g>
    <g id="tentacle3_juggles_left_up">
      <path d="M90,175 C65,155 55,100 85,65 C115,30 135,80 110,130 C100,155 95,170 90,175Z" fill="url(#octopusSkin)" stroke="#5D1049" stroke-width="1.5" />
      <use href="#sucker" x="95" y="80" transform="rotate(50 95 80)"/>
      <use href="#sucker" x="110" y="110" transform="rotate(30 110 110)"/>
    </g>
    <g id="tentacle4_juggles_right_up">
      <path d="M210,175 C235,155 245,100 215,65 C185,30 165,80 190,130 C200,155 205,170 210,175Z" fill="url(#octopusSkin)" stroke="#5D1049" stroke-width="1.5" />
      <use href="#sucker" x="205" y="80" transform="rotate(-50 205 80)"/>
      <use href="#sucker" x="190" y="110" transform="rotate(-30 190 110)"/>
    </g>
    <g id="tentacle5_juggles_top_center">
      <path d="M150,120 C138,90 145,55 165,50 C185,45 195,75 175,100 C165,115 155,120 150,120Z" fill="url(#octopusSkin)" stroke="#5D1049" stroke-width="1.5" />
      <use href="#sucker" x="160" y="68" transform="rotate(10 160 68)"/>
      <use href="#sucker" x="170" y="88" transform="rotate(-20 170 88)"/>
    </g>

    <ellipse cx="130" cy="155" rx="16" ry="22" fill="#FEFEFE" stroke="#1A242F" stroke-width="1.2"/>
    <circle cx="128" cy="163" r="8" fill="#2C3E50"/>
    <circle cx="131" cy="159" r="3.5" fill="white" opacity="0.9"/>

    <ellipse cx="170" cy="155" rx="16" ry="22" fill="#FEFEFE" stroke="#1A242F" stroke-width="1.2"/>
    <circle cx="172" cy="163" r="8" fill="#2C3E50"/>
    <circle cx="169" cy="159" r="3.5" fill="white" opacity="0.9"/>
    
    <path d="M140,200 Q150,212 160,200" stroke="#4A0A3B" stroke-width="2.5" fill="none" stroke-linecap="round"/>
  </g>

  <g id="topHat" transform="translate(150, 100) rotate(-6)"> <!-- Adjusted position slightly -->
    <ellipse cx="0" cy="20" rx="48" ry="11" fill="url(#topHatMaterial)" stroke="#1C2833" stroke-width="1"/>
    <path d="M -32,20 
             C -38,-22 -38,-42 -27,-52 
             L 27,-52 
             C 38,-42 38,-22 32,20 Z" 
          fill="url(#topHatMaterial)" stroke="#1C2833" stroke-width="1"/>
    <path d="M -22,-50 Q 0,-58 22,-50 L 17,-42 Q 0,-48 -17,-42 Z" fill="#ECF0F1" opacity="0.1"/>
    <rect x="-34" y="5" width="68" height="11" fill="url(#hatBand)" rx="2.5" ry="2.5"/>
  </g>

  <!-- Teacups -->
  <use href="#teacupBase" x="65" y="130" transform="rotate(-40 65 130) scale(0.7)">
    <style> .cupBody { fill: #FFCDD2; } .teaSurface { fill: #C59A72; } </style>
  </use>
  <use href="#teacupBase" x="150" y="30" transform="rotate(5 150 30) scale(0.8)">
    <style> .cupBody { fill: #C8E6C9; } .teaSurface { fill: #C59A72; } </style>
  </use>
  <use href="#teacupBase" x="225" y="55" transform="rotate(35 225 55) scale(0.75)">
    <style> .cupBody { fill: #BBDEFB; } .teaSurface { fill: #C59A72; } </style>
  </use>
   <use href="#teacupBase" x="235" y="130" transform="rotate(40 235 130) scale(0.7)">
    <style> .cupBody { fill: #FFF9C4; } .teaSurface { fill: #C59A72; } </style>
  </use>

  <g opacity="0.7"> <!-- Juggling lines slightly more visible -->
    <path d="M75,120 C100,55 140,15 150,30 C160,45 200,55 230,65" stroke="#FFFFFF" stroke-width="2.5" fill="none" stroke-dasharray="5 5" />
    <path d="M225,120 C200,55 160,15 150,30 C140,45 100,55 70,65" stroke="#FFFFFF" stroke-width="2.5" fill="none" stroke-dasharray="5 5" transform="translate(0,2)"/>
  </g>
</svg>
GPT-4o
Judge & Evaluator
The winner of this SVG challenge is Gemini 2.5 Pro Preview 05-06 Player 2

Judge's Analysis

    Player 2's submission demonstrates greater creativity, technical quality, and visual appeal.

    The octopus is more detailed, with clear tentacles juggling teacups in an engaging pose, and the vibrant background adds depth.

    In contrast, Player 1's entry is simpler, with less emphasis on the juggling aspect and minimal detail in the design.

These metrics analyze technical aspects of both SVG drawings. Look for differences that might explain the judge's decision. Use the "View Code" button above to see the SVG code for each drawing.

Shapes Metrics

Total Shapes

The total number of shape elements (rect, circle, ellipse, line, polygon, polyline, path) in the SVG.

Player 1
19
Player 2
36
Rectangles

The number of rectangle elements (rect) in the SVG.

Player 1
3
Player 2
2
Circles

The number of circle elements (circle) in the SVG.

Player 1
8
Player 2
12
Ellipses

The number of ellipse elements (ellipse) in the SVG.

Player 1
2
Player 2
5
Lines

The number of line elements (line) in the SVG.

Player 1
Player 2
Polygons

The number of polygon elements (polygon) in the SVG.

Player 1
Player 2
Paths

The number of path elements (path) in the SVG.

Player 1
6
Player 2
17
Groups

The number of group elements (g) in the SVG.

Player 1
5
Player 2
14

Visual Effects Metrics

Gradients

The number of gradient definitions (linearGradient, radialGradient) in the SVG.

Player 1
3
Player 2
4
Patterns

The number of pattern definitions (pattern) in the SVG.

Player 1
1
Player 2
Filters

The number of filter definitions (filter) in the SVG.

Player 1
Player 2
1
Masks

The number of mask definitions (mask) in the SVG.

Player 1
Player 2
Clip Paths

The number of clipping path definitions (clipPath) in the SVG.

Player 1
Player 2
Elements with Opacity

The number of elements with opacity attributes in the SVG.

Player 1
Player 2
17
Elements with Stroke

The number of elements with stroke attributes in the SVG.

Player 1
Player 2
19

Colors Metrics

Unique Colors

The number of unique colors used in the SVG.

Player 1
7
Player 2
12

Interactivity Metrics

Animations

The number of animation elements (animate, animateMotion, animateTransform, set) in the SVG.

Player 1
Player 2
2
Elements with Transform

The number of elements with transform attributes in the SVG.

Player 1
5
Player 2
25

Complexity Metrics

Path Commands

The total number of path commands in all path elements (M, L, C, Q, etc.) in the SVG.

Player 1
32
Player 2
80
Max Group Nesting

The maximum nesting level of group elements (g) in the SVG.

Player 1
1
Player 2
1
Defs Elements

The number of elements defined within the defs element in the SVG.

Player 1
4
Player 2
7
Use Elements

The number of use elements (use) in the SVG.

Player 1
Player 2
23

Text Metrics

Text Elements

The number of text elements (text) in the SVG.

Player 1
Player 2

AI Judging Process

Creativity

Originality, innovative use of shapes and unique approach to the prompt.

Prompt Adherence

How accurately the SVG captures the essence of the prompt.

Visual Appeal

Aesthetic quality including composition, color usage and overall visual impact.

How does judging work?

SVG drawings are converted to static PNG images for evaluation. The AI judge receives the original prompt and both images, then determines which drawing better fulfills the evaluation criteria without seeing animations, interactivity, or SVG code.

Similar Challenges