# Send animation: the spring for a small arrival

> Use a spring with stiffness 500 and damping 25 for a sent message or small arrival. It settles in 0.39 s. Avoid a large panel or any text block: overshoot is 

Canonical: https://vawe.dev/easing/for/send-bubble
Last updated: 2026-11-04

Use a spring with stiffness 500 and damping 25 for a sent message or small arrival. It settles in 0.39 s. A sent bubble in a real product overshoots 11 to 14 percent; the spring gives 12 percent. Avoid a large panel or any text block: overshoot is for small, fast arrivals of 3 to 20 px.

| Measure | Value |
| --- | --- |
| Job | Send, small arrival |
| Duration | 0.39 s to settle, overshoot 12% |

## What to avoid

A large panel or any text block: overshoot is for small, fast arrivals of 3 to 20 px. A counter never springs.

## CSS

```css
@keyframes arrive {
  from { scale: 0; }
  to { scale: 1; }
}

.target {
  animation: arrive 565ms linear(0, 0.0441, 0.1548, 0.303, 0.4652, 0.6237, 0.7665, 0.8862, 0.9798, 1.0472, 1.0906, 1.1136, 1.1203, 1.1149, 1.1016, 1.0837, 1.0642, 1.0452, 1.028, 1.0136, 1.0024, 0.9943, 0.9891, 0.9863, 0.9855, 0.9862, 0.9878, 0.9899, 0.9923, 0.9946, 0.9966, 0.9984, 0.9997, 1.0007, 1.0013, 1.0016, 1.0017, 1.0017, 1.0015, 1.0012, 1) both;
}
```

## Web Animations

```js
el.animate(
  [{ scale: '0' }, { scale: '1' }],
  { duration: 565, easing: 'linear(0, 0.0441, 0.1548, 0.303, 0.4652, 0.6237, 0.7665, 0.8862, 0.9798, 1.0472, 1.0906, 1.1136, 1.1203, 1.1149, 1.1016, 1.0837, 1.0642, 1.0452, 1.028, 1.0136, 1.0024, 0.9943, 0.9891, 0.9863, 0.9855, 0.9862, 0.9878, 0.9899, 0.9923, 0.9946, 0.9966, 0.9984, 0.9997, 1.0007, 1.0013, 1.0016, 1.0017, 1.0017, 1.0015, 1.0012, 1)', fill: 'both' },
);
```

## Measured source

Measured on ChatGPT and Vercel Analytics clips at 30 fps, read off frames, plus or minus 33 ms.

| Preset | Value | Measured |
| --- | --- | --- |
| Send | spring k 500, d 25 | A sent bubble overshoots 11 to 14 percent (x1.11 in 0.1 s). The spring gives 12 percent. |
| Snap | overshoot 9 to 20% | Overshoot is a snap on small, fast arrivals (3 to 20 px). A large panel does not overshoot. |

## Video components for this job

- [Arrival spring](https://vawe.dev/video-components/arrival-spring)

## Other jobs

- [Title or text entrance](https://vawe.dev/easing/for/title-entrance)
- [UI panel or card in](https://vawe.dev/easing/for/panel-entrance)
- [Value change (number swap)](https://vawe.dev/easing/for/number-change)
- [List stagger](https://vawe.dev/easing/for/list-stagger)
- [Small pop or notification](https://vawe.dev/easing/for/notification-pop)
- [Exit](https://vawe.dev/easing/for/exit)
- [Camera move under 2 s](https://vawe.dev/easing/for/short-camera-move)
- [Camera move of 2 s or more](https://vawe.dev/easing/for/long-camera-move)
- [Scan or wipe travel](https://vawe.dev/easing/for/scan-wipe)
- [Hold drift](https://vawe.dev/easing/for/hold-drift)
- [Typing](https://vawe.dev/easing/for/typing)
- [Stream](https://vawe.dev/easing/for/text-streaming)

## Related

- [All easing functions](https://vawe.dev/easing)
