Meme Generation
Generates custom image memes on-the-fly using hundreds of popular templates via the memegen.link API.
SKILL.md
Full skill instructions
name description
meme-generation
Generate relevant memes using the memegen.link API. Use this skill when users request memes, want to add humor to content, or need visual aids for social media. Supports hundreds of popular meme templates with custom text and styling options.
Meme Generation with Memegen.link
This skill enables creation of memes using the free and open-source memegen.link API.
Quick Reference
For comprehensive meme creation guidance:
See Complete Markdown Memes Guide for 15+ textual meme formats (greentext, copypasta, ASCII art, chat logs, Reddit AITA, Tumblr chains, wojak dialogues, etc.) AND image meme techniques
This file focuses on the memegen.link API for image meme generation
Overview
The memegen.link API allows you to:
Generate memes using 100+ popular templates
Add custom top and bottom text
Use custom images as backgrounds
Control dimensions, fonts, and styles
Create animated memes with GIF/WebP support
Quick Start
Basic Meme Structure
URL Format:
https://api.memegen.link/images/{template}/{top_text}/{bottom_text}.{extension}
Example:
https://api.memegen.link/images/buzz/memes/memes_everywhere.png
This generates a Buzz Lightyear meme with "memes" at the top and "memes everywhere" at the bottom.
Text Formatting
Spacing
Use underscores ( _ ) or dashes ( - ) for spaces in text
Example: One_Does_Not_Simply → "One Does Not Simply"
Special Characters
Use URL encoding for special characters
Spaces: _ or -
Newlines: ~n
Question mark: ~q
Percent: ~p
Slash: ~s
Hash/Pound: ~h
Quotes: '' for single, "" for double
Single Line Text
For memes with only one line of text, use an underscore for the empty line:
https://api.memegen.link/images/yodawg/_/your_text_here.png
Available Templates
Popular Templates:
buzz - Buzz Lightyear ("X, X Everywhere")
drake - Drake Hotline Bling (two panels)
doge - Doge (multiple text positions)
distracted - Distracted Boyfriend
changemind - Change My Mind
success - Success Kid
skeptical - Skeptical Third World Kid
awesome - Awesome/Awkward Penguin
yodawg - Yo Dawg
ancient - Ancient Aliens Guy
wonka - Condescending Wonka
View all templates:
API endpoint: https://api.memegen.link/templates/
Interactive docs: https://api.memegen.link/docs/
Advanced Features
Image Formats
Supported Extensions:
.png - Standard format, best quality
.jpg - Smaller file size
.webp - Modern format, good compression
.gif - Animated (if template supports it)
Example:
https://api.memegen.link/images/buzz/memes/memes_everywhere.webp
Dimensions
Width & Height:
?width=800 ?height=600 ?width=800&height=600 (padded to exact dimensions)
Example:
https://api.memegen.link/images/buzz/memes/memes_everywhere.png?width=1200
Layout Options
Control text positioning with the layout parameter:
?layout=top # Text at top only ?layout=bottom # Text at bottom only ?layout=default # Standard top/bottom
Example:
https://api.memegen.link/images/rollsafe/when_you_have/a_good_idea.png?layout=top
Custom Fonts
Available fonts:
View at: https://api.memegen.link/fonts/
Use: ?font=impact (default)
Custom Images
Use any image URL as a background:
?style=https://example.com/your-image.jpg
Example:
https://api.memegen.link/images/custom/hello/world.png?style=https://i.imgur.com/abc123.jpg
Practical Examples
Example 1: Drake Meme
https://api.memegen.link/images/drake/manual_testing/automated_testing.png
Top panel (rejected): "manual testing" Bottom panel (approved): "automated testing"
Example 2: Distracted Boyfriend
https://api.memegen.link/images/distracted/my_code/new_shiny_framework/current_project.png
Boyfriend: "my code"
Other girl: "new shiny framework"
Girlfriend: "current project"
Example 3: One Does Not Simply
https://api.memegen.link/images/mordor/one_does_not_simply/fix_a_bug_without_creating_two_more.png
Example 4: Change My Mind
https://api.memegen.link/images/changemind/tabs_are_better_than_spaces.png
Example 5: Success Kid
https://api.memegen.link/images/success/all_tests_passing/on_the_first_try.png
Example 6: Custom Dimensions
https://api.memegen.link/images/buzz/memes/memes_everywhere.png?width=1200&height=630
Perfect for Open Graph social media sharing (1200x630).
Creating Contextual Memes
For Code Reviews
Template: fry (Futurama Fry - "Not sure if...") https://api.memegen.link/images/fry/not_sure_if_feature/or_bug.png
For Deployments
Template: interesting (The Most Interesting Man) https://api.memegen.link/images/interesting/i_dont_always_test_my_code/but_when_i_do_i_do_it_in_production.png
For Documentation
Template: yodawg https://api.memegen.link/images/yodawg/yo_dawg_i_heard_you_like_docs/so_i_documented_the_documentation.png
For Performance Issues
Template: fine (This is Fine Dog) https://api.memegen.link/images/fine/memory_usage_at_99~/this_is_fine.png
Best Practices
- Keep Text Concise
Memes work best with short, punchy text
Aim for 2-6 words per line
Long text becomes hard to read
- Choose Appropriate Templates
Match the template to your message
Drake = comparisons/choices
Distracted boyfriend = priorities/distractions
Change my mind = controversial opinions
Success kid = victories/wins
- Consider Context
Know your audience
Keep it professional for work contexts
Use humor that resonates with your team
- Optimize for Platform
Social media: 1200x630 (Open Graph)
Slack/Discord: 800x600 works well
GitHub: Default size is fine
- Test Your URLs
Preview memes before sharing
Check for typos in text
Verify template name is correct
Workflow Integration
- Generating Memes in Response
When a user requests a meme or you want to add humor:
Here's a relevant meme about your situation:
![ Meme ] ( https://api.memegen.link/images/buzz/bugs/bugs_everywhere.png )
- Creating Meme Collections
Generate multiple memes for a topic:
base_url = "https://api.memegen.link/images"
memes = [ f" { base_url } /buzz/features/features_everywhere.png" , f" { base_url } /drake/manual_testing/automated_testing.png" , f" { base_url } /success/all_tests_passing/on_first_try.png" ]
for meme in memes : print ( f"" )
- Dynamic Meme Generation
Generate memes based on context:
def generate_status_meme ( status : str , message : str ): template_map = { "success" : "success" , "failure" : "fine" , "review" : "fry" , "deploy" : "interesting" }
template = template_map . get ( status , "buzz" ) top_text = message . split ()[ 0 : 3 ] # First 3 words bottom_text = message . split ()[ 3 : 6 ] # Next 3 words
top = "" . join ( top_text ) bottom = "" . join ( bottom_text )
return f"https://api.memegen.link/images/ { template } / { top } / { bottom } .png"
Template Selection Guide
Comparison/Choice Templates
drake - Two options (reject/approve)
awesome - Good/bad situations (split penguin)
distracted - Priorities/distractions (3 elements)
Reaction Templates
success - Victories and wins
fine - Things going wrong but acting OK
surprised - Unexpected outcomes
yuno - Why aren't you doing X?
Statement Templates
buzz - X, X everywhere
yodawg - Yo dawg, I heard you like X
interesting - I don't always X, but when I do Y
mordor - One does not simply X
changemind - Controversial statement
Questioning Templates
fry - Not sure if X or Y
skeptical - Skeptical about claims
suspicious - Suspicious about something
roll - Points head (you can't X if Y)
Error Handling
If a meme URL doesn't work:
Check template name at https://api.memegen.link/templates/
Verify text formatting (underscores for spaces)
Check for special characters that need encoding
Ensure extension is valid (.png, .jpg, .webp, .gif)
Test in browser before sharing
API Limitations
Free and open-source (no API key needed)
No rate limiting for normal use
Stateless (all info in URL)
No storage (images generated on-demand)
No authentication required
Examples for Egregora Project
Privacy-Focused Memes
For anonymization features
https://api.memegen.link/images/buzz/pii/pii_everywhere.png
For data privacy
https://api.memegen.link/images/success/all_data_anonymized/no_leaks.png
WhatsApp Export Memes
Processing messages
Data pipeline
https://api.memegen.link/images/buzz/dataframes/dataframes_everywhere.png
LLM Content Generation
AI writing
AI confusion
https://api.memegen.link/images/fry/not_sure_if_ai_generated/or_human_written.png
Interactive API Documentation
For complete, interactive documentation:
Docs : https://api.memegen.link/docs/
Templates : https://api.memegen.link/templates/
Fonts : https://api.memegen.link/fonts/
GitHub : https://github.com/jacebrowning/memegen
Tips for Claude
When generating memes:
Listen for keywords : "meme", "funny", "humor", "reaction"
Match context : Choose templates that fit the situation
Be relevant : Connect memes to the current conversation
Preview first : Generate URL and describe what it will show
Embed properly : Use markdown image syntax for display
Respect tone : Only use memes when appropriate for context
Common Mistakes to Avoid
Forgetting underscores - hello world won't work, use hello_world
Wrong template name - Check templates list if unsure
Too much text - Keep it concise and readable
Missing extension - Always include .png , .jpg , etc.
Special characters - Use URL encoding for ?, /, %, etc.
Quick Reference
Basic URL: https://api.memegen.link/images/{template}/{top}/{bottom}.png
With sizing: ?width=1200&height=630
With layout: ?layout=top
With custom background: ?style=https://example.com/image.jpg
View all templates: https://api.memegen.link/templates/
Interactive docs: https://api.memegen.link/docs/
Summary
The memegen.link API is a powerful, free tool for generating contextual memes. Use it to:
Add humor to conversations
Create visual aids for social media
Make code reviews more engaging
Celebrate successes
Communicate complex ideas simply
Remember: A good meme is concise, relevant, and uses the right template for the message.
