Skip to main content
L
Loopaloo
Buy Us a Coffee
All ToolsImage ProcessingAudio ProcessingVideo ProcessingDocument & TextPDF ToolsCSV & Data AnalysisConverters & EncodersWeb ToolsMath & ScienceGames
Guides & BlogAboutContact
Buy Us a Coffee
L
Loopaloo

Free online tools for developers, designers, and content creators. Your files are processed in your browser and are never uploaded - no accounts required. A few network utilities (like What's My IP and Currency Converter) call public APIs to do their job and say so on their pages.

support@loopaloo.com

Tool Categories

  • Image Tools
  • Audio Tools
  • Video Tools
  • Document & Text
  • PDF Tools
  • CSV & Data
  • Converters
  • Web Tools
  • Math & Science
  • Games

Company

  • About Us
  • Contact
  • Blog
  • FAQ

Legal

  • Privacy Policy
  • Terms of Service
  • Disclaimer

Support

Buy Us a Coffee

© 2026 Loopaloo. All rights reserved. Built with privacy in mind.

Privacy|Terms|Disclaimer
  1. Home
  2. Image Processing
  3. Meme Generator
Add to favorites

Meme Generator

Caption a picture with text that is measured, wrapped and kept inside the frame. The preview canvas is the exported file, pixel for pixel.

Edits stay in your browserMore image processingJump to full guide

Initializing in your browser…

You might also like

Image Resizer

Resize with the filter named (Lanczos, Mitchell, Catmull-Rom, bilinear, box or nearest) and the option to average LIGHT rather than stored bytes, which is worth 1.24 stops on a detailed picture.

Image Text Extractor (OCR)

Read text off a picture with Tesseract, after preparation that measures the type and enlarges it: 8px text went from a 53 percent character error rate to 8. Every word carries a confidence and a box drawn on the picture.

Texture Generator

Twelve procedural patterns that tile exactly, verified live with a measured wrap error and a 3 by 3 repeat view. Perlin, fractal, ridged, Voronoi, marble, wood and geometric grids.

Meme Generator: a worked example

A 600 by 400 picture with the default TOP TEXT and BOTTOM TEXT captions, measured on screen and in the file.

Input

wm-ground.png 600 x 400 · Impact 48 px · 3 px outline
What Meme Generator produces

The preview against the downloaded file

                          before      after
type drawn on screen        16 px      48 px
type drawn in the file      48 px      48 px
caption width, screen/file  0.44x      1.00x
pixels differing            19,754          0
of                         240,000    240,000

96 px caption, 52 characters
ran off both edges            yes         no
lines                           1          4

The old preview drew its text at `fontSize / 3`, a hardcoded divisor, so it matched the file only when the displayed picture happened to be exactly a third of the real one. It is now one canvas drawn by one function at two scales, and the two are byte identical. Nothing called measureText either, so a long caption ran off both edges; captions are now measured, wrapped and brought down in size until they fit.

About the Meme Generator

Caption a picture with text that is measured, wrapped and kept inside the frame. The preview is a canvas drawn by the same function that writes the file, so the two are identical pixel for pixel. PNG, JPEG or WebP, entirely in your browser.

How to use

  1. 1Upload a picture
  2. 2Pick a caption layout, or add and delete captions yourself
  3. 3Type each caption and set its font, size, colours and outline
  4. 4Drag a caption on the preview to move it; it lands where you drop it
  5. 5Watch the panel under the preview: it says what wrapped, what shrank and how far the caption is from each edge
  6. 6Choose PNG, JPEG or WebP and download

Where this helps

  • Team chat jokes

    Caption a screenshot in the classic white-on-black-outline style and drop the PNG straight into a channel.

  • Social posts

    Put a long caption on a photograph and let the wrapping and the shrink keep every word on the picture.

  • Slides and documentation

    Label a picture with a caption whose position and size you can read off the page in the picture’s own pixels.

Key features

  • The preview canvas and the exported file are the same picture, pixel for pixel
  • Captions measured by their ink and wrapped to a width you set
  • Shrink to fit, which brings the type down until the caption is inside the frame
  • Lines laid out on the font’s own line height rather than on the point size
  • A real outline on screen and in the file, with the canvas line width stated
  • Per-caption font, size, colour, alignment, vertical anchor, case, wrapping, spacing and shadow
  • Dragging that converts the pointer through the canvas rectangle, so a caption lands where it is dropped
  • Five caption layouts, and as many captions as you want
  • PNG, JPEG and WebP, with a quality slider only where quality changes the file
  • A warning when the browser has no such font and is substituting another

Tips & best practices

  • The preview canvas IS the exported file, drawn at a smaller scale by the same function. What you see is what the file gets, down to the pixel.
  • Shrink to fit brings the type down until the caption fits the picture. Turn it off to see what the size you asked for really does; the page reports the block width either way.
  • The outline number is what you see on each side of the letter. A canvas stroke is centred on the glyph, so the tool passes twice that as the line width, and the label says so.
  • Set the widest line below 100 percent to make a caption wrap sooner; the page names the pixel width it wrapped to.
  • If the page warns that a font is missing, this browser is substituting another face. The preview and the file still agree, because both measure the substitute, but the meme will look different on a machine that has the font.

Examples

  • Classic top and bottom

    Upload a picture, keep the two default captions, type into each, and download. The type is Impact at 48 px with a 3 px black outline, anchored 4 percent from the top and 4 percent from the bottom, and the file is the picture at its own resolution.

  • A long caption that still fits

    Type a 52-character line and put the size up to 96 px. It wraps onto four lines at 92 percent of the width and the type comes down to 72 px, and the exported file has no ink within 4 percent of either edge.

How it works

A meme generator makes one promise: the picture on screen is the picture in the file. This version keeps it literally. The preview is a canvas drawn by the same function as the export, at a smaller scale, and a test asserts the two are identical pixel for pixel rather than merely similar. The previous version drew its canvas text at the size you asked for and its preview at `fontSize / 3`, a hardcoded divisor, so the two agreed only when the displayed picture happened to be exactly a third of the real one. Measured on a 600 by 400 picture shown at 450 by 300: the display scale is 0.75, so 48 px type should have appeared at 36 px and appeared at 16, and the exported caption came out 2.25 times as wide and 2.03 times as tall as the one on screen. The two pictures differed on 19,754 of 240,000 pixels.

Captions are measured before they are drawn. Nothing in the old tool ever called measureText, so nothing wrapped and nothing stayed on the picture: a 52-character line at 96 px ran off both edges of a 600 px wide export. Every caption here is measured by its INK (`actualBoundingBoxLeft` and friends) rather than by its advance width, wrapped to a width you set as a share of the picture, laid out on the FONT’s own line height rather than on the point size, and, with Shrink to fit on, brought down a pixel at a time until the whole block sits inside the frame. The page says which of those happened and by how much: the block size, the size it was drawn at, the line height, the distance from each edge, and a note for every wrap, shrink or nudge.

The outline is a real stroke on both sides now. A canvas stroke is centred on the glyph outline, so half of it falls inside the letter and a visible outline of N pixels needs a line width of 2N; the export always did that correctly and the preview wrote four one-pixel `text-shadow` offsets whatever the setting, which is not a stroke and did not change with the slider. Every line’s outline is drawn before any line’s fill, so a tight line spacing cannot put one caption’s outline on top of another’s face.

One detail is worth knowing because it is not obvious: Chromium does not rasterise text identically into a canvas that is in the document and one that is not. Measured here, the same strokeText and fillText calls differ by up to 210 of 255 at the glyph edges, which is the difference between an accelerated and a software raster. The export canvas is therefore attached to the document off screen while it draws, which is what turns “the preview matches the file” from a tolerance into an identity.

Captions carry their own font, size, colour, outline colour and width, horizontal alignment, vertical anchor, uppercase, wrapping, line spacing and shadow, and are dragged straight on the preview: the pointer position is converted through the canvas’s bounding rectangle, so a caption lands exactly where it was dropped whatever size the canvas happens to be displayed at. Five layout presets rearrange the captions; there are no bundled meme photographs, and the page no longer claims any. Output is PNG, JPEG or WebP, named after the picture you uploaded, with a quality slider that appears only where quality does something.

Frequently asked questions

Does the downloaded file really match the preview?

Yes, and it is one function rather than two: the preview calls the same drawing code at a smaller scale, and the test suite asserts the preview canvas and the exported file are identical pixel for pixel. The previous version drew the preview at a third of the size whatever the picture was, and the two differed on 19,754 of 240,000 pixels on an ordinary 600 by 400 image.

Are meme templates included?

No photographs are bundled; upload your own picture. What the Layout buttons give you are caption arrangements: top and bottom, bottom only, top only, centred, and two panels. The previous version listed five meme names in its code and applied none of them.

What happens to a caption that is too long?

It wraps to the width you set, and with Shrink to fit on the type comes down until the whole block is inside the picture. The panel under the preview says how many lines it wrapped onto and what size it settled at. Nothing runs off the edge.

Why is the outline number half the line width?

A canvas stroke is centred on the glyph outline, so half of it falls inside the letter. The number on the slider is what you see on each side, and the tool passes twice it to the canvas. The label shows both.

Can I use lowercase?

Yes. Uppercase is a per-caption toggle and it is on by default because that is the convention; turn it off and your text is drawn as typed.

Is anything uploaded?

No. The picture is decoded, drawn and encoded in your browser, and nothing leaves the machine.

Related tools and how they differ

  • Image Annotator: Adds editable arrows, boxes, numbered text, highlights and freehand pen on a canvas with undo and layers; use it to mark up screenshots, not caption jokes.
  • Screenshot Beautifier: Wraps an image in a gradient background, padding, rounded corners, shadow and device frames; use it to package a screenshot, not to add caption text.
  • Image Watermark: Places one repeatable mark with an opacity, a rotation and a padding measured from the ink; use it to sign a picture, not to caption one.

Private by design

Images are decoded, edited, and exported entirely inside this browser tab. No originals, exports, or metadata are uploaded.