Kwil

Beta Free and open source, written in Rust

Open the gigabyte log. Start reading.

Kwil is a plain text editor for the desktop and the terminal. It opens huge files without waiting, keeps every byte you did not touch, and draws only what changed, so it stays quiet on a laptop battery and over a remote desktop.

Windows, macOS and Linux, on x64 and ARM64.

Kwil editing a Rust file with the Find bar open and four matches of “value” highlighted.
Find highlights every match as you type, with case, whole-word, regex and in-selection options.

Big files are just files

Kwil does not load a file into memory before it shows you the first screen. It reads the part you can see, draws it, and builds the line index in the background on several cores. You can scroll, search and jump while it works.

The index has a fixed memory budget of 64 MiB, which covers files well beyond 100 GB. Things that would need the whole file in memory, such as comparing two huge files or copying gigabytes to the clipboard, stop with a clear message instead of freezing your machine.

The numbers on the right come from the benchmark workflow on GitHub's hosted runners, measured on every change to main.

A 1 GiB log file, median of eight fresh processes

Open and show the first screen

Windows 0.21 msLinux 0.07 ms

Jump to line 15,000,000

Windows 0.13 msLinux 0.02 ms

Private memory after opening and indexing

Windows 4.7 MiBLinux 1.4 MiB

Logarithmic scales. Measured on 2 November 2026 on the windows-2025 and ubuntu-24.04 runners. These time Kwil's text core, not the whole window from launch; see how it is measured.

Everything a text editor needs, nothing it does not

No project system, no extension store, no account. Tabs, search, compare and the tools you reach for when a file is strange, large or not quite text.

Encodings
UTF-8, UTF-16, UTF-32 and legacy encodings such as Shift_JIS, EUC-JP, GBK, Big5 and Windows-1252. Bytes you did not edit are saved exactly as they were, even malformed ones.
Line endings
LF, CRLF and classic Mac CR are kept when you edit and save, shown in the status bar, and converted on request.
Find and replace
Case, whole word, regex and in-selection. Find in Files searches a folder; replace in files shows a preview first, and you untick the files you want to leave alone.
Compare
Two files, or a file against its saved version, side by side with word highlights. Unchanged regions fold away; F7 jumps to the next change.
Hex editor
Edit bytes in the hex or text column, go to an offset, search for a byte sequence and copy as hex, with undo, in both the desktop app and the terminal.
Compressed files
gzip, zstd, bzip2 and xz files open as text and save back in the same format. Kwil decompresses to disk, not into memory.
Log files
Follow a growing log, filter by text, regex or level, mark lines, go to a time range and add your own highlight rules.
Markdown
Text, preview or split view, with headings, lists, tables, code and local images.
Sessions
Quit with unsaved changes and untitled tabs; they come back on the next start. Opening a file while Kwil runs adds a tab to the open window.
Keymaps
VS Code, Notepad++ or Vim presets, your own bindings on top, and a command palette that shows every shortcut.
Formatting
Built-in formatters for JSON, XML, HTML, YAML, TOML, CSS and SQL, and rustfmt, black or prettier when they are installed.
Screen readers
Menus, tabs, palette, dialogs, settings, the status bar and the visible text with caret and selection are exposed to assistive technology.
A Markdown note in split view: source with line numbers on the left, the rendered preview with headings, lists, a quote and a table on the right.

Draws only what changed

Kwil has no frame loop. When you type a letter, it redraws that line and the status bar, and nothing else. When nothing changes, it does no work at all.

That keeps the fans off on a laptop, and it is why Kwil stays responsive over Remote Desktop and VNC, where every redrawn pixel has to cross the network. Remote mode goes further: no cursor blinking, no smooth scrolling, and a CPU renderer that does not need a GPU.

Work that takes time, such as indexing, searching a folder or syntax highlighting, runs in the background. Typing never waits for the disk.

The same editor in your terminal

One program, two front ends. Start Kwil from a desktop shortcut and you get a native window; start it over SSH, or with --tui, and you get a keyboard-driven terminal editor with the same files, settings, keymaps, search, compare, hex and log tools.

Settings live in one TOML file and apply live in both, and every command in the palette works in both.

# Open in a window
kwil notes.txt

# Open in this terminal
kwil --tui server.log

# A second window instead of a new tab
kwil --new-window draft.md

Your settings file, for example:

keymap.preset = "vim"   # or "vscode", "notepad++"

[[bindings]]
keys = "ctrl+alt+s"
command = "file.save"
The command palette over a Rust file, listing file commands with their keyboard shortcuts.
The command palette finds any command and shows its shortcut in your keymap.
The Settings page with categories on the left and searchable settings such as tabs layout, keymap preset, word wrap and tab size.
Settings are searchable and save as you change them; the TOML file is one click away.

Your work is not lost

Unsaved changes are written to a recovery journal every few seconds, saves are atomic, and a crash handler flushes the journal. Quit or crash, and your tabs come back on the next start. When another program changes a file you are editing, Kwil asks whether to keep your version or reload.

Updates itself, carefully

Kwil checks GitHub for new releases and verifies every download against its SHA-256 checksum before it replaces itself. Betas follow betas and stable releases; stable copies only take stable releases. One setting turns the check off.

Nothing phones home

No account, no telemetry. The update check is the only thing Kwil fetches from the network, and Markdown previews show local images only.

Get Kwil

Kwil is in beta: it is usable every day, but not every part of the v1 specification is done yet. Try it with copies of important files first, and tell us what breaks.

Newest release

Downloads are on the GitHub releases page.

The Windows installer needs no admin rights and adds a Start menu entry and an uninstaller. The builds are not signed yet, so SmartScreen and Gatekeeper warn on the first start. Check downloads against SHA256SUMS; the installation guide has the details.

Build from source

Needs a Rust toolchain; rustup picks the right version from the repository.

git clone https://github.com/rennerdo30/kwil
cd kwil
scripts/run.sh --release      # Windows: scripts\run.bat

Source code All releases