A fast, private meme generator that turns any image into a shareable meme right in your browser. Upload a photo, screenshot or template, type a top caption and a bottom caption, and the tool renders them instantly in the unmistakable meme style: bold Impact lettering with a thick black outline so the white text stays legible over busy or bright backgrounds. There is no sign-up, no watermark, and no upload — the picture is decoded locally and the finished meme is drawn with the HTML canvas and saved straight to your device.
Memes are the lingua franca of group chats, Discord servers, community subreddits and social feeds, but most online meme makers push your image through a server, slap a brand watermark on the result, or gate the high-resolution export behind a paywall. This tool does none of that. Everything happens client-side, so it works offline once the page has loaded, keeps private screenshots private, and exports a clean PNG you fully own.
How it works
When you select an image it is read as a data URL and drawn onto a canvas at its native
aspect ratio. Each caption is rendered with strokeText first and then fillText, which
produces the classic outlined look, and the stroke uses a rounded line join so the edges
stay smooth rather than spiky. Long captions are word-wrapped to fit the image width, and
you can add manual line breaks by pressing Enter inside a caption box. Caption positions
are stored as normalised coordinates between 0 and 1, so when you drag a caption on the
small preview it lands in exactly the same place on the full-resolution export.
On export, the original image is scaled so its longest edge matches the resolution you picked, the captions are re-drawn at that larger size, and the canvas is converted to a PNG blob and downloaded. Because the captions are vector text drawn at export time rather than scaled-up bitmap, they stay crisp at every output size. Your styling choices — font, size, outline thickness, colours and the uppercase toggle — are remembered in this browser via local storage, while the image itself is never persisted.
Example
Drop in a reaction photo, set the top caption to WHEN THE BUILD PASSES and the bottom
caption to ON THE FIRST TRY, leave the colours at white text with a black outline, nudge
the text-size slider until the lettering fills the frame, and export at 1080 px. You get a
ready-to-post square-or-rectangular PNG in a couple of seconds, with no watermark and
nothing uploaded.
| Step | What you control |
|---|---|
| Upload | Any PNG, JPG, WebP or GIF, decoded locally |
| Caption | Top and bottom text, auto-wrapped, draggable |
| Style | Font, size, outline thickness, fill and stroke colour, uppercase |
| Export | PNG at 640, 1080, 1600 or 2048 px longest edge |
Every pixel is produced on your own machine — the image never leaves the browser.