NAME

Free meme generator with templates, GIF captions and crop — Meme generator — templates, GIF captions, crop, free

— make a meme from a template or your own picture, or caption a GIF
SYNOPSISmeme-generator [template|text|add|image|gif|library|export] picture
NOTESruns in this tab · pictures are never uploaded · no watermark · the library stays in this browser
    Use your own picture or GIFChoose a file, drop it here or paste it (Ctrl+V).
    Caption ideas
    -

    Guide — a finished meme in five steps

    Everything happens in your browser. Pictures and GIFs are never uploaded.

    1Pick a picture

    Choose one of 48 original templates (search, or filter by Reactions, Choices, Compare, Ladders, Text posts and Blank) or use your own picture or GIF: choose a file, drop it on the page or paste it. Every template has starter text and caption ideas to tap.

    2Write and style the text

    Double-click a text on the picture to type, or use the Text tab: font, size, fill, outline, shadow, alignment, line and letter spacing, ALL CAPS, rotation, opacity and auto-fit. Four presets give a classic meme, a caption bar, a subtitle or a sticker label.

    3Add layers and cover things up

    The Add tab holds drawn stickers and emoji, six shapes, a freehand pen and a censor that pixelates, blurs or blacks out a region. Move, resize, rotate, lock, hide and reorder everything in the layer list. Undo goes back at least 100 steps.

    4Crop and size it

    On the Image tab pick an aspect ratio (1:1, 4:5, 9:16, 16:9, 3:2, X card or your own), drag the picture inside the frame, zoom, add a caption bar and read the exact output size in pixels. Guides for thirds and safe areas are never exported.

    5Save, copy or share

    Download a PNG, JPEG or WebP at 1x or 2x, optionally squeezed under a file size you set. For a GIF, trim it, change its speed, set when each caption shows and watch the size estimate. You can also copy the picture, share the file or copy a link to the layout.

    What the tabs hold

    TEXTCaptions that read
    Fonts
    Anton, Bebas Neue, Impact, Oswald, Bangers and more, with a fallback if a font cannot load
    Outline, shadow
    Keeps white text readable on any picture
    Auto-fit
    Shrinks the text to fill a box you drag
    Contrast hint
    Warns when text blends into the picture
    LAYERSStickers, shapes, pen, censor
    Select
    Click a layer, or pick it in the list
    Handles
    Resize at the corners, rotate with the knob, Shift for steps of 15 degrees
    Censor
    Pixelate, blur or a solid bar, rectangle or ellipse
    Order
    [ and ] move a layer back and forward
    GIFCaption a moving picture
    Trim
    Choose the first and last frame
    Speed
    From 0.25x to 4x, plus reverse and loop count
    Timing
    Show each caption only between two moments
    Size
    Estimate, limit and a suggested scale before you export
    KEYSShortcuts
    Ctrl+Z
    Undo; Ctrl+Y redoes
    T
    Add a text
    Del
    Delete the selected layer
    ?
    All shortcuts

    Meme generator, explained

    This is a free meme generator that runs entirely in your browser. You pick one of 48 original templates or bring your own picture or GIF, write the caption, add stickers, shapes or a censor, crop to the size a platform wants and save the result. There is no watermark, no account and no upload: the picture is drawn on a canvas in this tab and the file is made on your own device.

    It is built for the quick job and the careful one. A meme takes a template and two lines. A reaction GIF needs a caption that appears at the right moment. A screenshot for a team chat needs a name hidden and a size that fits. The same page does all three, with undo for every step.

    48 original templates

    Reactions, choices, comparisons, ladders and levels, text posts and blank backgrounds. Each comes with two or three caption ideas you can tap, and a search box finds them by word.

    Text with control

    Fonts, outline, shadow, label background, alignment, spacing, rotation, opacity, ALL CAPS and auto-fit. Presets for a classic meme, a caption bar, a subtitle and a sticker label.

    Layers and undo

    Text, 23 drawn stickers and 68 emoji, six shapes, a pen and a blur or pixelate censor, all selectable, lockable and reorderable. Undo and redo go back at least 100 steps.

    Crop to any size

    Original, 1:1, 4:5, 9:16, 16:9, 3:2, an X card or your own ratio. Drag and zoom the picture in the frame; the output size in pixels is always shown.

    Captioned GIFs

    Load a GIF, add captions, trim it, change the speed from 0.25x to 4x, reverse it, set the loop count and export with a size estimate and a limit.

    Private

    Pictures, GIFs and text stay in the tab. Your work is saved in this browser only, and a backup file is yours to keep. See privacy for the few requests the page does make.

    Original templates, not copies

    Every template and sticker here is drawn in code for this page: simple figures, faces, charts, signs and layouts. None of them is a copy of a well-known photograph or character, and the names describe the layout (“Two-panel reject / approve”, “Idea ladder”, “Rising chart with suited figure”) instead of borrowing the name of a viral picture. If you want a famous image, bring your own with Choose picture; the tool works the same way with it.

    CategoryTemplates
    Reactions12
    Choices6
    Compare8
    Ladders / Levels9
    Text posts7
    Blank6

    Links from the earlier version of this page still open. They used the old template names, and the page maps each of them to the redrawn template that took its place, with the same text, position and fonts.

    Text that stays readable

    Classic meme text is white with a black outline, in a condensed font such as Anton or Impact. That combination reads on almost any picture, which is why it survives. The Text tab lets you change every part: the outline width, a soft shadow, a coloured label behind the words, left, centre or right alignment, line and letter spacing, rotation and opacity. Auto-fit turns the text into a box: drag its corners and the type grows or shrinks to fill it.

    When the fill colour is too close to the picture under the text, a contrast hint appears with the ratio. It averages the picture behind the text and compares it with the fill, counting the outline or the label background as help. It is a hint, not a rule: a meme can be deliberately hard to read.

    The fonts come from Google Fonts. If they cannot load, the page falls back to Impact, Arial Black or the system font, and the text still renders at the right size and place.

    Layers, censoring and undo

    Everything on top of the picture is a layer: text, stickers, shapes, pen strokes and censor regions. Click one to select it, then drag to move, pull a handle to resize, use the knob above it to rotate, and use the arrow keys to nudge by one pixel (ten with Shift). The layer list in the panel shows them top to bottom, with a hide and a lock button for each. Lines and arrows have two end handles you can place anywhere; a speech bubble has a yellow handle for its tail.

    The censor layer changes the pixels under a rectangle or ellipse. Pixelate averages blocks, blur smooths the region and solid bar covers it with a colour. The result is baked into the exported file, and no information from under a solid bar remains in it. Pixelate and blur reduce detail but are not a guarantee against recovery of very large or very simple content, so use a bar for anything that must stay secret.

    Undo and redo keep up to 200 steps, limited to about 48 MB of history, and one drag or one slider move counts as one step. Pictures are kept outside the history, so undo never re-reads a file.

    Crop and output size

    The aspect presets cut the frame from the picture. Fill (crop) uses the largest frame of that shape that fits inside the picture; Fit (bars) uses the smallest frame that contains the whole picture and fills the rest with a colour or a blurred copy of the picture. Drag the picture on the stage to choose what stays in the frame, or zoom up to 4x. The table shows the output size when a square source is cropped and the width is set to 1080 px.

    PresetTypical useSize at 1080 px wide
    1:1Feed posts, avatars1080 × 1080 px
    4:5Instagram portrait posts1080 × 1350 px
    9:16Stories, Reels, Shorts, TikTok1080 × 1920 px
    16:9Video thumbnails, slides, YouTube1080 × 608 px
    3:2Photo prints, blog images1080 × 720 px
    1.91:1Link-preview cards on X and Facebook1080 × 565 px

    The Output width list sets the width in pixels and the height follows. The thirds grid, the Stories safe area (top 14% and bottom 20%) and the profile-grid crop (3:4) are drawn on the stage only; they are never part of the exported file. A caption bar adds a plain strip above the picture for the modern text-on-white style, and it adds to the height of the output.

    GIF captions, trim and speed

    A GIF is decoded in your browser into its frames, handling transparency and the disposal methods animated GIFs use. Then it is a picture like any other: add text, stickers and censors, and pick for each layer whether it shows for the whole animation or only between two moments, measured in seconds of the result. The scrubber and the play button show the effect while you edit.

    Trim keeps a range of frames, speed changes the delay of each frame (at 2x and above, frames are merged so that no frame is shorter than 20 ms, the smallest delay players honour), reverse plays it backwards and the loop setting writes the repeat count into the file. Large GIFs are shrunk to a working copy of at most 1000 px and 600 frames so the tab does not run out of memory, and the page says so when it does.

    The encoder is written for this page. It builds a colour table for each frame, stores only the part of the picture that changed, and runs in a background worker so the page stays responsive, with a progress bar and a Cancel button. Before you export, the GIF tab encodes a few real frames to estimate the file size. If it is over your limit it suggests a smaller scale, and with Shrink automatically the export retries at a smaller size. GIF is an old format with 256 colours per frame: photographs get grainy, and a tool like a video converter will make smaller files for the same clip.

    Export: PNG, JPEG, WebP, copy and share

    PNG is lossless and best for text and flat colour. JPEG and WebP are smaller for photographs and have a quality slider. If a chat app or a form has a size limit, tick Aim for a maximum file size and enter it in kilobytes: the page searches for the best quality that fits, and for PNG, or when quality alone is not enough, it reduces the pixel size step by step. The Export tab shows the final size in pixels and the approximate size of the file. Choose 2x for a sharper picture on high-density screens; the page caps the longest side at 8192 px.

    Copy image puts a PNG on the clipboard where the browser allows it. Share file appears on devices whose browser can share files, such as most phones. File names look like meme-two-panel-reject-approve-20261102-1530.png unless you type your own.

    Library, autosave and links

    The Library tab keeps named projects, your last 30 exported memes and templates made from your own pictures, in this browser (IndexedDB), each with a thumbnail. You can rename or delete them, and Back up writes one JSON file with everything, pictures included, which Import reads back. While you work, the page autosaves after the first change; next time it offers to restore the last session. Clear everything deletes it all after a confirmation.

    A share link holds the layout and text, not pictures: it is built from the settings and put after the # of the address, so it is never sent to a server. Someone who opens a link made on your own picture sees your text on a plain background. The longer the text and the more pen strokes, the longer the link gets, and the page tells you its length.

    Privacy and what the page requests

    The picture, the GIF, the text and the files are processed in this tab. The page’s own code makes no network calls of its own: it has no fetch request, no XHR and no beacon, which you can check by searching the page source. The network requests that do exist are these:

    • This site: the page itself, the shared style sheet /theme.css, the theme script /theme.js (which remembers light or dark) and the site icon.
    • Google Fonts: a style sheet from fonts.googleapis.com and the font files from fonts.gstatic.com, for the meme fonts and JetBrains Mono. The browser sends its usual request headers to Google for them.
    • Simple Analytics (scripts.simpleanalyticscdn.com): privacy-friendly page-view counting without cookies. It never sees your pictures or text.

    The GIF encoder runs in a worker created from the page’s own code, so nothing is fetched for it either. The browser stores a few settings in local storage and your work in IndexedDB, both on your device only.

    What it does not do

    It does not search the web for meme pictures, remove backgrounds, make video or sync between devices. Stickers are static, also on a GIF. The GIF editor works on up to 600 frames; its colours are limited by the GIF format. Share links never contain pictures. Copying to the clipboard writes a PNG, and a GIF is copied as the frame you see. Autosave and the library need a browser that allows IndexedDB; in a private window they may be switched off, and the page says so.

    More free tools

    Looking for something else? Browse the full list of free tools.