Skip to content
memegen-templates logo

Memegen Templates

memegen-templates

Generate classic meme images using 207+ templates from memegen.link. Use when creating memes with popular formats like Drake, Distracted Boyfriend, This is Fine, or any classic internet meme template.

SKILL.md

Full skill instructions

Memegen Templates

Generate classic internet memes using 207+ popular meme templates from memegen.link.

Overview

This Skill provides access to all classic meme formats:

  • 207+ meme templates (Drake, Distracted Boyfriend, Expanding Brain, etc.)
  • FREE API - No API key required
  • URL-based generation - Simple and fast
  • Custom text - Top/​bottom or multi-line text
  • Image overlays - Optional background images

Quick Start

Basic Usage

from src.memegen_api import MemegenAPI

api = MemegenAPI()

# Generate Drake meme
meme_url = api.generate_meme(
    template="drake",
    top_text="Manually creating memes",
    bottom_text="Using memegen templates"
)

print(f"Meme URL: {meme_url}")
# https://api.memegen.link/​images/​drake/​Manually_creating_memes/​Using_memegen_templates.png

Download Meme

# Generate and download
image = api.generate_and_download(
    template="drake",
    top_text="Old way",
    bottom_text="New way"
)

# Save to file
image.save("my_meme.png")

Popular Templates

Top 20 Most Used

TemplateNameFormat
drakeDrake Hotline BlingTop = No, Bottom = Yes
distractedDistracted BoyfriendLeft/​Center/​Right text
iwInhaling SeagullTop/​Bottom
antsDo You Want Ants?Top/​Bottom
afraidAfraid to Ask AndyTop/​Bottom
fineThis is FineTop/​Bottom
expandingExpanding BrainMulti-level
buzzBuzz and WoodyLeft/​Right
bothWhy Not Both?Top/​Bottom
captainCaptain PhillipsTop/​Bottom
wonkaCondescending WonkaTop/​Bottom
xyX, X EverywhereTop/​Bottom
awesomeSocially Awesome PenguinTop/​Bottom
awkwardSocially Awkward PenguinTop/​Bottom
iveI Should Buy a BoatTop/​Bottom
disastergirlDisaster GirlTop/​Bottom
odiOne Does Not SimplyTop/​Bottom
blbBad Luck BrianTop/​Bottom
yunoY U NoTop/​Bottom
successSuccess KidTop/​Bottom

Full list: See TEMPLATE_LIST.md for all 207 templates

Usage Examples

Example 1: Drake Meme

api = MemegenAPI()

# Classic Drake format
meme = api.generate_meme(
    template="drake",
    top_text="Complicated setup",
    bottom_text="One-line API call"
)

Output:

Drake rejecting: "Complicated setup"
Drake approving: "One-line API call"

Example 2: Distracted Boyfriend

# Three-part meme
meme = api.generate_meme(
    template="distracted",
    texts=["Boyfriend", "Girlfriend", "Other Girl"]
)
# Texts: [Left (boyfriend), Center (girlfriend), Right (other girl)]

Example 3: Expanding Brain

# Multi-level intelligence meme
meme = api.generate_meme(
    template="expanding",
    texts=[
        "Small brain idea",
        "Medium brain idea",
        "Big brain idea",
        "Galaxy brain idea"
    ]
)

Example 4: This is Fine

# Classic "This is Fine" dog
meme = api.generate_meme(
    template="fine",
    top_text="Everything is fine",
    bottom_text="*server is on fire*"
)

Example 5: Custom Styling

# With custom styling
meme = api.generate_meme(
    template="drake",
    top_text="Normal memes",
    bottom_text="Customized memes",
    style={
        "font": "impact",
        "color": "white",
        "stroke": "black"
    }
)

Advanced Features

1. Background Images

# Use custom background image
meme = api.generate_with_background(
    template="drake",
    top_text="Stock templates",
    bottom_text="Custom backgrounds",
    background_url="https://example.com/​custom-bg.jpg"
)

2. Multi-Line Text

# Text with line breaks
meme = api.generate_meme(
    template="drake",
    top_text="Single_line_text",
    bottom_text="Multi~nline~ntext"  # ~n = newline
)

3. Special Characters

