Meme Factory
Create memes using the free memegen.link API and textual meme formats.
Triggers
| Trigger |
Description |
/meme-factory |
Manual invocation |
/meme-factory {template} {top} {bottom} |
Direct meme generation |
meme-factory: create a meme about X |
Natural language request |
Quick Reference
Additional Resources:
Quick Start
Basic Meme Structure
https://api.memegen.link/images/{template}/{top_text}/{bottom_text}.{extension}
Example:
https://api.memegen.link/images/buzz/memes/memes_everywhere.png
Result: Buzz Lightyear meme with "memes" at top and "memes everywhere" at bottom.
Text Formatting
| Character |
Encoding |
| Space |
_ or - |
| Newline |
~n |
| Question mark |
~q |
| Percent |
~p |
| Slash |
~s |
| Hash |
~h |
| Single quote |
'' |
| Double quote |
"" |
Popular Templates
| Template |
Use Case |
Example |
buzz |
X, X everywhere |
bugs/bugs_everywhere |
drake |
Comparisons |
manual_testing/automated_testing |
success |
Victories |
deployed/no_errors |
fine |
Things going wrong |
server_on_fire/this_is_fine |
fry |
Uncertainty |
not_sure_if_bug/or_feature |
changemind |
Hot takes |
tabs_are_better_than_spaces |
distracted |
Priorities |
my_code/new_framework/current_project |
mordor |
One does not simply |
one_does_not_simply/deploy_on_friday |
Template Selection Guide
| Context |
Template |
Why |
| Comparing options |
drake |
Two-panel reject/approve format |
| Celebrating wins |
success |
Positive outcome emphasis |
| Problems ignored |
fine |
Ironic "everything is fine" |
| Uncertainty |
fry |
"Not sure if X or Y" format |
| Controversial opinion |
changemind |
Statement + challenge |
| Ubiquitous things |
buzz |
"X, X everywhere" |
| Bad ideas |
mordor |
"One does not simply..." |
Validation
After generating a meme:
Platform Dimensions
| Platform |
Dimensions |
| Social media (Open Graph) |
1200x630 |
| Slack/Discord |
800x600 |
| GitHub |
Default |
Anti-Patterns
| Avoid |
Why |
Instead |
| Spaces without encoding |
URL breaks |
Use _ or - |
| Too much text |
Unreadable |
2-6 words per line |
| Wrong template |
Message mismatch |
Match template to context |
| Missing extension |
Invalid URL |
Always include .png, .jpg, etc. |
| Unencoded special chars |
URL breaks |
Use ~q, ~s, ~p, etc. |
| Assuming template exists |
404 error |
Check templates list first |
Verification
Meme generation is successful when:
- URL is valid - Returns HTTP 200
- Image renders - Displays correctly in markdown
- Text is visible - Properly formatted on image
- Context matches - Template fits the message
Test command:
curl -I "https://api.memegen.link/images/buzz/test/test.png"
Image Formats
| Extension |
Use Case |
.png |
Best quality, default |
.jpg |
Smaller file size |
.webp |
Modern, good compression |
.gif |
Animated templates |
Dimensions
?width=800
?height=600
?width=800&height=600 (padded to exact)
Layout Options
?layout=top # Text at top only
?layout=bottom # Text at bottom only
?layout=default # Standard top/bottom
Custom Fonts
View available: https://api.memegen.link/fonts/
?font=impact (default)
Custom Images
Use any image as background:
https://api.memegen.link/images/custom/hello/world.png?style=https://example.com/image.jpg
Code Reviews
Template: fry
https://api.memegen.link/images/fry/not_sure_if_feature/or_bug.png
Deployments
Template: interesting
https://api.memegen.link/images/interesting/i_dont_always_test/but_when_i_do_i_do_it_in_production.png
Documentation
Template: yodawg
https://api.memegen.link/images/yodawg/yo_dawg_i_heard_you_like_docs/so_i_documented_the_documentation.png
Performance Issues
Template: fine
https://api.memegen.link/images/fine/memory_usage_at_99~/this_is_fine.png
Successful Deploy
Template: success
https://api.memegen.link/images/success/deployed_to_production/zero_downtime.png
Generating Memes in Response
Here's a relevant meme:

Dynamic Generation (Python)
def generate_status_meme(status: str, message: str):
template_map = {
"success": "success",
"failure": "fine",
"review": "fry",
"deploy": "interesting"
}
template = template_map.get(status, "buzz")
words = message.split()
top = "_".join(words[0:3])
bottom = "_".join(words[3:6])
return f"https://api.memegen.link/images/{template}/{top}/{bottom}.png"
Using the Helper Script
from meme_generator import MemeGenerator
meme = MemeGenerator()
url = meme.generate("buzz", "features", "features everywhere")
print(url)
Endpoints
| Endpoint |
Purpose |
/templates/ |
List all templates |
/templates/{id} |
Template details |
/fonts/ |
Available fonts |
/images/{template}/{top}/{bottom}.{ext} |
Generate meme |
API Characteristics
- Free and open-source
- No API key required
- No rate limiting (normal use)
- Stateless (all info in URL)
- Images generated on-demand
Error Handling
- Check template at https://api.memegen.link/templates/
- Verify text formatting (underscores for spaces)
- Check special character encoding
- Ensure valid extension
- Test URL in browser
References
Scripts
Summary
Generate contextual memes to:
- Add humor to conversations
- Create social media visuals
- Make code reviews engaging
- Celebrate successes
Golden rule: Keep text concise, match template to context.