Why AI-generated graphics scale so badly (and what to do about it)
ChatGPT, Midjourney and Ideogram draw pixels, not shapes. Here is what that does to a logo the moment you enlarge it, and how to get a real vector out of it.
You asked an image generator for a logo, it gave you something good, and then the printer asked for it at 40 cm wide. Enlarged, the crisp mark from the chat window turns into soft, slightly wobbly edges and mushy corners. Nothing went wrong on your side. This is what raster output from a diffusion model is.
A generator paints pixels, it has no idea what a shape is
Every image model you can use today produces a bitmap: a grid of coloured squares, typically 1024 or 1536 pixels on a side. There is no circle in that file, only pixels that happen to look like a circle. Enlarge it and the software has to invent the missing pixels, so edges blur. Print it and the printer sees the same blur at 300 dpi.
That would be true of any PNG. AI output has three extra problems on top.
1. The edges wave
Diffusion models build the picture from noise in steps, and strokes that should be perfectly straight or perfectly circular come out with a slow, gentle waviness of one or two pixels. At the size you see it in the chat window it is invisible. Scaled to a banner, or traced by a converter that follows every pixel faithfully, the waviness becomes visible as a hand-drawn quality the design never intended.
2. Stroke weight drifts
A letter that should have a constant stroke will be a little thicker at the top than at the bottom. Again invisible at 300 px, obvious at 3000. A vector made by tracing keeps that drift, because the tracer has no concept of 'this stroke was meant to be uniform'.
3. Colours are almost flat
A flat red in the design is not one red in the file: it is a cloud of hundreds of nearly identical reds with slight noise. Naive converters posterise this into two or three bands, and you get a logo with visible steps where there should be one colour. Or they keep every shade and you get a thousand tiny shapes.
Upscaling does not fix it
AI upscalers make a bigger bitmap. They sharpen edges and sometimes invent detail, but the result is still pixels: the next enlargement blurs again, and the waviness is now baked in at higher resolution. For anything that has to be printed, cut or embroidered, you need shapes, which means a vector file.
What a vector conversion has to do
- Decide what is a flat colour and what is a gradient, and write one fill per shape instead of bands of shades.
- Locate each edge to a fraction of a pixel and represent it as a smooth curve, with corners kept sharp.
- Recognise that the waviness is noise from the generator, not design, and fair the curves while keeping the actual shape.
- Give neighbouring colours a single shared boundary, so there are no hairline gaps or overlaps when the file is cut or printed.
This is what svgize was built for. It measures the degradation of the source, rebuilds a logo from fills and shared edges, and fairs the strokes where the source wobbles. The waviness goes; the design stays.
Try it with your ChatGPT or Midjourney image
Practical tips before you convert
- Ask the generator for the logo on a plain white or transparent background, flat colours, no shadows or 3D effects.
- Export at the largest size it offers; 1500-2000 px gives the engine the most to work with.
- Use PNG, not JPG, if you can choose. JPEG compression adds its own ringing around edges.
- After converting, open the SVG in Figma, Illustrator or Inkscape and check the corners at 400 %: that is where the difference between tracing and reconstruction shows.