Job ticket 417263 · consumer · two-drum press · no subscription
Canva Free gives you ~20 AI uses and a 3-color brand kit. Here are the three prompts that do the job for nothing.
This page is a press bed. You feed it a brief, a free-tier inference model returns a print spec as strict JSON, and your own browser draws a real 1080px poster you can export as PNG or SVG. No Canva account, no upload, no meter owned by us, no watermark on the export. The prompts are printed at the bottom of this page so you can keep them even if this site disappears.
Canva is a trademark of Canva Pty Ltd. This is an independent, unaffiliated comparison built on Canva's own published pricing page, linked below. We are not Canva, and nothing here is endorsed by them.
Press bed — proofs are drawn in this browser
Stock & sizes
Sample data below is illustrative, not a claim about Canva. Every Canva figure on this page comes from the linked pricing page.
The prompt pack
Three prompts, each mapped one-to-one onto a Canva feature you are currently rationed on. Run them from this page with a free key, or copy them into any free chat model — the text is identical either way, and it is printed in full at the bottom of this section so it survives this site.
Loading the pack from tools.json… If this fails, the full prompt text is still readable below.
What Canva's own pricing page says
Read from canva.com/pricing on 2026-09-17. Fields we could not read are marked unconfirmed rather than filled in with a plausible number.
| The job | Canva Free | Canva Pro | This page + a free-tier model |
|---|---|---|---|
| Price | US$0 | US$144/year for one person monthly figure not printed on the page we read → check |
US$0 forever. A free-tier key costs nothing; the prompt is yours. |
| AI-generated layouts | Up to 20 Standard or Premium AI uses on a shared allowance; no Ultra AI | 10× more AI than Free | Unmetered by us. Your ally's free allowance is the only ceiling — Groq's published base is 1,000 requests/day, OpenRouter's free variants 50/day. |
| Brand colors | 1 Brand Kit, 3 colors | 5 Brand Kits | Any colors you type. Saved in your browser, as many kits as you like. |
| Resize one design to other formats | Not on Free | Magic Resize included | Prompt 03 re-imposes the same spec onto any of four canvases. |
| Template library | 1.6M+ templates | 3.6M+ including premium | None. Five layouts, generated per brief. This is the honest trade — see below. |
| Stock assets | 4.7M+ photos, video, audio | 141M+ premium assets | None included. Type, ink and geometry only — no licensed imagery. |
| Export | PNG, JPG, PDF | Adds print-ready / CMYK | PNG at true pixel size and editable SVG, drawn locally, no watermark. |
| Who sees your brief | Canva | Canva | Only the inference provider you choose — or nobody at all in Copy-Paste Relay. |
What this replaces, and what it does not
A displacement claim you cannot substantiate is a lie with good typography. This is the whole scope, including the parts where Canva wins.
Replaced: brief → finished graphic
Prompt 01 turns one paragraph into a composed poster. Substantiated by the renderer on this page, which draws any schema-valid spec.
Replaced: Magic Resize
Prompt 03 re-imposes a spec onto 1080×1080, 1080×1350, 1200×630 or 1080×1920 without redrawing it by hand.
Replaced: Magic Write for social copy
Prompt 02 returns four headlines with their character counts and the clichés it refused to write.
Not replaced: 1.6M templates
Five layouts is not a template library. If you need a wedding invitation in 40 variants, Canva is still the right tool.
Not replaced: stock assets
No photos, video or audio. Riso posters are type and ink; if your brand needs imagery, this is not it.
Not replaced: team brand governance
No shared kits, approvals, folders or permissions. Those need a backend and an org chart, and this site has neither.
The prompts, in full, as text
Copy these into any model. They are the product; the page around them is convenience. Each block is the exact system prompt the interactive runner sends, plus the user-message template.
Prompt 01 — 1. Layout director · riso-layout-director v1.0.0 · best ally: Google Gemini API — Free usage tier · gemini-2.5-flash-lite
Replaces: Canva's template picker + Magic Design: turning a one-line brief into a finished, on-brand graphic layout.
Why this model: The output is a render spec, not prose. Strict-JSON mode on Gemini removes the parse-repair loop entirely; a lite model is enough because the schema, not the reasoning, carries the quality. Fallback ally: Groq Cloud — free tier.
System prompt (1922 chars):
You are a risograph print-shop art director. You compose social graphics as machine-readable print instructions, never as prose.
Return ONLY one JSON object that matches this schema exactly. No markdown fences, no commentary before or after.
{
"format": "square-1080" | "portrait-1350" | "landscape-630" | "story-1920",
"layout": "editorial-stack" | "split-diagonal" | "corner-bracket" | "band-top" | "grid-2x2",
"ink": { "paper": "#rrggbb", "ink1": "#rrggbb", "ink2": "#rrggbb", "accent": "#rrggbb" },
"kicker": string (max 6 words) or null,
"headline": { "text": string (max 8 words), "case": "upper" | "lower" | "title", "weight": 700 | 900, "scale": number 0.8 to 1.4 },
"subhead": { "text": string (max 22 words) },
"cta": { "text": string (max 5 words) } or null,
"stat": { "value": string (max 12 chars), "label": string (max 8 words) } or null,
"motif": "halftone-dots" | "registration-marks" | "ink-swatch-bars" | "ruled-grid" | "overprint-blot",
"type_notes": string (max 30 words),
"alt_text": string (max 125 chars)
}
Hard rules:
1. Two-ink riso palette. "paper" is never #ffffff and never black. "ink1" and "ink2" must differ by at least 60 degrees of hue. "accent" must contrast against "paper" at 4.5:1 or better because headline text is set in it.
2. If brand colors are supplied, use them for ink1/accent and pick paper and ink2 around them. Never return a palette that is only greys.
3. The headline must be a claim, not a label. Banned openings: "Introducing", "Tips for", "How to", "Unlock", "Discover". No exclamation marks anywhere.
4. Never invent a number. If the brief contains no figure, "stat" is null. If it does, "stat.value" must be copied from the brief.
5. Respect every max length. Truncating with an ellipsis is a failure, not a workaround.
6. Write all copy in the language of the brief.
7. "alt_text" describes both what the graphic looks like and what it says.
User message template:
Variables:
{{brief}}— What is the post about? (max 600 chars) sample data shipped with the tool{{platform}}— Platform [Instagram feed | LinkedIn | X / Twitter | Threads | Pinterest | Newsletter header] sample data shipped with the tool{{audience}}— Who is it for? (max 120 chars) sample data shipped with the tool{{brand_colors}}— Brand colors (optional) (max 60 chars) sample data shipped with the tool{{tone}}— Tone (max 80 chars) sample data shipped with the tool{{format}}— Format (optional) [square-1080 | portrait-1350 | landscape-630 | story-1920]
Output schema (the answer must match this exactly):
Decoding: temperature 0.95 · max 1200 output tokens · responseMimeType application/json · budget ~700 in / ~450 out per run · cost per run: 1 request. On Groq's published base limits that is 1/1000th of the daily allowance; on OpenRouter's free variants it is 1/50th.
Prompt 02 — 2. Headline press run · headline-press-run v1.0.0 · best ally: Groq Cloud — free tier · openai/gpt-oss-120b
Replaces: Canva's Magic Write for social copy — the paid-side text generation the free allowance runs out on after ~20 uses.
Why this model: Headline work is iterative and latency-sensitive; you want ten attempts in the time one Canva AI use would take. Groq's 30 RPM base limit makes that free. Fallback ally: Google Gemini API — Free usage tier.
System prompt (1017 chars):
You are a headline writer at a risograph print shop. You write short, factual, un-hyped lines for social graphics.
Return ONLY one JSON object. No markdown fences, no commentary.
{
"variants": [
{ "text": string, "chars": integer, "angle": "number" | "contrarian" | "how-it-works" | "confession", "risk": string (max 15 words) }
],
"recommended": integer (0-based index into variants),
"rejected_cliches": [ string ]
}
Hard rules:
1. Exactly 4 variants. Each max 60 characters including spaces. "chars" must be the true character count of "text".
2. At most one variant may contain a number, and only if the brief contains that exact number. Never invent a figure.
3. Banned: emoji, exclamation marks, "game-changer", "unlock", "secrets", "you won't believe", colon-then-listicle ("X: 5 ways to Y").
4. List in "rejected_cliches" the three most obvious generic headlines a marketing tool would have produced for this brief, so the writer can see what was avoided.
5. Write in the language of the brief.
User message template:
Variables:
{{brief}}— Brief (max 600 chars) inherits riso-layout-director:brief{{platform}}— Platform [Instagram feed | LinkedIn | X / Twitter | Threads | Pinterest | Newsletter header] inherits riso-layout-director:platform{{current_headline}}— Current headline (optional) (max 120 chars)
Output schema (the answer must match this exactly):
Decoding: temperature 1 · max 700 output tokens · responseMimeType application/json · budget ~350 in / ~300 out per run · cost per run: 1 request per press run.
Prompt 03 — 3. Reflow to another size · magic-reflow v1.0.0 · best ally: Google Gemini API — Free usage tier · gemini-2.5-flash-lite
Replaces: Canva Pro's Magic Resize — a paid-only feature. One spec in, the same graphic re-composed for a different canvas out.
Why this model: It must preserve a JSON spec while changing only what the aspect ratio forces. Structured-output models drift less on that task than chat-tuned ones. Fallback ally: Copy-Paste Relay.
System prompt (1059 chars):
You are the same risograph art director, now re-imposing an existing print spec onto a different canvas. You receive a JSON spec and a target format. Return ONLY the re-imposed JSON spec, same schema, no markdown fences, no commentary. Hard rules: 1. Copy "ink", "motif", "stat" and the wording of "headline"/"subhead"/"cta" unchanged unless the target canvas cannot physically hold them. 2. If the text will not fit the new canvas, shorten it by cutting whole words, never mid-word, and never by adding an ellipsis. Report every shortening in "changes". 3. "layout" must change if the aspect ratio changed orientation (square to story, landscape to square). "headline.scale" must be adjusted so the headline still occupies 40-70% of the canvas width. 4. "format" must equal the target format. 5. "changes" lists what you altered and why, max 6 items, each max 20 words. If nothing changed, return an empty array. 6. Keep "alt_text" accurate for the new composition. Schema of the returned object: the input schema plus one extra key "changes": [ string ].
User message template:
Variables:
{{target_format}}— Reflow to [square-1080 | portrait-1350 | landscape-630 | story-1920] sample data shipped with the tool{{spec_json}}— Current spec auto-filled from riso-layout-director:last_output sample data shipped with the tool
Output schema (the answer must match this exactly):
Decoding: temperature 0.4 · max 1200 output tokens · responseMimeType application/json · budget ~900 in / ~500 out per run · cost per run: 1 request per size. Reflowing one graphic into four formats costs 4 requests — still under Groq's published 1,000 RPD base limit.
Questions worth asking before you cancel
Is this actually free, or is there a subscription hiding?
There is no subscription and, right now, no paid tier at all. The whole tool is unmetered. A one-time unlock is planned for batch exports and saved brand kits, but no price is shown anywhere on this site until a real Stripe Payment Link exists and its price is read back from Stripe's API rather than typed by hand.
Do you need an API key?
No. Copy-Paste Relay works with any free chat model you already use: copy the prompt block, paste it in, paste the JSON answer back. A key only removes the copy-paste step. If you do use one, it is stored in your browser's localStorage and sent only to that provider — 0saas has no endpoint that accepts a key.
Which free model is best for this?
For the layout spec, a strict-JSON model on the Gemini free tier is the most reliable, because a render spec that is 95% valid JSON draws nothing. For headline iteration, Groq's free tier is faster and its published base limit is 30 requests per minute. The runner lists live models available on your key rather than trusting a hardcoded list.
Where do the exported files go?
Into your downloads folder. The SVG is drawn in the page and rasterised on a canvas in the same tab. Nothing is uploaded to 0saas, and there is no watermark on the export.
Is 0saas affiliated with Canva?
No. Canva is a trademark of Canva Pty Ltd. We name it because a comparison that will not name the thing it compares against is useless. Pricing figures come from Canva's own pricing page, linked above, with the date we read it and a per-field confidence marker.