OpenAI o4 Mini High vs MiniMax M1
Compare OpenAI o4 Mini High by OpenAI against MiniMax M1 by MiniMax, context windows of 200K vs 1.0M, tested across 22 shared challenges. Updated February 2026.
Compare OpenAI o4 Mini High by OpenAI against MiniMax M1 by MiniMax, context windows of 200K vs 1.0M, tested across 22 shared challenges. Updated February 2026.
22 challenges
Tests an AI's ability to generate vector graphics
Tests an AI's ability to create detailed SVG illustrations of gaming hardware
Tests an AI's humor and creative writing ability
Hey everyone, how's it going tonight? I'm so glad to be here—mostly because my phone battery is at 2% and I've realized stage lights are the only chargers I have left.
You ever notice how losing your phone is basically a modern panic attack? You pat every pocket like you're defusing a bomb: "Is it in my jeans? The couch? The fridge—because that's obviously where I left it during last night's snack-fest?" And once you actually find it, it's like reuniting with a needy ex. It's vibrating, chirping, begging for updates you don't even remember downloading.
My daily cardio routine is opening apps. Instagram, TikTok, Twitter—two hours later I'm deeply invested in someone's tutorial on how to train your cat not to vomit on your favorite rug. Have you ever tried replying to a midnight group chat? Your thumbs start logging miles on the keyboard, you wake up to 47 notifications… none of which you can respond to before coffee. Coffee, by the way, is the only adult decision I'll make before 9 a.m. It's judged if you skip it, celebrated if you have three cups, and somehow worth its weight in gold.
Speaking of independence, I attempted self-checkout at the grocery store. Bad move. I scanned a cucumber ten times. The machine yells, "Unexpected item in the bagging area!" I hold it up like it's contraband. There's a security guard in the aisle giving me that "Not again, Greg" look. Finally a cashier comes over, fixes it in two seconds, and I swear the whole queue applauded. Self-checkout technology—it's there just to remind you you're terrible at adulting.
Then there's online dating, which I tried as sort of an outsourced therapy session. On my first date, I show up ten minutes late because my phone was desperately clinging to 30%. We start chatting, and ten minutes in, I realize I'm texting my mom under the table. My date gives me the side-eye: "Everything okay?" And I'm like, "Sure, I just need to make sure mom knows I didn't get abducted." Nothing kills romance like a group chat with your parents.
I've seen a therapist, too. He said, "Try journaling your feelings." I took it literally—now I show up with bullet points, bar graphs, and color-coded mood charts. Last session he said, "Put the pie charts away." I think I saw a tear in his eye.
So here I am, my phone gasping its last breath, my lettuce roasted by fluorescent lights, and my therapist off maternity leave soon. If anyone's got a charger, a cucumber that scans itself, or a date who doesn't judge midnight texts to your mom, I'm all ears. You've been awesome—thank you, good night!
Title: "Modern Life: A Masterclass in Absurdity"
(Lights up. Comedian steps onto stage, grinning.)
Hey everyone! Thanks for coming out. I'm just here to talk about... gestures vaguely... all this. You know, life. Specifically, how we're all just winging it. Like, when did "adulting" become a verb? I swear, the only thing I've mastered is forgetting why I walked into a room.
Let's start with phones. We're all glued to them, right? I saw a couple on a date last night—both on their
phones. The only time they looked up was to take a selfie together. #RelationshipGoals.
We're so connected, but we can't even make eye contact. I tried to talk to my friend at a café, and he said,
"Hold on, I'm tagging my coffee." Tagging. As if the latte's gonna get a sponsorship deal.
And why do we take 20 photos of the same meal? "Had a great burger!" snaps 15 pics "Wait, the lighting's better here." snaps 10 more By the time you post it, the burger's cold. But hey, at least the aesthetic is perfect.
(Pauses, mock-serious.)
Social media's turned us into over-sharers. "Just saw a cool bug!" posts 15 pics "My cat sneezed!" live streams it We're not living life—we're just creating content for life.
(Shifts tone, mimics texting.)
And why do we text everything? I called my friend, and he goes, "Who calls anymore? Just text me." So I texted: "Call me." He replied, "Why? Just text." I said, "I need to talk." He said, "About what?" I said, "This." He said, "This is why we text."
(Shrugs, grinning.)
We've become a species that'd rather send a voice memo than have a conversation. "Hey, check out this 10-minute rant about my neighbor's hedge!" plays clip of wind noise
(Picks up pace.)
And let's talk about "notifications." My phone buzzes constantly. I've trained myself to ignore it—like a dog hearing a bell it knows doesn't mean food. "Oh, another email? Cool, I'll just... stares into middle distance... exist in this void."
We're all just... checks phone... distracted. I tried to read a book last week. Got three chapters in before I thought, "This would make a great tweet."
(Closes, softer.)
But hey, maybe I'm overcomplicating it. Maybe we're all just trying to feel less alone in a world that's too connected. Or maybe we're just bored. Either way, thanks for laughing. And if you're recording this on your phone... smirks... tag me.
(Exits, waving.)
Runtime: ~3 minutes. Relies on observational humor, relatable tech/social media quirks, and a conversational tone. No puns—just exaggerated truths about modern life.
Tests an AI's ability to generate a complete, working landing page
Recreate an interactive, nostalgic Pokémon battle UI in a single HTML file.
Recreate an interactive, classic Mario level in a single HTML file.
Couldn't render this response
This model didn't return a displayable web page for this challenge.
<!DOCTYPE html>
<html>
<head>
<title>Super Mario Bros. Level</title>
>
<style>
body {
margin: 0;
overflow: hidden;
background: #87CEEB;
font-family: 'Press Start 2P', system-ui, -apple-system, sans-serif;
}
#gameCanvas {
display: block;
margin: 0 auto;
background: #87CEEB;
}
#score {
position: absolute;
top: 20px;
left: 20px;
color: white;
font-size: 20px;
text-shadow: 2px 2px 0 #000;
}
#instructions {
position: absolute;
bottom: 20px;
left: 20px;
color: white;
font-size: 14px;
text-shadow: 1px 1px 0 #000;
}
</style>
>
</head>
<body<body>
<div id="score">SCORE: 0</div>
<div id="instructions">←→ TO MOVE | ↑ TO JUMP | REACH THE FLAG!!</div>
<canvas id="gameCanvas" width="800" height="600">"></canvas>
>
<script>
const canvas = document.getElementById('gameCanvas');
const ctx = canvas.getContext('2d');
let score = 0;
const gravity = 0.5;
const friction = 0.8;
// Game objects
const mario = {
x: 50,
y: 450,
width: 40,
height: 60,
speed: 5,
velX: 0,
velY: 0,
grounded: false,
jumping: false,
color: '#FF0000'
};
const platforms = [
{ x: 0, y: 550, width: 800, height: 50, color: '#8B4513' }, // Ground
{ x: 200, y: 450, width: 100, height: 20, color: '#8B4513' }, // Platform 1
{ x: 400, y: 350, width: 100, height: 20, color: '#8B4513' }, // Platform 2
{ x: 600, y: 250, width: 100, height: 20, color: '#8B4513' } // Platform 3
];
const enemies = [
{ x: 250, y: 430, width: 30, height: 30, velX: 2, color: '#000000' },
{ x: 450, y: 330, width: 30, height: 30, velX: 2, color: '#000000' },
{ x: 650, y: 230, width: 30, height: 30, velX: 2, color: '#000000' }
];
const coins = [
{ x: 220, y: 430, width: 20, height: 20, collected: false, color: '#FFD700' },
{ x: 420, y: 330, width: 20, height: 20, collected: false, color: '#FFD700' },
{ x: 620, y: 230, width: 20, height: 20, collected: false, color: '#FFD700' }
];
const flag = { x: 700, y: 200, width: 30, height: 50, color: '#00FF00' };
// Input handling
const keys = {};
document.addEventListener('keydown', e => keys[e.key] = true);
document.addEventListener('keyup', e => keys[e.key] = false);
// Game loop
function gameLoop() {
// Clear canvas
ctx.fillStyle = '#87CEEB';
ctx.fillRect(0, 0, canvas.width, canvas.height);
// Draw clouds
drawClouds();
// Update Mario
updateMario();
// Update enemies
updateEnemies();
// Check collisions
checkCollisions();
// Draw game elements
drawGameElements();
requestAnimationFrame(gameLoop);
}
function updateMario() {
// Movement
if (keys['ArrowLeft']) mario.velX = -mario.speed;
if (keys['ArrowRight']) mario.velX = mario.speed;
if (keys['ArrowUp'] && mario.grounded) {
mario.velY = -12;
mario.grounded = false;
}
// Physics
mario.velX *= friction;
mario.velY += gravity;
mario.x += mario.velX;
mario.y += mario.velY;
// Boundaries
if (mario.x < 0) mario.x = 0;
if (mario.x + mario.width > canvas.width) mario.x = canvas.width - mario.width;
// Reset if fallen off
if (mario.y > canvas.height) {
mario.x = 50;
mario.y = 450;
mario.velY = 0;
}
// Platform collision
mario.grounded = false;
platforms.forEach(p => {
if (mario.x + mario.width > p.x &&
mario.x < p.x + p.width &&
mario.y + mario.height >= p.y &&
mario.y + mario.height <= p.y + 10 &&
mario.velY > 0) {
mario.grounded = true;
mario.y = p.y - mario.height;
mario.velY = 0;
}
});
}
function updateEnemies() {
enemies.forEach((e, index) => {
e.x += e.velX;
// Platform collision
platforms.forEach(p => {
if (e.x + e.width > p.x &&
e.x < p.x + p.width &&
e.y + e.height >= p.y &&
e.y + e.height <= p.y + 5) {
if (e.x <= p.x || e.x + e.width >= p.x + p.width) {
e.velX *= -1;
}
}
});
});
}
function checkCollisions() {
// Enemy collision
enemies.forEach((e, index) => {
if (mario.x + mario.width > e.x &&
mario.x < e.x + e.width &&
mario.y + mario.height > e.y &&
mario.y < e.y + e.height) {
if (mario.velY > 0 && mario.y + mario.height < e.y + e.height) {
enemies.splice(index, 1);
mario.velY = -10;
score += 20;
} else {
mario.x = 50;
mario.y = 450;
mario.velY = 0;
}
}
});
// Coin collection
coins.forEach(c => {
if (!c.collected &&
mario.x + mario.width > c.x &&
mario.x < c.x + c.width &&
mario.y + mario.height > c.y &&
mario.y < c.y + c.height) {
c.collected = true;
score += 10;
}
});
// Flag collision (win condition)
if (mario.x + mario.width > flag.x &&
mario.x < flag.x + flag.width &&
mario.y + mario.height > flag.y &&
mario.y < flag.y + flag.height) {
alert('YOU WIN!\nSCORE: ' + score + '');
resetGame();
}
// Update score display
document.getElementById('score').textContent = 'SCORE: ' + score + '';
}
function drawGameElements() {
// Draw platforms
platforms.forEach(p => {
ctx.fillStyle = p.color;
ctx.fillRect(p.x, p.y, p.width, p.height);
});
// Draw coins
coins.forEach(c => {
if (!c.collected) {
ctx.fillStyle = c.color;
ctx.beginPath();
ctx.arc(c.x + 10, c.y + 10, 10, 0, Math.PI * 2);
ctx.fill();
}
});
// Draw enemies
enemies.forEach(e => {
ctx.fillStyle = e.color;
ctx.fillRect(e.x, e.y, e.width, e.height);
// Draw eyes
ctx.fillStyle = 'white';
ctx.fillRect(e.x + 7, e.y + 8, 5, 5);
ctx.fillRect(e.x + 18, e.y + 8, 5, 5);
});
// Draw flag
ctx.fillStyle = flag.color;
ctx.fillRect(flag.x, flag.y, flag.width, flag.height);
// Flag pole
ctx.strokeStyle = '#654321';
ctx.lineWidth = 5;
ctx.beginPath();
ctx.moveTo(flag.x, 250);
ctx.lineTo(flag.x, flag.y);
ctx.stroke();
// Draw Mario
ctx.fillStyle = mario.color;
ctx.fillRect(mario.x, mario.y, mario.width, mario.height);
// Mario eyes
ctx.fillStyle = 'white';
ctx.fillRect(mario.x + 10, mario.y + 15, 8, 8);
ctx.fillRect(mario.x + 22, mario.y + 15, 8, 8);
}
function drawClouds() {
ctx.fillStyle = 'rgba(255, 255, 255, 0.8)';
// Cloud 1
ctx.beginPath();
ctx.arc(100, 100, 20, 0, Math.PI * 2);
ctx.arc(130, 90, 20, 0, Math.PI * 2);
ctx.arc(160, 100, 20, 0, Math.PI * 2);
ctx.fill();
// Cloud 2
ctx.beginPath();
ctx.arc(600, 150, 20, 0, Math.PI * 2);
ctx.arc(630, 140, 20, 0, Math.PI * 2);
ctx.arc(660, 150, 20, 0, Math.PI * 2);
ctx.fill();
}
function resetGame() {
mario.x = 50;
mario.y = 450;
mario.velY = 0;
coins.forEach(c => c.collected = false);
score = 0;
enemies.push(
{ x: 250, y: 430, width: 30, height: 30, velX: 2, color: '#000000' },
{ x: 450, y: 330, width: 30, height: 30, velX: 2, color: '#000000' },
{ x: 650, y: 230, width: 30, height: 30, velX: 2, color: '#000000' }
);
}
// Start game
gameLoop();
</script>
>
</body>
</htmlhtml>Tests an AI's ability to create a detailed world map in SVG format
Generate a single-page, self-contained HTML webapp using Tailwind CSS for a randomly chosen category/industry/niche.
Generate SVG art of a randomly chosen animal in a setting of its choosing.
Generate a unique and simple recipe with common ingredients.
Create a starter plan for improving long-term health.
Design a simple interactive virtual pet.