# Handle special characters
meme = api.generate_meme(
    template="drake",
    top_text="Text with spaces",
    bottom_text="Text_with_underscores"
)
# Spaces → underscores in URL
# Use ~s for literal spaces

4. Batch Generation

# Generate multiple memes
templates = ["drake", "distracted", "fine"]
texts = [
    ("Option A", "Option B"),
    ("Thing 1", "Thing 2", "Thing 3"),
    ("Before", "After")
]

memes = []
for template, text in zip(templates, texts):
    meme = api.generate_meme(template=template, texts=text)
    memes.append(meme)

Template Categories

Advice Animals

  • insanity - Insanity Wolf
  • success - Success Kid
  • awkward - Socially Awkward Penguin
  • awesome - Socially Awesome Penguin
  • blb - Bad Luck Brian
  • fry - Futurama Fry
  • scumbag - Scumbag Steve

Reaction Memes

  • drake - Drake Hotline Bling
  • distracted - Distracted Boyfriend
  • buzz - Buzz and Woody
  • both - Why Not Both?
  • ants - Do You Want Ants?
  • fine - This is Fine

Text-Based

  • expanding - Expanding Brain
  • jetpack - Jetpack Meme
  • troll - Troll Face
  • yuno - Y U No
  • od - Overly Attached Girlfriend

Movie/​TV

  • wonka - Condescending Wonka
  • morpheus - Matrix Morpheus
  • captain - Captain Phillips
  • trek - Star Trek
  • mini - Austin Powers Mini-Me

API Reference

MemegenAPI Class

class MemegenAPI:
    def generate_meme(
        self,
        template: str,
        top_text: str = "",
        bottom_text: str = "",
        texts: list = None,
        style: dict = None
    ) -> str:
        """
        Generate meme URL.

        Args:
            template: Template name (e.g., "drake")
            top_text: Top text (optional)
            bottom_text: Bottom text (optional)
            texts: List of texts for multi-part memes
            style: Custom styling options

        Returns:
            URL to generated meme image
        """

    def generate_and_download(self, ...) -> PIL.Image:
        """Generate meme and download as PIL Image"""

    def list_templates(self) -> list:
        """List all available templates"""

    def get_template_info(self, template: str) -> dict:
        """Get template metadata"""

Common Use Cases

1. Social Media Posts

# Generate for Twitter/​Instagram
meme = api.generate_and_download(
    template="drake",
    top_text="Boring posts",
    bottom_text="Meme posts"
)
meme.save("social_media_post.png")

2. Presentation Slides

# Add humor to presentations
meme = api.generate_meme(
    template="expanding",
    texts=[
        "Basic approach",
        "Optimized approach",
        "Over-engineered approach",
        "Actually using memegen.link"
    ]
)

3. Team Communication

# Internal team memes
meme = api.generate_meme(
    template="fine",
    top_text="Production is down",
    bottom_text="This is fine"
)

4. Content Creation

# Blog posts, videos, etc.
meme = api.generate_meme(
    template="distracted",
    texts=["Old method", "Current workflow", "New shiny tool"]
)

Text Formatting

Special Characters

CharacterEncodingExample
Space_ or ~sHello_World
Newline~nLine1~nLine2
Underscore__Snake__case
Dash- or ~-Hyphen-ated
Question~qWhy~q
Percent~p100~p
Hash~h~htag
Slash~fand~for

Examples

# Multi-line text
api.generate_meme(
    template="drake",
    top_text="Single line",
    bottom_text="Line 1~nLine 2~nLine 3"
)

# Special characters
api.generate_meme(
    template="drake",
    top_text="100~p normal",
    bottom_text="200~p meme power"
)

Error Handling

try:
    meme = api.generate_meme(
        template="invalid_template",
        top_text="Test"
    )
except ValueError as e:
    print(f"Invalid template: {e}")

try:
    meme = api.generate_meme(
        template="drake",
        top_text="",  # Empty text
        bottom_text=""
    )
except ValueError as e:
    print(f"Invalid text: {e}")

Integration Examples

With Lark Bot

# In Lark bot command
def handle_memegen_command(template, top, bottom):
    api = MemegenAPI()
    image = api.generate_and_download(
        template=template,
        top_text=top,
        bottom_text=bottom
    )
    upload_to_lark(image)

