# \[ANN\] ppx\_format

**URL:** <https://discuss.ocaml.org/t/ann-ppx-format/17211>\
**Category:** Ecosystem\
**Created:** [September 5, 2025, 2:51pm UTC](https://discuss.ocaml.org/t/ann-ppx-format/17211 "2025-09-05T14:51:09Z")\
**Posts on this page:** 1\
**Showing post:** 1

<div class="post-metadata">

**Author:** ![EmileTrotignon](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.ocaml.org/emiletrotignon/32/5913_2.png) [@EmileTrotignon](https://discuss.ocaml.org/u/EmileTrotignon)\
**Post date:** [September 5, 2025, 2:51pm UTC](https://discuss.ocaml.org/t/ann-ppx-format/17211/1 "2025-09-05T14:51:09Z")

</div>

I happy to announce the first release of [ppx\_format](https://github.com/EmileTrotignon/ppx_format).

Its a small ppx rewriter that was first written at the mirage retreat in 24 with @PizieDust , and that allows to put values in the middle of format strings:

```ocaml
let s = "World"
let x = 123
let () = Format.printf {%i|Hello {%s s} {%a Format.pp_print_char % Char.chr 65} {%d x}%!|}

```

Its compatible with any function that takes format strings. The only constraint is that the format string has to be the last argument.

I have used at in some of my projects, and it will be available on opam as soon as the release PR is merged.

---

_[View the full topic](https://discuss.ocaml.org/t/ann-ppx-format/17211)._
