UNiversal File... Korrector?
A fast CLI tool for scanning and repairing file formatting issues in a broad variety of file types.
Overview
unfk detects and fixes common file formatting inconsistencies:
- Line endings — mixed or incorrect line endings (LF vs CRLF)
- Indentation — inconsistent tabs/spaces or wrong indent width
- Encoding — non-UTF-8 files or encoding mismatches
- Final newlines — missing or extra newlines at end of file
- Trailing whitespace — spaces/tabs at end of lines
- Blank lines (Markdown) — multiple successive blank lines in
.mdfiles
Unlike code formatters such as Prettier or Black, unfk is not concerned with code style or syntax. Instead, it focuses on general formatting and file hygiene issues that affect a much broader range of file types — config files, scripts, data files, documentation, and more.
unfk is aware of file type-specific conventions and applies the right defaults automatically. For example:
.gofiles use tabs by convention, while.pyand.rsuse 4 spaces and.rbuses 2, etc.Makefilerequires tabs for indentation.vband.regfiles require CRLF line-endings- Windows batch files (
.bat,.cmd) and PowerShell scripts (.ps1) require CRLF line endings
This means you can run unfk fix across a mixed codebase and trust it to do the right thing for each file type.
Example:
# Scan and optionally fix files recursively
# Scan a file or directory
# Fix all issues
unfk is written in Rust and runs on macOS, Linux and Windows (Intel, ARM and Apple Silicon).
Installation and Update
There are many ways to install unfk depending on your platform.
macOS (Homebrew)
Stay up-to-date with brew upgrade unfk.
See the macOS Install Guide for other ways to install on macOS.
Windows (PowerShell)
In an elevated powershell session, run:
irm https://packages.keathmilligan.net/unfk/install.ps1 | iex
See the Windows Install Guide for other ways to install on Windows.
Linux (shell installer)
|
This will install unfk into ~/.local/bin.
See the Linux Install Guide for other ways to install on Linux.
Quick Start
# Scan current directory and optionally fix issues
# Scan a file or directory
# Fix all issues
# Preview changes without modifying files
# Create a configuration file
Commands
| Command | Description |
|---|---|
unfk |
Scan for issues and optionally fix |
unfk scan |
Scan for issues |
unfk fix |
Automatically repair issues |
unfk init |
Create .unfkrc.toml config file |
unfk types |
List supported file types |
unfk config |
Show current configuration |
Configuration
A config file is not required — unfk assumes sane defaults for most file types and modern development conventions.
EditorConfig Support
unfk automatically reads .editorconfig files if present. This lets you share formatting settings across tools and editors without duplicating configuration. The following EditorConfig properties are supported:
| EditorConfig Property | unfk Setting |
|---|---|
end_of_line |
Line ending style |
indent_style |
Tabs or spaces |
indent_size |
Indent width |
charset |
File encoding |
trim_trailing_whitespace |
Trailing whitespace |
insert_final_newline |
Final newline |
Precedence order: CLI flags > .unfkrc.toml > .editorconfig > built-in defaults
To disable EditorConfig integration, use --no-editorconfig.
Custom Configuration
For custom rules, create .unfkrc.toml in your project root:
= "lf"
= "utf-8"
= true
= "remove"
[]
= "spaces"
= 2
# Per-pattern overrides
[[]]
= "*.py"
[]
= "spaces"
= 4
Replacing Legacy Tools
unfk can replace several single-purpose legacy utilities with one modern, file-type-aware tool:
| Legacy Tool | unfk Equivalent |
|---|---|
dos2unix |
unfk fix --line-ending lf |
unix2dos |
unfk fix --line-ending crlf |
mac2unix |
unfk fix --line-ending lf |
fromdos / todos |
unfk fix --line-ending lf / crlf |
# Convert all files to LF (respecting file-type conventions)
# Convert specific files to CRLF
# Preview what would change
License
MIT