With Twitter Bot

# Generate and post to Twitter
api = MemegenAPI()
meme = api.generate_and_download("drake", "Old way", "New way")
twitter_client.post_with_image(
    text="Choose wisely!",
    image=meme
)

With Milady Generator

# Combine with Milady memes
from skills.milady_meme_generator.src.meme_generator_v2 import MemeGeneratorV2

# Generate Milady
milady_gen = MemeGeneratorV2()
milady_img = milady_gen.generate_meme(nft_id=5050)

# Generate classic meme
memegen_api = MemegenAPI()
classic_meme = memegen_api.generate_and_download("drake", "NFTs", "Milady NFTs")

# Combine or use separately

Tips & Best Practices

  1. Keep text short - Max 2-3 words per line works best
  2. Use appropriate templates - Match format to message
  3. Test special characters - Preview before sharing
  4. Cache downloads - Save bandwidth on repeated use
  5. Batch process - Generate multiple at once for efficiency

Troubleshooting

Template not found:

# Check available templates
templates = api.list_templates()
print(templates)

Image not loading:

# Use download instead of URL
image = api.generate_and_download(...)  # More reliable

Text formatting issues:

# Use encoding helper
text = api.encode_text("Hello, World!")  # Handles special chars

Related Skills


Cost: FREE (memegen.link is a free service)

API Docs: https://memegen.link/

More skills from majiayu000

xiaohongshu logo
majiayu000/claude-arsenal

xiaohongshu

xiaohongshu

286 148
View
agent-task-conductor logo
majiayu000/claude-skill-registry

agent-task-conductor

Conduct multi-agent task orchestration and workflow coordination.

663 1
View
conductor-setup logo
majiayu000/claude-skill-registry

conductor-setup

Initialize project with Conductor artifacts (product definition,

663 1
View
animation-designer logo
majiayu000/claude-skill-registry

animation-designer

Expert in web animations, transitions, and motion design using Framer Motion and CSS

663 1
View
diagramming logo
majiayu000/claude-skill-registry

diagramming

Creates Mermaid and ASCII diagrams for flowcharts, architecture, ERDs, state machines, mindmaps, and more. Use when user mentions diagram, flowchart, mermaid, ASCII diagram, text diagram, terminal diagram, visualize, C4, mindmap, architecture diagram, sequence diagram, ERD, or needs visual docume...

663 1
View
h3-pg logo
majiayu000/claude-skill-registry-data

h3-pg

PostgreSQL bindings for H3 hexagonal grid system. Use when working with H3 cells in Postgres, including spatial indexing, geometry/geography integration, and raster analysis.

23 1
View
conductor-development logo
majiayu000/claude-skill-registry

conductor-development

Context-Driven Development skill for projects using Conductor. Use this skill when you detect a `conductor/` directory in the project, when working on tasks defined in a `plan.md` file, or when the user asks about tracks, specs, or plans. Automatically applies TDD workflow, tracks task completion...

663 1
View
conductor-status logo
majiayu000/claude-skill-registry

conductor-status

Display project status, active tracks, and next actions

663 1
View
dockerization logo
majiayu000/claude-skill-registry

dockerization

Official Stakpak application containerization standard operating procedure, a step-by-step guidline to properly dockerize applications. This is a rule book curated by the Stakpak Team.

663 1
View

Popular AI tools

Kaiber logo
Video

Kaiber

Generate, edit, and beat-sync AI video with leading models in one workspace.

Paid
View
Vimcal logo
Productivity

Vimcal

The world's fastest calendar for remote work

Free
View

Transform Your Design with AI Designer by ImgCreator.ai

Freemium
View
Akool AI logo
Content & writing

Akool AI

Revolutionizing Video Production with AI-Powered Creativity

Paid
View

Extend an image past the frame and let AI fill the new aspect ratio.

Freemium
View
StarByFace logo
Security

StarByFace

Discover your celebrity doppelgänger with StarByFace!

Free
View
C

ChainClarity explains 700+ crypto whitepapers in plain English, with layered summaries, comparisons, research tools, alerts, and a $4.99 Pro plan.

Freemium
View
Opus Clip logo
Coding & apps

Opus Clip

Opus.ai: Revolutionize Your Web Experience

Free
View