Meme Generator — Add Text to Any Image
A meme generator overlays text on an image to make a shareable joke or reaction. This one adds top and bottom text in the classic meme style, lets you adjust size, colour, outline and vertical position, and exports a PNG. Your image is read locally and never uploaded.
Free, no account, no watermark. Works on desktop and mobile. Drag the text to reposition it, undo with Ctrl+Z, and your last layout is remembered the next time you open the page.
Meme editor
How to Make a Meme in Five Steps
The whole workflow takes under a minute once you have an image.
- Load an image. Click Load image, or drag a file onto the canvas. PNG, JPEG, WebP and GIF up to 25 MB are accepted.
- Type your top and bottom text. Text is uppercased automatically, which is the convention for this format. The preview updates as you type.
- Tune the styling. Use the size slider to scale the text to the image, the outline slider to keep it readable on busy backgrounds, and the two colour pickers to change fill and outline.
- Reposition if needed. Click or tap directly on the top or bottom text and drag it up or down. Text stays horizontally centred. Press
Ctrl+Zif you overshoot. - Download the PNG. Click Download PNG. The file is named with today's date and saved to your downloads folder. Transparent areas stay transparent.
Your text, size, colour and position are saved in this browser. Reopen the page later and the layout is still there — you only need to load the image again.
What People Use It For
Meme text overlays are a general-purpose annotation tool. The same top-and-bottom layout that carries a joke also carries a caption, a warning or a quote.
- Social posts and replies. Reaction images with a punchline top and bottom.
- Presentation slides. A screenshot with a one-line caption reads faster than a bullet list.
- Product feedback. Mark up a UI screenshot with the exact wording of the problem.
- Internal comms. Team announcements, release notes and onboarding screenshots.
- Teaching. Label a diagram or a historical photo without opening a full editor.
- Event and community posts. Quote cards and announcement images for group chats.
Because nothing is uploaded, it is also usable for images you would not put into a third-party editor — internal dashboards, unreleased designs, personal photos.
How It Works Under the Hood
The editor is about 200 lines of JavaScript with no libraries. Three browser APIs do the work:
- FileReader reads the file you pick into a data URL held in memory. The browser never sends it over the network.
- Image decodes that data URL into pixels you can draw.
- HTML Canvas draws the image, then draws the text on top with
fillTextandstrokeText. The outline is a stroke drawn before the fill so it sits behind the letters.
Export uses canvas.toDataURL('image/png'), which serialises the canvas back into a PNG in memory and triggers a download. No server is involved at any point.
Text wrapping measures each line with ctx.measureText() and breaks at word boundaries; a single word longer than the canvas is hard-broken character by character so it never overflows. Line spacing is 1.15× the font size, which stops descenders from touching the line below.
What This Editor Actually Does
Every feature listed here works today. Nothing is marked “coming soon” because we would rather ship it than advertise it.
Top and bottom text
Two text fields, auto-uppercased, wrapped to the canvas width. The layout that reads as a meme.
Drag to reposition
Click or tap the text and drag it vertically. Works with mouse, touch and stylus. A grab cursor shows where.
Outline control
Stroke thickness from 0 to 24 px, with independent fill and outline colours. Keeps text legible on any photo.
Undo and redo
Forty steps of history. Use the toolbar buttons or Ctrl+Z and Ctrl+Shift+Z.
Local-only processing
FileReader plus canvas. The image never leaves the tab, and the page loads no third-party scripts.
PNG export
Full-resolution PNG with transparency preserved. No watermark, no sign-up, no download queue.
Known limitations
- Text is horizontally centred and can only be moved vertically. Free X/Y positioning is not implemented.
- Animated GIFs render as a single still frame — the canvas captures one frame only.
- SVG input is rejected. Convert to PNG first if you need to use vector art.
- Images above roughly 4000 px on the long edge may be slow on phones and low-memory laptops.
- No sticker, emoji or freehand drawing layer yet.
Frequently Asked Questions
Is this meme generator really free and private?
Yes. It is free and needs no account. Your image is read locally with the browser FileReader API, decoded into an in-memory Image object, and drawn to an HTML canvas. The file itself never leaves your device. The page loads no third-party scripts or fonts, so editing makes zero network requests.
What image formats can I use?
PNG, JPEG, WebP and GIF up to 25 MB. Animated GIFs are rendered as a single still frame — the first one — because the canvas only captures one frame. SVG files are rejected for security reasons. If you need to convert a format first, run it through the Image Optimizer.
Can I move the text on the image?
Yes. Click or tap directly on the top or bottom text and drag it up or down. Text stays horizontally centred, which is the classic meme layout. A grab cursor appears when you hover over draggable text.
Why does the text font look different on my phone?
The default font is Impact, which ships with Windows and macOS but not with Android or most Linux distributions. Where Impact is missing the tool falls back to Arial Black, then to your system sans-serif. You can pick Arial Black or System Sans explicitly in the Font menu so the result is predictable on your device.
Can I edit the meme after downloading it?
The downloaded PNG is a flat image and cannot be edited. But your text, size, colour, outline and position settings are saved in this browser, so reopening the page restores your last layout. Load the same image again and you can keep adjusting. Undo and redo are also available with Ctrl+Z and Ctrl+Shift+Z.
Is there a file size limit?
The tool rejects files above 25 MB. There is no pixel limit in the code, but images longer than about 4000 pixels on the long edge can be slow on phones and low-memory laptops. Resize first if the editor feels sluggish.
What does the outline thickness control do?
It draws a stroke behind the text fill so the letters stay readable on busy backgrounds. Set it to 0 for plain text with no outline. Thick outlines work best on high-contrast photos; thin outlines suit light backgrounds.
Does it work offline?
After the page has loaded once, yes. The editor makes no network requests while you work, so it keeps functioning if your connection drops. Only the first page load requires a connection.
Related Image and Design Tools
If you need to prepare an image before adding text, or do something beyond captions, these tools cover the rest.