Can ChatGPT or Claude draw SVG?
Yes. Ask any decent model for an SVG and it will write you one — a <path>, a
couple of <circle> elements, some d="M 12 4 C …" that renders to something
roughly like what you asked for.
That is not the interesting part. The interesting part is what happens next.
Because what you have now is a blob of markup. If the circle is four pixels too far left, your options are: open the SVG in a text editor and hand-edit coordinates, or go back to the model and ask again and hope. Neither of those is editing. The first is arithmetic and the second is gambling.
This is the real limit, and it isn’t about the model’s competence. A model writing raw SVG has no canvas, no selection, no undo, no layers, no groups, no snapping and no idea what is already on the page. It is composing coordinates blind, in one shot, into a text file. Ask it to nudge one shape and it must rewrite the document and hope it doesn’t disturb anything else. Ask it to align three things and it must do the arithmetic itself, correctly, without seeing the result.
What we do instead
justdraw.fyi gives the model the editor.
An agent here doesn’t write markup. It sends the same JSON commands the editor’s
own buttons send — element.draw, group.create, arrange.align — and the
editor executes them, the way it would if you had clicked. There is exactly one
implementation of what “align these three shapes” means, and the toolbar, the
keyboard, the jd command line and the model are all customers of it.
So the model doesn’t compute alignment. It asks for alignment, and the thing that already knows how to align — the vector editor — does it.
What comes back is a document. Layers, groups, paths, shapes, each with an id. Every one of them selectable, movable, recolourable, deletable, undoable. If the circle is four pixels too far left, you drag it four pixels right, because there is a circle to drag.
The other thing this fixes
An agent writing raw SVG works in the dark. An agent here can read what it has
drawn back (element.list returns every shape with its bounding box), can
export the drawing to check it (doc.export), and can watch a human move things
around while it works, because it is a participant in the same live document
rather than a text generator handing over a file.
And because it shares your undo history, its mistakes are yours to undo.
When raw SVG is the right answer
If you want a one-off icon, a favicon, a shape to paste into code — ask a model for SVG. It will be faster than anything here, and you don’t need an editor for a thing you’re never going to edit.
Reach for this when the drawing is going to change: a diagram you’ll iterate on, a logo you’ll refine, a layout you’ll rearrange. That’s when the difference between markup and a document starts to matter, and it matters immediately.
Try it
Make a drawing, then paste its URL into a chat with
any capable model and tell it to draw something. It will fetch
/p/<uuid>.md — a briefing generated from that live project — and start
sending commands. No key, no account, no setup.
The full protocol is on the agent protocol page.