[API reference](https://evolu.dev/docs/api-reference) › [@evolu/common](https://evolu.dev/docs/api-reference/common) › [Time](https://evolu.dev/docs/api-reference/common/Time) › DurationLiteral

```ts
type DurationLiteral =
  | DurationLiteralMilliseconds
  | DurationLiteralSeconds
  | DurationLiteralMinutes
  | DurationLiteralHours
  | DurationLiteralDays
  | DurationLiteralWeeks
  | DurationLiteralYears;
```

Defined in: [packages/common/src/Time.ts:216](https://github.com/evoluhq/evolu/blob/e7144e2bbe9069362b62dec1b64a8aa922b8f1b0/packages/common/src/Time.ts#L216)

Duration literal with compile-time validation.

Supported formats:

- Milliseconds: `1ms`, `500ms`, `999ms` (1-999)
- Seconds: `1s`, `59s`, `12.5s` (1-59, 1.1-59.9)
- Minutes: `1m`, `59m`, `12.5m` (1-59, 1.1-59.9)
- Hours: `1h`, `23h`, `12.5h` (1-23, 1.1-23.9)
- Days: `1d`, `6d`, `1.5d` (1-6, 1.1-6.9)
- Weeks: `1w`, `51w`, `1.5w` (1-51, 1.1-51.9)
- Months: not supported (variable length)
- Years: `1y`, `99y`, `1.5y` (1-99, 1.1-99.9)

Each unit is limited to values that can't be expressed in the next larger
unit, ensuring every duration has exactly one canonical representation (e.g.,
1000ms must be written as `"1s"`, not `"1000ms"`).

Decimal values cover cases like 1.5s (1500ms) or 1.5h (90 minutes) without
allowing redundant forms. For precise values that don't fit (e.g., 1050ms),
use [Millis](https://evolu.dev/docs/api-reference/common/Time/variables/Millis) directly.

Zero duration (0ms) is not supported. For yielding without delay, use `await
Promise.resolve()` for microtasks or the [yieldNow](https://evolu.dev/docs/api-reference/common/Task/variables/yieldNow) for macrotasks.

See [Duration](https://evolu.dev/docs/api-reference/common/Time/type-aliases/Duration) for a type that also accepts [Millis](https://evolu.dev/docs/api-reference/common/Time/variables/Millis). Use
[durationToMillis](https://evolu.dev/docs/api-reference/common/Time/functions/durationToMillis) to convert to milliseconds.