Meme generator
Stamp top/bottom caption text onto an image, on your device.
Runs on your device. The file is never uploaded.
Meme generator stamps a top and a bottom caption onto an image in white, each letter under a one pixel black shadow, and adds a -meme suffix. Both captions come from a built-in 3x5 bitmap font, sized at the image width divided by 110. Nothing wraps, so a caption wider than the picture runs off both edges.
Questions
Why did my caption come out with gaps or missing letters?
Because the built-in font covers capital A to Z, the digits 0 to 9 and the space, and nothing else. Lowercase is converted to uppercase automatically, but any other character, including punctuation, accents and emoji, is drawn as a blank space. There is no font file in this project, so this is a small hand-drawn 3x5 pixel font rather than a typeface.
Where does the text go and can I move it?
Top caption is drawn near the top edge and Bottom caption near the bottom, both centred horizontally, in white with a one pixel black shadow. The defaults are the words TOP TEXT and BOTTOM TEXT. There is no position, colour, outline or font size option, and no line wrapping, so a long caption runs off both sides of the image.
How big will the text be?
It scales with the image width: the font is drawn at roughly the image width divided by 110, clamped between 1 and 24. So a 1100 pixel wide picture gets a 10x scale font and a small thumbnail gets the minimum. You cannot set it directly. If the caption is too big, use a wider source image or shorter text.
Can I leave one caption off?
Yes. Clear either field and only the other is drawn; both fields are checked for non-blank text before anything is stamped. Clear both and you get your image back re-encoded with no captions at all, at the same pixel size it went in as. There is no way to add a third line, since only these two positions exist.
What do I get back, and is anything uploaded?
A file named with a -meme suffix in your original format, such as cat-meme.jpg, encoded at the Quality option, default 85, for JPG and WebP. Only JPG, PNG and WebP are read. Everything runs in a Web Worker on your device with no upload, no account and no template gallery fetched from anywhere.