# Typing animation speed: milliseconds per character

> Type 30 ms a character, with 70 ms more after a space and 25% jitter. A terminal steps: it prints a character on a frame with no slide or fade.

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

Type 30 ms a character, with 70 ms more after a space and 25% jitter. 20 to 27 characters a second with pauses at word gaps: 38 in 1.5 s, 35 in 1.3 s, 61 in 3 s. A terminal steps: it prints a character on a frame with no slide or fade.

| Measure | Value |
| --- | --- |
| Job | Typing |
| Duration | 30 ms a character, +70 ms after a space, 25% jitter |

## CSS

```css

```

## Web Animations

```js

```

## Measured source

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

| Preset | Value | Measured |
| --- | --- | --- |
| Typing | 30 ms a character, +70 ms after a space, 25% jitter | 20 to 27 characters a second with pauses at word gaps: 38 in 1.5 s, 35 in 1.3 s, 61 in 3 s. |

## Video components for this job

- [Caret typing](https://vawe.dev/video-components/caret-typing)
- [Caret follow](https://vawe.dev/video-components/caret-follow)

## 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)
- [Send, small arrival](https://vawe.dev/easing/for/send-bubble)
- [Stream](https://vawe.dev/easing/for/text-streaming)

## Related

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