# @tannin/sprintf

> printf string formatter

Latest version **1.3.3** (published 2025-08-30) · MIT license · 0 weekly downloads

## Install

```sh
npm install @tannin/sprintf
pnpm add @tannin/sprintf
yarn add @tannin/sprintf
bun add @tannin/sprintf
```

## Health

**Score 45/100 (D)** — status: stable.

Positive: has types; esm support; no vulnerabilities.

Warnings: low downloads.

Negative: stale.

## Facts

| | |
|---|---|
| Version | 1.3.3 |
| Published | 2025-08-30 |
| First published | 2018-11-05 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | bundled |
| Module format | ESM |
| Dependencies | 0 |
| Unpacked size | 28.4 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 13 |
| Author | Andrew Duthie |
| Maintainers | aduth |

## Links

- npm: https://www.npmjs.com/package/@tannin/sprintf
- Repository: https://github.com/aduth/tannin
- Issues: https://github.com/aduth/tannin/issues
- npm.io page: https://npm.io/package/@tannin/sprintf

## Recent versions

- 1.3.3 (latest) — 2025-08-30
- 1.3.2 — 2025-08-12
- 1.3.1 — 2025-07-19
- 1.3.0 — 2025-06-15
- 1.2.0 — 2020-03-07
- 1.1.0 — 2019-11-27
- 1.0.2 — 2019-03-08
- 1.0.1 — 2019-01-19
- 1.0.0 — 2018-11-05

## README

# `@tannin/sprintf`

Given a format string, returns string with arguments interpolatation. Arguments can either be provided directly via function arguments spread, or with an array as the second argument.

See: [https://en.wikipedia.org/wiki/Printf_format_string](https://en.wikipedia.org/wiki/Printf_format_string)

In addition to basic placeholder substitution, the following options a placeholder are implemented:

- Positional index
- Named arguments
- Precision / maximum width (including `*` precision)
- Type (only the behaviors of `f`, `d`, `s`, and `%` are applied)

Notably, this excludes:

- Flags
- Minimum width (padding)
- Length

## Installation

Using [npm](https://www.npmjs.com/) as a package manager:

```
npm install @tannin/sprintf
```

Otherwise, download a pre-built copy from unpkg:

[https://unpkg.com/@tannin/sprintf/dist/sprintf.min.js](https://unpkg.com/@tannin/sprintf/dist/sprintf.min.js)

## Usage

Using positional arguments:

```js
import sprintf from '@tannin/sprintf';

sprintf('Hello %s!', 'world');
// ⇒ 'Hello world!'
```

Using named arguments:

```js
import sprintf from '@tannin/sprintf';

sprintf('Hello %(place)s! From %(name)s.', { place: 'world', name: 'Andrew' });
// ⇒ 'Hello world! From Andrew.'
```

## Type coercions and default values

When replacing numeric types (`%d` and `%f`), values will be coerced to numeric values, and default to 0:

- `sprintf( '%d', 123 )` returns `'123'`
- `sprintf( '%d', '123' )` returns `'123'`
- `sprintf( '%d', 'string' )` returns `'0'`
- `sprintf( '%d', false )` returns `'0'`
- `sprintf( '%d', null )` returns `'0'`
- `sprintf( '%d', undefined )` returns `'0'`

When replacing string types (`%s`), values will be coerced to strings, and nullish values will be replaced with `''`:

- `sprintf( '%s', 'string' )` returns `'string'`
- `sprintf( '%s', 0 )` returns `'0'`
- `sprintf( '%s', false )` returns `'false'`
- `sprintf( '%s', null )` returns `''`
- `sprintf( '%s', undefined )` returns `''`

## License

Copyright 2019-2025 Andrew Duthie

Released under the [MIT License](https://opensource.org/licenses/MIT).

---
_Source: https://npm.io/package/@tannin/sprintf · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
