Keep UI motion under 300ms
Most UI motion stays under 300ms; bigger surfaces get a little more.
Emil Kowalski@emilkowalskiAnimation duration should scale with the size of the animated element. Small UI elements like dropdowns can feel great under ~200ms. But large transitions, like full-screen menus, need more time to avoid feeling abrupt since they feel "heavier". Here's 150ms vs 300ms:
Emil Kowalski@emilkowalskiKeep your animations fast. A faster-spinning spinner makes you think the app loads faster. It improves perceived performance.
Emil Kowalskiemilkowal.skiA 180ms dropdown animation feels more responsive than a 400ms one.
Emil Kowalskiemilkowal.skiUI animations should generally stay under 300ms
From emil-design-eng, “How fast should it be?”.
Same dropdown, 400ms vs 180ms
Open both menus and compare how soon each feels ready.
SlowBad
transition: transform 400ms, opacity 400msFastGood
transition: transform 180ms, opacity 180ms.menu {
transform-origin: top left;
transform: scale(0.96) translateY(-4px);
opacity: 0;
transition: transform 180ms var(--ease-out), opacity 180ms var(--ease-out);
}
.menu[data-open] { transform: none; opacity: 1; }
Duration scales with size
Drag the duration; the dropdown and full-screen menu disagree.
Small: dropdownGood
150ms / 150–250msLarge: full-screenAbrupt
150ms / 250–450ms.dropdown { transition: transform 180ms var(--ease-out), opacity 180ms var(--ease-out); }
.fullscreen { transition: transform 350ms var(--ease-drawer), opacity 350ms var(--ease-drawer); }
Pick an element, get a range
Choose an element, set a duration, then press Play.
180ms · inside 150–250ms for dropdowns
Duplicate
Delete invoice?
This cannot be undone.
Filters
| Element | Duration |
|---|---|
| Button press | 100–160ms |
| Tooltip, small popover | 125–200ms |
| Dropdown, select | 150–250ms |
| Modal | 200–300ms |
| Drawer, sheet | 250–500ms |
:root {
--dur-press: 140ms;
--dur-tooltip: 150ms;
--dur-dropdown: 180ms;
--dur-modal: 250ms;
}
.overlay, .dialog { transition-duration: var(--dur-modal); }
Why it matters, pros and cons
Why it matters
Every millisecond of motion is waiting. Bigger surfaces need a bit more.
Pros
- Feels responsive without changing real performance.
- Frequent actions stop adding up to waiting.
- A small token scale keeps motion consistent.
Cons
- Full-screen menus and sheets need 300–500ms.
- Under ~100ms, a dropdown reads as a flash.
- Explanatory marketing motion can run longer.