Coyote Time
Letting the player still jump for a few frames after walking off a ledge.
Examples
Captured from this page's own interactive demo below.
Overview
Coyote time keeps the jump available for a short window (typically 70–150ms) after the character has left the ground — named after Wile E. Coyote hanging in the air past the cliff's edge before gravity notices.
It exists because players press jump when their eyes say the character is at the edge — but between reaction time, input latency, and the character's own velocity, the press physically lands a few frames after the ground is gone. Strict physics calls that a miss; players call it 'the controls ate my jump'.
It's the flagship example of input forgiveness: an invisible lie about physics that makes controls feel precise and fair. Nearly every acclaimed platformer (Celeste, Hollow Knight, Super Meat Boy) ships some version of it, and nobody ever notices it's there — they only notice when it's missing.
Interactive Demo
Use Cases
Best Practices
Do
- ✓Keep the window short (70–150ms) — it should absorb reaction-time misses, not enable mid-air jumps players can perceive.
- ✓Track 'time since last grounded' rather than a boolean, so the same timer drives coyote time, animations, and landing logic.
- ✓Consume the coyote window on jump — one forgiven jump per ledge, or players can chain impossible hops.
Don't
- ✕Don't grant coyote time after jumping (only after walking/falling off) — that's an accidental double jump.
- ✕Don't scale the window with frame time inconsistently — define it in seconds, not frames, or 30/60/144 fps players get different games.
- ✕Don't stack coyote time on top of generous ground-check colliders without retuning — the combined forgiveness becomes visible floatiness.
Common Mistakes
- ⚠Checking 'is grounded' at the moment of the jump press instead of 'was grounded recently', which is the entire bug this technique fixes.
- ⚠Resetting the coyote timer when the character becomes airborne for any reason, including jumping — see the double-jump exploit above.
- ⚠Making the window so large (300ms+) that players consciously notice jumps starting from thin air.
Implementation
Paste this into your AI assistant (Cursor, Copilot, Claude) to add the effect to your project.
Add the "Coyote Time" game-feel effect to my project: Letting the player still jump for a few frames after walking off a ledge.
How it works: Coyote time keeps the jump available for a short window (typically 70–150ms) after the character has left the ground — named after Wile E. Coyote hanging in the air past the cliff's edge before gravity notices.
Guidelines:
- Keep the window short (70–150ms) — it should absorb reaction-time misses, not enable mid-air jumps players can perceive.
- Track 'time since last grounded' rather than a boolean, so the same timer drives coyote time, animations, and landing logic.
- Consume the coyote window on jump — one forgiven jump per ledge, or players can chain impossible hops.
Avoid:
- Don't grant coyote time after jumping (only after walking/falling off) — that's an accidental double jump.
- Don't scale the window with frame time inconsistently — define it in seconds, not frames, or 30/60/144 fps players get different games.
- Don't stack coyote time on top of generous ground-check colliders without retuning — the combined forgiveness becomes visible floatiness.
Implement the effect in whatever engine/stack the project already uses and follow its existing code style. Wire it up where it makes sense.References
- Celeste & Forgiveness — Maddy Thorson on assist mechanics and input leniency
- GMTK: Why Does Celeste Feel So Good to Play?
Related Effects
Input Buffering
Remembering a slightly-early input and executing it the moment it becomes possible.
Squash & Stretch
Deforming a shape along its motion to sell weight, speed, and material.
Easing (Slow In / Slow Out)
Accelerating into and decelerating out of motion instead of moving at constant speed.
Comments
…