Skip to main content
ToolsHub

Meme Generator

Drop an image, type your top and bottom captions, and get a classic meme with bold outlined text — then download the PNG. No watermarks, all client-side.

Updated

Files never leave your browser
Files never leave your browser

Drop an image here, or click to browse

JPG, PNG, or WebP

How to use Meme Generator

Create classic memes instantly by adding bold, outlined top and bottom text to any image — all in your browser with no watermarks. Upload any photo or choose a popular template, type your captions, adjust font size and colour, and download the finished meme as a PNG. Impact-style text with a black stroke is generated using the HTML5 Canvas API, just like traditional meme generators.

  1. Upload your own image or select a popular meme template from the gallery.
  2. Type the top caption text in the upper text field (leave blank to omit).
  3. Type the bottom caption text in the lower text field.
  4. Adjust font size, text colour, and stroke width to match the style you want.
  5. Preview the meme in real time, then click "Download" to save the PNG.

Your data never leaves your device — 100% private processing.

The anatomy of a classic meme: Impact font and stroke technique

The visual identity of the classic internet meme is defined by a specific typography technique: white Impact font (a condensed sans-serif designed to be extremely legible at small sizes in bold weight) with a thick black outline, rendered at the top and bottom of the image. The black stroke prevents the white text from disappearing against light backgrounds. Traditionally, text is all-uppercase and centred. This style originated on sites like 4chan and Reddit in the late 2000s and remains the standard for "image macro" memes. Canvas-based generators replicate it using ctx.strokeText() with a lineWidth of 4–8 px before ctx.fillText().

Text rendering techniques on HTML5 Canvas

Meme text is drawn using the Canvas 2D API's text rendering methods. The stroke (outline) must be drawn before the fill, otherwise the outline overwrites part of the fill. Font size is typically calculated as a percentage of the canvas width — a common formula is Math.floor(canvasWidth / 10) pixels, which keeps the text proportional across image sizes. Long text is word-wrapped by measuring each word with ctx.measureText() and breaking lines when the cumulative width exceeds a threshold. Shadow (ctx.shadowBlur) can be added as an additional readability enhancement on complex backgrounds.

Image format and quality for sharing

Meme images are almost always shared as JPEG or PNG. PNG is preferable when the source image contains text or flat areas (preserves crispness), and when the canvas overlay text must remain sharp at any zoom level. JPEG is acceptable for photographic meme templates where the slight compression artefacts are not visible at social media display sizes. Most social platforms recompress images on upload, so the practical difference is minor. For animated memes (GIF-format), a separate animation-capable tool is needed — this generator handles static images only.

Glossary

Impact font
A narrow, bold sans-serif typeface released in 1965, the de facto standard for image-macro meme captions due to its high legibility at small sizes.
Image macro
A meme format consisting of a photograph or illustration with superimposed text, typically a humorous or ironic caption.
Canvas 2D API
The browser JavaScript API for drawing 2D graphics — text, shapes, and images — onto an HTML <canvas> element at the pixel level.
Stroke text
A text rendering technique that draws an outline around letter forms, used to ensure readability over varied background colours.

Related reading

Free · No spam

Get weekly tool tips & updates

New tools, power-user tips, and productivity hacks — delivered free every Friday.

No spam, ever. Unsubscribe with one click.

Related Image Tools

Explore all Image Tools.