lf is a free, open source file management & sync project written in Go and released under MIT. It has 9,518 GitHub stars, 375 forks and 85 open issues, and was last pushed 6 days ago. On this registry it ranks #15 of 28 tracked projects in File Management & Sync, with 5 head-to-head comparisons available.

What is lf?

lf is a terminal file manager written in Go for command-line users who want fast, keyboard-driven browsing of the filesystem without leaving the terminal.

What it is

lf (as in "list files") is a terminal file manager written in Go, with heavy inspiration from the ranger file manager. It lives in the command-line and terminal tooling ecosystem and runs on Linux, macOS, BSDs, and Windows. It ships as a single binary with no runtime dependencies, and its scope is deliberately narrow: browsing, navigation, and selection are handled by lf, while editing, paging, and file operations are handed off to tools the user already has.

The concrete problem it solves is the friction of moving around a filesystem through repeated shell commands. Instead of chaining list-and-change-directory invocations, a user gets a persistent, keyboard-driven interface to the directory tree, with customizable keybindings that default to vi and readline conventions. It also serves users of ranger who want a compiled, statically linked implementation written in Go. Because IO operations are asynchronous, the interface does not lock while the filesystem is busy, and startup time and memory footprint stay low due to native code and static binaries.

Key capabilities

  • Cross-platform support for Linux, macOS, BSDs, and Windows from a single codebase.
  • Single binary with no runtime dependencies, buildable with env CGO_ENABLED=0 go install -trimpath -ldflags="-s -w" github.com/gokcehan/lf@latest.
  • Asynchronous IO operations that avoid locking the user interface.
  • Server/client architecture with remote commands for managing multiple running instances.
  • Extensible and configurable through shell commands, with customizable keybindings and vi and readline defaults.
  • In-application documentation and option listing through lf -doc and lf -help, backed by doc.md.
  • Deliberate non-features: no tabs or windows, no builtin pager or editor, and no builtin file operation commands, leaving mkdir, touch, chmod, chown, chgrp, and ln to the underlying shell tools.

Who uses it and how

  • Terminal-centric users on Linux, macOS, BSDs, and Windows who treat the shell as their primary working environment.
  • Users who expect vi or readline keybindings and prefer rebinding keys to learning a new modal scheme.
  • People running several file manager instances at once, driven through the server/client architecture and remote commands.
  • Users who wire lf into their shell and editor using the etc directory, which also carries example configuration, colors, and icons files.

Getting started

Install from community-maintained packages listed on the wiki, or download pre-built binaries from the releases page. Building from source requires Go and the go install invocation above, with set and $env: variants for Windows cmd and PowerShell; running lf afterwards starts the application in the current directory.

How it compares

The facts name only ranger as a comparable file manager, and lf states heavy inspiration from it rather than positioning itself as a departure. It therefore sits in ranger's lineage as a Go implementation distributed as a static binary, with no other similar tool named in this registry entry.

When to use it — and when not to

lf has no database, storage backend, or mail service to operate, so the operational burden is limited to the shell tools, pager, and editor chosen alongside it. Users who want builtin tabs, an integrated editor or pager, or menu-driven file operations should not choose it, because those are listed as non-features. The README is brief and defers most detail to doc.md, the wiki tutorial, and the FAQ, so prospective users should expect to read the documentation rather than the repository front page.

project readme (upstream, from github) — read inline

LF

Doc | Wiki | #lf:matrix.org (with IRC bridge)

Go Build Go Report Card

lf (as in "list files") is a terminal file manager written in Go with a heavy inspiration from ranger file manager. See faq for more information and tutorial for a gentle introduction with screencasts.

icons-and-border image-preview new-features

Features

  • Cross-platform (Linux, macOS, BSDs, Windows)
  • Single binary without any runtime dependencies
  • Fast startup and low memory footprint due to native code and static binaries
  • Asynchronous IO operations to avoid UI locking
  • Server/client architecture and remote commands to manage multiple instances
  • Extendable and configurable with shell commands
  • Customizable keybindings (vi and readline defaults)
  • A reasonable set of other features (see the documentation)

Non-Features

  • Tabs or windows (better handled by window manager or terminal multiplexer)
  • Builtin pager/editor (better handled by your pager/editor of choice)
  • Builtin commands for file operations (better handled by the underlying shell tools including but not limited to mkdir, touch, chmod, chown, chgrp, and ln)

Installation

See packages for community maintained packages.

See releases for pre-built binaries.

Building from the source requires Go.

On Unix:

env CGO_ENABLED=0 go install -trimpath -ldflags="-s -w" github.com/gokcehan/lf@latest

On Windows cmd:

set CGO_ENABLED=0
go install -trimpath -ldflags="-s -w" github.com/gokcehan/lf@latest

On Windows PowerShell:

$env:CGO_ENABLED = '0'
go install -trimpath -ldflags="-s -w" github.com/gokcehan/lf@latest

Usage

After the installation lf command should start the application in the current directory.

Run lf -help to see command line options.

Run lf -doc to see the documentation.

See etc directory to integrate lf to your shell and/or editor. Example configuration files along with example colors and icons files can also be found in this directory.

See integrations to integrate lf to other tools.

See tips for more examples.

Contributing

See contributing for guidelines.

Frequently asked questions

Is lf free to use?

lf is open source under the MIT licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does lf do?

Terminal file manager

What is lf written in?

lf is primarily written in Go. Its source is publicly available at https://github.com/gokcehan/lf, and it has 9,518 GitHub stars.