Badness is a language server, formatter, and linter designed specifically for LaTeX documents. It addresses the need for deterministic formatting, linting, and improved editor integration for users working with LaTeX, providing tools to parse and analyze LaTeX source files. The tool builds a lossless concrete syntax tree from LaTeX input, ensuring that the original source can be reconstructed byte-for-byte after parsing.
Badness includes three primary components: a formatter (badness format) that applies consistent, deterministic layout to LaTeX source files; a linter (badness lint) that analyzes files and reports diagnostics; and a language server (badness lsp) that integrates these capabilities into compatible editors. The architecture is inspired by rust-analyzer, utilizing a generic, error-tolerant, hand-written parser that produces a lossless syntax tree. Semantic analysis is layered on top of the syntax tree as a separate concern, and the system supports incremental recomputation for efficiency.
The tool is designed to handle generic TeX surface syntax without requiring full macro or catcode resolution, which would otherwise necessitate running a TeX engine. When encountering input it cannot statically recognize, Badness degrades gracefully by creating generic nodes instead of failing. Two core properties are enforced: losslessness (the parsed tree can reconstruct the original input exactly) and idempotence (formatting an already-formatted file results in no changes).
Badness is delivered as a binary that users can install. It supports command-line formatting and linting, as well as integration into editors via its language server.
badness sits in PulseGate's IDEs & code editors category. It automates formatting, linting, and error checking for LaTeX documents to improve code quality and consistency. badness is an open-source project aimed at laTeX users and technical writers. The project is open source (MIT). It runs on the web, the command line, and API.
jolars builds and maintains badness, and the product first shipped in 2026. The project is developed in the open on GitHub with 225 commits in the last 90 days. Among its 5 catalogued features are laTeX linting, formatting, and language server protocol.
Latest indexed changes and source events
Other apps tracked under the same category.