
clang-format
Summary
clang-format is a free, open-source set of tools for formatting source code, available as a standalone command-line program and through editor integrations. Its standalone tool formats C, C++, Java, JavaScript, JSON, Objective-C, Protocol Buffers, C#, TableGen, TextProto, and Verilog. You can choose built-in LLVM, GNU, Google, Chromium, Microsoft, Mozilla, or WebKit styles, or set project rules in a .clang-format or _clang-format file. For focused changes, it can format selected lines or byte ranges in one input file; git-clang-format targets lines changed in commits or staged changes, and clang-format-diff.py processes changed lines from unified diff output. A .clang-format-ignore file can exclude paths. Documented editor integrations include Vim, Emacs, BBEdit, CLion, Visual Studio, and Visual Studio Code. Source and pre-built binaries are listed for Windows, macOS, and Linux. The code is licensed under Apache 2.0 with LLVM exceptions.
Who it is for
It suits developers who want consistent source formatting from a standalone tool or editor integration. Its style presets and project-level configuration support teams with established formatting rules.
What is good
- Supports a broad range of programming and text formats.
- Includes seven built-in style presets.
- Can target changed lines in Git workflows.
- Editor integrations are documented for several editors.
- Free and open source under Apache 2.0 with LLVM exceptions.
What to know first
- Line- or byte-range formatting accepts only one input file.
Verdict
clang-format offers configurable formatting through a standalone tool and documented editor integrations. Its single-file limit for line- or byte-range formatting is worth noting for targeted edits.
Compared on code formatting tools
- Free plan
- Yesclang.llvm.org
- Supported languages
- C, C++, Java, JavaScript, JSON, Objective-C, Protocol Buffers, C#, TableGen, TextProto, Verilogclang.llvm.org
- Supported platforms
- Windows, macOS, Linuxclang.llvm.org
- Editor integration
- Yesclang.llvm.org
- Ignore files
- Yesclang.llvm.org
- Changed-lines formatting
- Yesclang.llvm.org
- Library API
- Yesclang.llvm.org
- License model
- open_sourceclang.llvm.org
Facts
- Purpose
- ClangFormat is a set of tools built on LibFormat for formatting source code, available as a standalone tool and through editor integrations.clang.llvm.org · 30 Sept 2026
- Languages
- The standalone tool formats C, C++, Java, JavaScript, JSON, Objective-C, Protobuf, and C# code.clang.llvm.org · 30 Sept 2026
- Configuration
- Formatting styles can be set with command-line options or project-level .clang-format or _clang-format files.clang.llvm.org · 30 Sept 2026
- Style presets
- Built-in style presets include LLVM, GNU, Google, Chromium, Microsoft, Mozilla, and WebKit.clang.llvm.org · 30 Sept 2026
- Editor integrations
- The documentation describes integrations for Vim, Emacs, BBEdit, CLion, Visual Studio, and Visual Studio Code.clang.llvm.org · 30 Sept 2026
- Git workflow
- The git-clang-format script can format lines changed in commits or staged changes.clang.llvm.org · 30 Sept 2026
- Patch workflow
- The clang-format-diff.py script reads unified diff output and reformats the changed lines.clang.llvm.org · 30 Sept 2026
- Selective formatting
- The command-line tool can format specified line or byte ranges in a single input file.clang.llvm.org · 30 Sept 2026
- Ignore rules
- A .clang-format-ignore file can contain path patterns for files that clang-format should skip.clang.llvm.org · 30 Sept 2026
- Windows availability
- The Clang build guide documents building Clang on Windows using Visual Studio.clang.llvm.org · 30 Sept 2026
- Linux and macOS availability
- The Clang guide describes building on Unix-like systems and says Clang is provided by major BSD and GNU/Linux distributions and is the default compiler for Mac OS X from Xcode 4.2.clang.llvm.org · 30 Sept 2026
- License
- The LLVM Project states that its code is licensed under the Apache 2.0 License with LLVM exceptions.llvm.org · 30 Sept 2026
- Support
- The Clang guide directs users who encounter problems to file bugs on the LLVM bug tracker.clang.llvm.org · 30 Sept 2026
- Style configuration
- Users can select built-in LLVM, GNU, Google, Chromium, Microsoft, Mozilla, and WebKit styles or configure formatting in a .clang-format file.clang.llvm.org · 30 Sept 2026
- Git integration
- The git-clang-format script can format lines changed in commits or staged changes.clang.llvm.org · 30 Sept 2026
- Release verification
- LLVM source packages and Git tags are signed by release managers, and the page provides keys for verification.releases.llvm.org · 30 Sept 2026
- Distribution
- The LLVM project provides source and pre-built binary downloads, with listed binaries including Windows, macOS, and Linux platforms.releases.llvm.org · 30 Sept 2026
- Support and community
- LLVM directs users to its Discourse forum and mailing lists, and announces new releases in its Announce category.releases.llvm.org · 30 Sept 2026
- Limit
- Formatting a line range or byte range can only be used with one input file.clang.llvm.org · 30 Sept 2026
- Intended users
- The documentation presents ClangFormat as a standalone tool and editor integration for source-code formatting workflows.clang.llvm.org · 30 Sept 2026
Best clang-format alternatives
See all 12Where it ranks on Everything Xiaomi
- Best Code Formatting Tools in 2026#12 of 34
Is clang-format yours?
Claim it for free: prove the domain, then correct facts, plans and screenshots. An editor reviews every change.
Sources
- clang.llvm.org/docs/ClangFormat.html· checked 30 Sept 2026
- clang.llvm.org/get_started.html· checked 30 Sept 2026
- llvm.org· checked 30 Sept 2026
- releases.llvm.org· checked 30 Sept 2026
- releases.llvm.org/download.html· checked 30 Sept 2026
