BYTETOOLS

justmeme.wtf API

justmeme.wtf exposes 2,400+ meme templates with full-text search, trending ranking and category tags, free and without a key. Rate-limit headers and a live example included.

No API key requiredCORS enabledHTTPSFree tier

Endpoint tested and returned HTTP 200 on 2026-08-21

What is the justmeme.wtf API?

justmeme.wtf is a free meme API with no key that serves a catalogue of over 2,400 templates, each tagged with categories, plus endpoints for full-text search, trending templates and a random pick. It returns 60 requests per minute per IP and reports the budget in response headers.

What separates this from the other meme catalogues is that it was built to be queried. Imgflip gives you the top hundred and nothing else; justmeme.wtf lets you search the whole library by name, pull the trending slice, or filter by category tags such as `reaction`, `comparison` or `drake-format`. For a template picker with a search box — which is what almost every meme feature actually needs — that difference matters more than raw catalogue size.

It is honest about its limits, too. Every response carries `X-RateLimit-Limit` and `X-RateLimit-Remaining`, currently 60 per minute for anonymous callers, so you can back off before you are cut off rather than after. Note that many template image URLs point at Imgflip's CDN: the catalogue, the categories and the search index are this project's work, but a good share of the underlying artwork is not self-hosted, which is worth knowing if you care about long-term link stability.

Quick facts

Base URL
https://justmeme.wtf/api/v1
Authentication
No key and no account for any read endpoint. The AI generation endpoint is separate and is not covered here.
Rate limit
60 requests per minute per IP, reported in `X-RateLimit-Limit` and `X-RateLimit-Remaining` on every response.
Pricing
Free.
CORS
Enabled — callable directly from browser JavaScript
Official docs
Read the docs

How to use the justmeme.wtf API

Every request below was executed against the live API on 2026-08-21, and the response shown is the real body it returned — not an illustration.

1. List the first three meme templates

GET https://justmeme.wtf/api/v1/templates?page=1&limit=3

curl
curl 'https://justmeme.wtf/api/v1/templates?page=1&limit=3'
JavaScript (fetch)
const res = await fetch("https://justmeme.wtf/api/v1/templates?page=1&limit=3");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);
Python (requests)
import requests

res = requests.get("https://justmeme.wtf/api/v1/templates?page=1&limit=3", timeout=20)
res.raise_for_status()
print(res.json())
Response — HTTP 200
{
  "success": true,
  "templates": [
    {
      "id": "drake-hotline-bling",
      "name": "Drake Hotline Bling",
      "slug": "drake-hotline-bling",
      "url": "https://i.imgflip.com/30b1gx.jpg",
      "categories": [
        "comparison",
        "approval",
        "drake-format",
        "classic",
        "trending"
      ]
    },
    {
      "id": "distracted-boyfriend",
      "name": "Distracted Boyfriend",
      "slug": "distracted-boyfriend",
      "url": "https://i.imgflip.com/1ur9b0.jpg",
      "categories": [
        "reaction",
        "relationship",
        "classic",
        "trending",
        "label"
      ]
    },
    {
      "id": "two-buttons",
      "name": "Two Buttons",
      "slug": "two-buttons",
      "url": "https://i.imgflip.com/1g8my4.jpg",
      "categories": [
        "reaction",
        "comparison",
        "label",
        "trending"
      ]
    }
  ],
  "total": 2303,
  "page": 1,
  "limit": 3
}

Parameters

ParameterTypeRequiredDescription
pageintegerOptionalPage number for `/templates`, 1-based. 1
limitintegerOptionalTemplates per page. 3
qstringOptionalSearch term for `/templates/search`. Matches template names. drake
idpath segmentOptionalFetch one template by slug: `/templates/drake-hotline-bling`. drake-hotline-bling

Response fields

successboolean
Request-level status flag, mirroring the HTTP status.
templates[].id / slugstring
Slug identifier, the same value in both fields. Use it for `/templates/{id}`.
templates[].namestring
Display name of the template.
templates[].urlstring
Image URL. Frequently an i.imgflip.com address rather than a self-hosted one.
templates[].categoriesarray of strings
Tags such as `reaction`, `comparison`, `classic` or `trending`. This is the field that makes browsing by mood possible.
X-RateLimit-Remaining (header)header
How many of your 60 requests this minute are left. Read it and back off.

What you can build with the justmeme.wtf API

  • Add a searchable template picker to a meme editor
  • Show a trending row that refreshes without you curating it by hand
  • Filter templates by category to match a post's tone
  • Build a bot that resolves a template by name from a chat command
  • Prototype a meme feature before committing to a paid image API

Common errors and how to fix them

429

You have exceeded 60 requests in a minute from one IP.

Fix: Read `X-RateLimit-Remaining` and pause when it approaches zero. Caching the template list removes almost all of your traffic.

404 on /templates/{id}

The slug does not exist.

Fix: Slugs are lowercase and hyphenated. Resolve names through `/templates/search?q=` rather than guessing them.

Empty results from search

The query matched no template names.

Fix: Search is over names, not categories. To browse by tag, list templates and filter on the `categories` array.

justmeme.wtf API — frequently asked questions

Is justmeme.wtf's meme API free?

Yes, free with no key or account for every read endpoint, capped at 60 requests per minute per IP. The separate AI generation endpoint has its own terms and is not covered here.

How many meme templates does it have?

The project advertises more than 2,400 templates, which is well beyond the hundred that Imgflip's public list returns, and they are searchable and category-tagged rather than only ranked.

Are the images hosted by justmeme.wtf?

Not all of them. A good number of `url` values resolve to i.imgflip.com. The catalogue, tags and search index belong to this project, but you should not assume the artwork is self-hosted and permanent.

Can I call it from browser JavaScript?

Yes. It returns a permissive CORS header, so a direct `fetch()` from the front end works without a proxy.

Tools that pair with this API

justmeme.wtf is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 2026-08-21; always check the official documentation before relying on this API in production, as terms and limits can change.