Quick Design for developers and AI
Quick Design’s design format: make designs with AI or code
A Quick Design design is a small piece of JSON: a size, and pages of elements (text, shapes, lines, icons, emoji, photo frames and drawings) placed in pixels. Anyone can write one by hand, in code or with an AI assistant, and open it in Quick Design by putting it in a link after #j= or pasting it into Settings › Import a design. It opens as an editable design, free and with no account, ready to change and download as PNG, JPG or PDF. Assistants that support MCP, such as Claude, can use Quick Design’s free MCP server to make the link themselves.
A first design
This is a whole poster: a preset size, a gradient background, a soft circle, three pieces of text, an emoji and a line. Positions and sizes are pixels from the top left of the page, and elements later in the list sit on top.
{
"v": 1, "name": "Bake Sale", "size": "poster",
"pages": [
{
"bg": {"g": ["#fff4e6", "#ffd8a8"], "a": 180},
"els": [
{"t": "shape", "sh": "circle", "x": 1150, "y": -250, "w": 900, "h": 900, "fill": "#ff922b", "o": 0.25},
{"t": "text", "txt": "CHARITY", "x": 150, "y": 300, "w": 1500, "fs": 70, "ff": "Montserrat", "fw": 900, "c": "#d9480f", "ls": 30},
{"t": "text", "txt": "Bake Sale", "x": 150, "y": 420, "w": 1500, "fs": 300, "ff": "Pacifico", "c": "#5c2d0b", "ef": "lift", "efc": "#d9480f", "an": "rise"},
{"t": "emoji", "e": "🧁", "x": 700, "y": 1000, "w": 400, "h": 400, "an": "pop"},
{"t": "text", "txt": "Saturday 10 April · 10am – 2pm\nSt Mary’s Hall, Willow Road", "x": 150, "y": 1550, "w": 1500, "fs": 80, "ff": "Inter", "fw": 700, "c": "#5c2d0b", "lh": 1.4},
{"t": "line", "x": 750, "y": 1830, "w": 300, "h": 20, "c": "#d9480f", "sw": 8},
{"t": "text", "txt": "Every penny goes to the Elm Park Animal Rescue", "x": 150, "y": 1920, "w": 1500, "fs": 56, "ff": "Inter", "c": "#7a4a24"}
]
}
]
}
Open this poster in Quick Design: it opens as “A design was shared with you”, and Use this template makes it your own design to edit.
Opening a design
- In a link. Put the JSON, URL-encoded, after
https://www.yuzool.com/quick-design/#j=. In JavaScript:'https://www.yuzool.com/quick-design/#j=' + encodeURIComponent(JSON.stringify(design)). The part after#never reaches a server, so the design stays between you and the person you send it to. Base64url-encoded JSON works after#j=too. - By pasting. In Quick Design open Settings › Import a design and paste the JSON or a link.
- Back out again. Share › Copy as design JSON gives you any design in this format, to keep, change in code or hand to an assistant. Share’s template link (
#d=) is the same JSON compressed.
img) arrives empty with a placeholder, and the person drops their own photo in.Making designs with an AI assistant
Any assistant that can write JSON can make a Quick Design design. Give it this page’s address and say what you want, for example:
Read https://www.yuzool.com/quick-design/design-format/ and write a Quick Design
design for an Instagram post announcing our book club's first meeting: Thursday
3 December, 7pm, at the Corner Café. Warm colours, a big serif headline, a book icon.
Give me the #j= link.
Open the link it gives you, or paste its JSON into Settings › Import a design. Then change anything by hand, or copy the design JSON back to the assistant and ask for changes. The machine-readable version of this page is the JSON Schema at /quick-design/design-format.schema.json, and every template and list is in /quick-design/templates.json.
The MCP server
Quick Design has a free remote MCP server at https://www.yuzool.com/mcp/quick-design (Streamable HTTP, no key, no account, nothing stored). An assistant that supports MCP can use it to list the templates, fill one in, or check a design it wrote, and it gets back a link to give you.
- Claude: Settings › Connectors › Add custom connector, name it Quick Design and give the URL
https://www.yuzool.com/mcp/quick-design. Then ask Claude for a poster, a post or a slide. - Other MCP clients: add a remote (HTTP) server with the same URL.
| Tool | What it does |
|---|---|
list_templates | The templates (name, category, size, pages, whether they need Quick Design Pro), the editable text fields of the free ones, and the fonts, icons, shapes, frames and sizes a design can use. Optional category and query. |
fill_template | A free template with new text: template (its name) and replacements, each a field id such as p1e3 (page 1, element 3) or the template’s exact original text, mapped to the new text. Returns a link. |
create_design | Checks a design in this format and returns a link, with a list of anything it had to change. |
The design and its pages
| Field | Value | What it does |
|---|---|---|
v | 1 | The format version (optional). |
name | text | The design’s name in Quick Design. |
w, h | pixels, 16–8000 | The page size. Every page of a design is the same size. |
size | ig carousel story poster flyer yt slides card a4 logo | A preset instead of w and h: Instagram post 1080 × 1080, Carousel post 1080 × 1350, Instagram story 1080 × 1920, Poster 1800 × 2400, Flyer 1275 × 1650, YouTube thumbnail 1280 × 720, Presentation 1920 × 1080, Business card 1050 × 600, A4 document 1240 × 1754, Logo 500 × 500. |
pages | list, 1–30 | The pages, in order. |
| Field | Value | What it does |
|---|---|---|
bg | colour or gradient | The background. A colour is any CSS colour (#ff6b35, rgb(255,107,53), hsl(16,100%,60%), white); a gradient is {"g": ["#ff9a9e", "#fad0c4"], "a": 135}, two colours and an angle like CSS’s (0 bottom to top, 90 left to right, 180 top to bottom). |
tr | fade slide zoom none | How Present moves to this page. |
els | list, up to 200 | The elements, drawn in order: later ones on top. |
Elements
Every element has a type t and a box: x and y for its top left corner, w and h for its size, all in pixels. These work on any element:
| Field | Value | What it does |
|---|---|---|
r | degrees | Rotation, clockwise, round the box’s centre. |
o | 0–1 | Opacity. |
an | rise fade pop slide wipe spin type | Entrance animation in Present and animated downloads (type is the typewriter, for text). |
fx, fy | true | Flip horizontally or vertically. |
lk, hid | true | Locked, hidden. |
g | short id | Group: elements with the same g move together. |
Text
| Field | Value | What it does |
|---|---|---|
txt | text | The words. \n starts a new line; long lines wrap inside w. h is worked out from the text. |
fs | pixels | Font size. |
ff | a font | One of the fonts below. fw is the weight (the nearest the font has is used), fi: true italic. |
c | colour or gradient | Text colour. |
al | left center right | Alignment (centre if left out). |
ls, lh | numbers | Letter spacing in hundredths of the font size; line height as a multiple of it (1.15 if left out). |
up | true | All capitals. |
cv | degrees | Curves one line of text into an arc, as on a badge (negative curves the other way). |
ef | none shadow lift hollow outline splice echo glitch neon | Text effect, in the colour efc, with strength efi 0–100 (50 normal). |
hl | colour | A highlighter band behind each line. |
st | {"w": 4, "c": "#000"} | An outline round the letters. |
Shapes, lines, icons and emoji
| Field | Value | What it does |
|---|---|---|
sh | a shape | For shape: one of the shapes below. fill is its colour or gradient, rad the corner radius, sw2 a ring’s thickness, st an outline ("d": true dashed). |
sh2 | {"c": "rgba(0,0,0,.25)", "b": 20, "x": 0, "y": 8} | A drop shadow on shapes, icons, emoji and photos: colour, blur and offset. |
c, sw | colour, pixels | For line: a line across the box’s width (rotate it with r), dash 0 solid, 1 dashed, 2 dotted, and cap none arrow dot. |
ic | an icon | For icon: one of the icons below, in colour c, with stroke width sw on its 24-unit grid (2 normal) and fillI: true to fill it. |
e | an emoji | For emoji: one emoji, sized by the smaller of w and h. |
Photo frames and drawings
| Field | Value | What it does |
|---|---|---|
mask | a frame | For img: the frame’s shape, one of the frames below. It arrives empty for the person’s photo; src can name one of Quick Design’s own sample photos, "ph-<id>" (ph-cat, ph-mic, ph-house, ph-house2, ph-lounge, ph-knits, ph-tram, ph-garden, ph-rail, ph-jetty, ph-lake, ph-maths, ph-laptop, ph-coffee, ph-dog, ph-beach, ph-vase, ph-vase2, ph-chair, ph-armchair, ph-towers, ph-rocket, ph-headshot). |
crop, flt, adj | settings | crop {"z": 1.2, "x": 0.5, "y": 0.4} zooms and moves the photo in its frame; flt a filter (none mono noir warm cool vivid fade retro dusk bloom); adj brightness b, contrast c, saturation s and warmth w, −100 to 100. |
pts | numbers | For draw: a freehand stroke as x, y pairs from 0 to 1 across the box, in colour c with pen width sw (hi: true for a see-through highlighter). |
Fonts, icons and shapes
Fonts (with their weights): Inter 400/700/900, Poppins 400/600/800, Montserrat 400/700/900, Playfair Display 400/700/900, Bebas Neue 400, Anton 400, Pacifico 400, Lobster 400, Dancing Script 400/700, Abril Fatface 400, Oswald 400/700, Raleway 400/800, Lora 400/700, DM Serif Display 400, Space Grotesk 400/700, Archivo Black 400, Righteous 400, Caveat 400/700, Shrikhand 400, Syne 400/800, Fraunces 400/900, Bricolage Grotesque 400/800, Josefin Sans 400/700, Permanent Marker 400, Great Vibes 400, Cormorant Garamond 400/700, Rubik 400/800, Bungee 400, Unbounded 400/800, Libre Baskerville 400/700.
Icons (119): heart star check x plus minus arrow-right arrow-left arrow-up arrow-down chevron circle square triangle home user users mail phone camera music sun moon cloud rain bolt leaf flower tree coffee cake gift bell calendar clock pin globe search sliders lock key cart bag tag dollar chart trend pie trophy crown flag bookmark book pen brush scissors wifi battery play pause mic headphones video image smile thumbs chat send link share download upload trash eye fire drop snow anchor plane car bike rocket diamond sparkle award target paw pizza apple wine building briefcase graduation bulb code quote infinity compass map mountain wave palette dumbbell pulse shield info alert question grid menu at hash percent gem ticket film gamepad dna feather.
Shapes: rect rounded circle tri rtri diamond pent hex oct star burst heart arrow pill blob arch plus bubble ring halfcircle. Photo frames: rect rounded circle arch blob heart star hex diamond pill tri burst.
What Quick Design changes when it opens a design
- Anything it doesn’t know is left out or replaced. Unknown fields are dropped, an unknown font becomes Inter, an unknown shape or frame a rectangle, and an element of an unknown type or with an unknown icon is left out. You’re told how many parts were changed (the browser’s console lists them, and the MCP server returns them as warnings).
- Numbers are kept in range. Pages 16 to 8000 pixels, at most 30 pages, 200 elements a page and 2000 in all, text up to 2000 characters.
- Colours must be colours. Anything that isn’t a CSS colour or a two-colour gradient is replaced, and nothing in a design can carry a web address or HTML.
Questions
Can ChatGPT or Claude make a design in Quick Design?
Yes. Ask the assistant to write a design in Quick Design’s format (point it at this page) and paste what it writes into Settings › Import a design, or open it as a #j= link. Assistants that support MCP connectors, such as Claude, can add Quick Design’s MCP server and hand you a finished link.
Does the MCP server cost anything or need an account?
No. It’s free, needs no key or account, and stores nothing. It only checks the design and returns a link; the design opens in your own browser.
Are photos included in design links?
No. Links never carry photos, so photo frames arrive empty, ready for your own. Quick Design’s own sample photos can be used, with "src": "ph-<id>" (the ids are listed under Elements).
What happens to things Quick Design doesn’t know?
They’re left out or replaced: an unknown font becomes Inter, an unknown shape a rectangle, an unknown icon is dropped, numbers are kept in range. You’re told how many parts were changed.
Can I get the JSON of a design I made?
Yes: Share › Copy as design JSON. Paste it to an assistant to change it, then paste its answer back with Settings › Import a design.