EVERYTHING XIAOMI
Get listed

Ormolu

Ormolu formats Haskell source code using GHC’s parser.

Place
#9 of 34
Score
6.4
Ormolu's website

What Ormolu is

Ormolu formats Haskell source code using GHC’s parser. It applies one consistent style intended to produce minimal diffs, and that style cannot be configured. The project aims for idempotence: code already formatted to its rules should remain unchanged when formatted again. Ormolu provides release binaries for Linux, macOS, and Windows, and it can also be installed with cabal or stack. Ormolu Live offers a browser version. Listed editor integrations cover Emacs, VS Code, and Vim through neoformat or vim-ormolu; Haskell Language Server also has built-in support for using Ormolu. For continuous integration, the project recommends the run-ormolu GitHub Action. Ormolu finds the matching Cabal file for default language extensions and dependencies, and .ormolu files can provide fixity overrides and module re-export instructions. CPP support is experimental and limited to simple cases where conditionals surround top-level declarations. The project is open source and listed as free.

Good

  • Uses GHC’s parser
  • Provides binaries for Linux, macOS, and Windows
  • Lists integrations for several editors
  • Includes Haskell Language Server support
  • Supports Cabal defaults and .ormolu instructions

Watch out

  • Formatting style cannot be configured
  • CPP support is experimental and limited

Who it suits

Ormolu suits Haskell developers who want a single shared formatting style across editors or CI. It also offers a browser version for trying the formatter without installing the desktop binaries.

Verdict

Ormolu offers a consistent Haskell formatter with editor, language-server, and CI options. Its fixed style is a constraint for teams that need configurable formatting, and CPP handling is limited.

Plans and prices

From Ormolu's own pricing page, checked 9 Oct 2026.

All about pricing
PlanPriceWhat it gives you
OrmoluFreeOpen-source Haskell formatter

The facts

Each one read from Ormolu's own pages, with the date it was checked.

Where it runs

Browser version
Ormolu can be tried in a browser through Ormolu Live.checked 9 Oct 2026

What it does

CI integration
The project recommends the run-ormolu GitHub Action to keep a project formatted.checked 9 Oct 2026
Editor integrations
The README lists integrations for Emacs, VS Code, and Vim through neoformat or vim-ormolu.checked 9 Oct 2026
Formatting style
It implements one consistent formatting style that does not admit configuration and aims to produce minimal diffs.checked 9 Oct 2026
Idempotence
The project aims to ensure formatting already formatted code does not change it.checked 9 Oct 2026
Installation
The release page provides binaries for Linux, macOS, and Windows, and the project can also be installed with cabal or stack.checked 9 Oct 2026
Language server
Haskell Language Server has built-in support for using Ormolu as a formatter.checked 9 Oct 2026
License
The project’s license permits redistribution and use in source and binary forms subject to stated conditions and provides the software “as is.”checked 9 Oct 2026
Limitations
CPP support is experimental and works only in simple cases where CPP conditionals surround top-level declarations.checked 9 Oct 2026
Maintainer history
The README credits Mark Karpov as author and main maintainer during his employment at Tweag from 2019 to 2026.checked 9 Oct 2026
Parser
It uses GHC’s parser to avoid parsing problems caused by haskell-src-exts.checked 9 Oct 2026
Project configuration
Ormolu finds the matching Cabal file to read default language extensions and dependencies, and supports fixity overrides and module re-export instructions in .ormolu files.checked 9 Oct 2026
Purpose
Ormolu is a formatter for Haskell source code.checked 9 Oct 2026

The company

Maker
Tweag describes itself as a software innovation lab and lists Ormolu among its Haskell ecosystem tools.checked 9 Oct 2026
The full review of Ormolu

Ormolu is a free formatter for Haskell source code, built for developers who want one dependable style across local editors and automated checks. It is strongest for teams standardising a Cabal-based codebase; projects that require selectable layout rules or extensive CPP support should look elsewhere.

Overview

Ormolu uses GHC’s parser rather than haskell-src-exts, reducing a class of parsing problems that can interrupt formatting. Its design deliberately favours a single, consistent style and minimal diffs. The project also aims for idempotence: once code is formatted, running Ormolu again should not keep changing it. That makes pull-request diffs easier to read and helps a team enforce a stable baseline, but the same policy removes the ability to accommodate competing house styles.

Key features

