MT
Meme Text Generator
Add classic bold white-on-black top and bottom captions to any image or a blank canvas, then download as PNG.
More Generators Tools
How to Use Meme Text Generator
Upload an image, or click "Use Blank Canvas" to start from a plain background instead. Type a top caption and a bottom caption — either one can be left empty — and watch the classic meme-style text render live, in bold capital letters with a black outline, automatically sized to fit. Download the finished image as a PNG with one click.
About Meme Text Generator
The "top text, bottom text" meme format is one of the most recognizable visual conventions on the internet, tracing back to image board and forum culture from the 2000s, where bold white capital letters with a thick black outline — set in or styled after the Impact typeface — became the de facto house style for captioned image jokes. That specific look (heavy black stroke, solid white fill, all caps, centered) isn't cosmetic flourish; it exists because it reads clearly over almost any background image, light or dark, busy or plain, without needing a separate text box or background panel to stay legible.
This tool reproduces that exact rendering technique using the HTML5 canvas 2D drawing API. Text is always converted to uppercase automatically, matching the format's visual convention regardless of how you originally typed it. Rather than picking one fixed font size, the tool measures your actual caption text against the canvas width and shrinks the font automatically until it fits within the image with a small margin — so a short caption like "WHEN" renders large and bold, while a long caption automatically steps down in size to avoid running off the edges or overlapping itself, without you ever needing to adjust a font size slider by hand.
The stroke-then-fill technique that produces the signature outlined look is a deliberate two-pass draw: the same text is painted twice at the exact same position, first as a thick black outline (stroke), then as a solid white fill on top of it. Painting the outline first and the fill second is what makes the white lettering sit crisply inside a clean black border rather than the border overlapping into the letters. The outline's thickness scales with the font size, so it looks proportionate whether the caption is rendered large or small.
You aren't required to supply your own image — clicking "Use Blank Canvas" gives you a plain, evenly colored 800×600 background instantly, useful for text-only meme formats, quick mockups, or just experimenting with captions before committing to a specific picture. Whichever background you choose, both captions and the underlying image (or blank background) are redrawn together as a single flattened image every time you change anything, so what you see in the preview is always exactly what gets downloaded — nothing is layered separately or added after the fact. Every part of this — reading the image file, measuring text, drawing captions, and producing the final PNG — happens locally in your browser; the picture you upload is never sent anywhere.
Details & Tips
How auto-fit font sizing works: for each caption, the starting font size is the canvas width divided by 10 (rounded down). The tool then measures the caption's rendered width at that size using the canvas's built-in text measurement, and if it's wider than the canvas minus a 40px margin, it shrinks the font by one pixel and re-measures, repeating until the text fits or the font size reaches a hard floor of 14px, whichever happens first — so a very long caption will always stop shrinking at a still-readable minimum size rather than becoming illegibly tiny or causing the loop to run forever.
How the outlined look is drawn: text is rendered using the font `bold {size}px Impact, "Arial Black", sans-serif` — Impact where it's installed, falling back to Arial Black or the browser's generic bold sans-serif otherwise. The outline width scales with font size (font size ÷ 12), and each caption is drawn twice at the identical centered position: once with `strokeText` in solid black for the outline, then immediately with `fillText` in solid white for the fill, which is what produces the familiar crisp white-on-black-outline look rather than a soft or uneven edge.
Positioning: the top caption's baseline sits a fixed 10px below its own font size from the top of the canvas (so larger top text sits a little further down, keeping its top edge roughly aligned across different caption lengths), and the bottom caption's baseline sits a fixed 20px above the bottom edge of the canvas. Both are horizontally centered.
Image handling: an uploaded image is scaled down to a maximum display width of 900px if it's larger (using the same `Math.min(1, 900 / width)` scaling approach used by this site's other canvas-based image tools), preserving its aspect ratio, and drawn once as the base layer before either caption is added. The blank-canvas option instead fills an 800×600 canvas with a flat light gray background. Either way, every redraw — triggered by typing in either caption box — repaints the entire canvas from scratch (background or image first, then top caption if non-empty, then bottom caption if non-empty), so the preview is always a single accurate flattened image with no leftover text from a previous edit.
Edge cases: leaving either caption blank simply skips drawing that line entirely, so a meme can have only a top caption, only a bottom caption, both, or (before you've typed anything) neither. Downloading is disabled until an image has been chosen or Use Blank Canvas has been clicked, since there's nothing to export before then. The download itself is a PNG produced with the canvas's native `toBlob` export, the same approach used by this site's other image-generating tools.
Frequently Asked Questions
Do I have to upload my own image?
No, click "Use Blank Canvas" to start from a plain 800×600 gray background instead, useful for text-only formats or quick experimentation before choosing a picture.
Why is my caption automatically in capital letters?
The tool automatically converts caption text to uppercase, matching the classic meme visual convention, regardless of how you originally typed it.
How does the tool decide what font size to use?
It starts large (canvas width ÷ 10) and shrinks the font one pixel at a time, re-measuring the text each step, until the caption fits within the image width with margin, or until it reaches a minimum floor of 14px.
Can I leave the top or bottom caption empty?
Yes, either caption can be left blank — an empty caption is simply not drawn, so you can have a top-only, bottom-only, both, or neither.
What font does this use?
It requests bold Impact first, falling back to Arial Black, then your browser's generic bold sans-serif font if neither is installed — the same fallback chain most meme-making tools use.
How is the black outline around the white text created?
Each caption is drawn twice at the exact same position: first stroked in black to form the outline, then filled in white on top, producing the classic crisp white-on-black-outline look.
Is my uploaded image sent to a server?
No, everything — reading the file, drawing the image, measuring and rendering the captions — happens locally in your browser. Your image is never uploaded anywhere.
What image format do I get when I download?
A PNG file, produced with the canvas's native toBlob export, the same approach used by other image-generating tools on this site.
Does the preview update live as I type?
Yes, the entire canvas — background or image plus both captions — redraws from scratch on every keystroke, so the preview always matches exactly what you'd get by downloading.
Will a very long caption run off the edges of the image?
No, the automatic font-shrinking loop keeps reducing the size until the text fits within the canvas width (minus a small margin), stopping only at a 14px minimum so text never becomes illegibly small either.
Why is the download button disabled at first?
It stays disabled until you've either uploaded an image or clicked "Use Blank Canvas," since there's no canvas content to export before one of those two actions.
Can I use a non-square or very large image?
Yes, any image works — it's automatically scaled down to a maximum display width of 900px while keeping its original aspect ratio, so tall, wide, or very large images all display and export correctly.
Also Available As
meme generator, meme text generator, meme maker online, top text bottom text meme, impact font meme, caption generator, free meme maker
Explore More Tools
View all toolsFound a Problem?
Let us know if something with Meme Text Generator isn't working as expected.
Something went wrong. Please try again.
Thanks — we'll take a look.