#whatwg #w3c #web-specification #web-standard #bikeshed

app specfmt

Command line tool to format Bikeshed and Wattsi specifications using WHATWG conventions

5 releases

0.2.3 Jan 23, 2023
0.2.2 Jan 22, 2023
0.2.1 Nov 19, 2022
0.2.0 Nov 12, 2022
0.1.0 Nov 4, 2022

#535 in Command line utilities

37 downloads per month

MIT license

411 lines


Like rustfmt and clang-format, but for web specs

It is expected that this tool be used when developing web specifications, such as the Bikeshed specs that WHATWG works on, or even the HTML Standard (which uses a different build system, but that doesn't matter for the purposes of this tool).

specfmt contains adapted and sometimes fixed algorithms from the original rewrapper, ported to Rust.


With Cargo installed, run:

$ cargo install specfmt

To install Cargo (the Rust package manager) follow these instructions.


You can format a web specification file by running:

$ specfmt [file]

Note that file is optional if you're inside the spec directory: specfmt will try and find the unique *.bs file in the current directory, or source (for whatwg/html).

By default, specfmt will:

  • Wrap lines to 100 cols
  • Prevent you from formatting a spec with uncommitted changes
  • Scope its reformatting to changes in the current spec branch

To override any of this behavior, run specfmt --help to see additional command line flags that you can pass in.


~83K SLoC