Installation is flexible. Release binaries cover Linux, macOS, and Windows, while cabal and stack provide installation routes familiar to Haskell developers. Ormolu Live supplies a browser version for trying the formatter or checking an isolated snippet before committing to local setup. It is a useful low-friction demonstration, although serious projects will still need a repeatable local or CI installation.

Editor integration reaches Emacs, VS Code, and Vim through neoformat or vim-ormolu. Haskell Language Server has built-in support for selecting Ormolu as its formatter, so formatting can happen alongside normal language tooling rather than through a separate manual command. For repositories, the recommended run-ormolu GitHub Action applies the same rule set in CI, giving maintainers an automated way to catch unformatted changes.

Ormolu adds project context without turning its style into a preference system. It can locate the matching Cabal file and read default language extensions and dependencies. An .ormolu file can provide fixity overrides and module re-export instructions. Those controls help the formatter understand a project’s declarations and imports, while the core arrangement remains fixed. CPP support is the notable boundary: it is experimental and works only in simple cases where conditionals surround top-level declarations. Codebases with more involved preprocessor structure should not make Ormolu their sole formatting safeguard.

Pricing

Ormolu costs nothing under its open-source plan. The plan is the formatter itself, with Haskell support, editor integration, a library API, and Linux, macOS, Windows, and web availability. There are no paid tiers, seat charges, usage quotas, trial deadlines, or renewal terms to manage. That makes it suitable for individual developers, open-source maintainers, and companies that want to standardise formatting without procurement overhead. The trade-off is that support and service guarantees are not presented as a commercial subscription benefit.

Platforms

Supported platforms are Linux, macOS, Windows, and the web. Native release binaries cover the three desktop operating systems, cabal and stack offer package-based installation, and Ormolu Live handles browser use. The tool is Haskell-specific, so its platform breadth does not translate into multi-language formatting.

Who it's for

Ormolu is a good fit for Haskell teams that value identical output in editors, Haskell Language Server, and CI, especially when their project already has a Cabal file whose extensions and dependencies should inform formatting. Its minimal-diff goal is helpful where review noise matters, and the free open-source model works for both personal and organisational use.

Choose another formatter when contributors need configurable indentation or layout rules, or when the code relies heavily on CPP beyond top-level declaration guards. Ormolu’s fixed style is a deliberate constraint, not a setting to be tuned per repository.

Pros and cons

Pros

  • GHC-based parsing: uses the compiler’s parser to avoid haskell-src-exts-related parsing issues.
  • Stable, small diffs: a single style and an idempotence goal reduce churn in reviews.
  • Broad workflow coverage: binaries, package installation, editor integrations, Haskell Language Server, browser access, and a recommended GitHub Action cover common development paths.
  • Project-aware context: Cabal discovery plus .ormolu fixity and re-export instructions can improve results for real modules.
  • No software charge: the open-source plan is free with no stated seat or quota limits.

Cons

  • No style configuration: teams cannot adapt the formatter’s layout rules to local preferences.
  • Limited CPP handling: experimental support is restricted to simple top-level conditional cases.
  • Haskell only: it cannot serve as a shared formatter for polyglot repositories.

Alternatives

For another Haskell formatter with a free open-source plan, compare Fourmolu. Choose Black for Python, Fantomas for F#, or rustfmt for Rust. Zig fmt is the formatter included with the Zig toolchain, while goimports is a free open-source command-line option for Go. Prettier is the broader choice for projects spanning its supported web and programming-language ecosystems. Accessibility Test Framework for Android is a free Android-focused alternative for a different testing purpose. Browse Code Formatting Tools for the wider category.

Verdict

Choose Ormolu when your Haskell project needs one free, repeatable formatter that can run in editors, Haskell Language Server, and CI with minimal diff noise. Its strongest reason to leave is equally clear: teams needing configurable style or robust formatting around complex CPP should choose a more adaptable tool.

Alternatives to Ormolu

All alternatives
  1. 1Prettier logo

    Prettier

    Free planOpen sourceWebAPIExtensionLinux
    7.5Free plan
  2. 2

    Avidemux

    Free planOpen sourceWebLinuxmacOSWindows
    7.3Free plan
  3. 3

    Fourmolu

    Free planWebLinuxWindows
    6.7Free plan
  4. 4

    rustfmt

    Free planLinuxmacOSWindows
    6.6Free plan
  5. 5

    Black

    Free planLinuxmacOSSelf-hostedWindows
    6.5Free plan
  6. 6Ruff logo

    Ruff

    Free planWebLinuxmacOSSelf-hosted
    6.5Free plan