From one sentence to six memes
What actually happens in the ten seconds between typing and downloading — followed through with a real prompt, “My code works and I have no idea why”.
- 1
You describe the moment
One sentence is enough — a situation, an opinion, a thing that keeps happening. You can also pick a tone (dry, sarcastic, wholesome, absurd, dark, work-safe), a spice level, who the meme is for, and one of 11 caption languages. Or pin a specific template if you already know the format you want.
My code works and I have no idea whyAuto styleDrySarcasticWholesome|MildMediumSpicy|DevelopersEnglishGenerate 6 memesThe controls as they appear on the generator; every one is optional. - 2
The templates get shortlisted
Before any AI is involved, the prompt is matched against 195 templates by keyword and by the shape of joke each format is built for. Around a dozen candidates go to the model along with each template's slot guide — what goes on top, who is the "distracted boyfriend", which line is the punchline.

I Have No Idea What I'm Doing

Captain America Elevator Fight Dad Joke

Panik Kalm Panik

Roll Safe

Midwit

That Would Be Great

Drake Hotline Bling

Expanding Brain
Part of the shortlist for this prompt. Highlighted ones are the templates the model actually picked in the run below. - 3
Captions are written in each format's grammar
The language model picks six of the candidates and writes captions that respect each template's rules: the rejected thing on Drake's top panel, four escalating steps for Expanding Brain, a single flat take for Change My Mind. It answers in structured JSON, which is validated before anything is shown.
4Your browser draws the image
Each result is rendered on an HTML canvas on your device using the template's real text boxes: the text is auto-fitted to the box, wrapped, outlined in Impact (Anton on phones that lack it). No image is uploaded to a server. Nothing is watermarked.
DownloadCopyEditRewriteSwap
DownloadCopyEditRewriteSwap
DownloadCopyEditRewriteSwap
DownloadCopyEditRewriteSwap
DownloadCopyEditRewriteSwap
DownloadCopyEditRewriteSwap
The first 3 are the actual results for the demo prompt; the rest are from other prompts on the examples page. Rendered by the same code that runs in your browser. - 5
Edit, rewrite, swap — per card
Like the template but not the joke? Rewrite that one card. Like the joke but not the template? Swap it. Hit Edit to rewrite lines inline, drag captions anywhere, and resize them. Reset puts the original back.
A−A+ResetDone- Dashed box = a caption you can drag anywhere on the image.
- Corner handle = resize; the text refits to the new box.
- Click a line to rewrite it inline; Reset restores the AI version.
- Rewrite = new caption, same template. Swap = same joke idea, different template.
- 6
Download or share
Download a clean PNG at the template's native size, copy it to the clipboard, or use the system share sheet on mobile. Your recent memes stay on this device (localStorage) so you can come back to them; there is no account and nothing is stored on our side.
Questions
Where does my prompt go?
To the AI provider that handles the request (OpenAI, with Cloudflare Workers AI, Groq, Google Gemini and OpenRouter as fallbacks). The Privacy page lists what each provider does with API traffic. The image you make never leaves your browser unless you share it.
Why six memes instead of one?
Because comedy is hit-rate, not accuracy. Six attempts across different formats means two or three usually land, and the per-card rewrite covers the rest. One 'best' attempt would be wrong more often than not.
Can it caption my own photo?
Yes. Switch to “My image”, pick a photo, describe what's happening in it, and the AI writes classic top/bottom captions. The photo is resized and captioned entirely in your browser.
What are the limits?
A per-IP limit on generations per minute and per day keeps it free for everyone. There is no sign-up, no watermark and no paid tier today; if that ever changes it will be in the changelog first.