
dz6
vim-like hexadecimal editor
Features
- Fast, even when editing large files
- Runs in the terminal / Text User Interface (TUI)
- vim-like key bindings
- Edit in hex or ASCII
- String list with regex filtering
- Multiple smart ways to navigate through a file
- Find strings and hex bytes
- Multiplatform
- Open source
Screenshot

Download
You can install dz6 with Cargo using the Rust package manager. Follow the instructions here to install cargo. Then, use
cargo install dz6
Alternatively, download the release package for your system.
Usage
dz6 [OPTIONS] <FILE>
Arguments:
<FILE> File to edit
Options:
-o, --offset <OFFSET> Initial file offset (hexadecimal is the default; add a `t` suffix for decimal) [default: 0]
-h, --help Print help
-V, --version Print version
Once you load a file in dz6, you can use the commands below.
Global keybindings
| Key | Action | Tips |
|---|---|---|
Enter |
Switch views | |
F1 |
Help | |
Alt+l |
Open log window | |
Esc |
Quit |
Hex view
| Key | Action | Tips |
|---|---|---|
| Arrow keys | Navigation | vim-like h, j, k, l also work |
w d q |
Advance by a word (2 bytes), a dword (4 bytes), or a qword (8 bytes), respectively | Use the capital letters W, D, and Q to move backwards |
o |
Go to the next other byte, meaning the next byte that differs from the one under the cursor | O goes backwards |
Home or 0 |
Set the cursor to the beginning of the current line | |
End or $ |
Set the cursor to the end of the current line | |
Ctrl+Home or G |
Go to the first offset | |
Ctrl+End or Shift+G |
Go to the last offset in the file | |
Page Down |
Move down one page | A page has 1KB by default |
Page Up |
Move up one page | |
r or F3 |
Enter replace mode | |
z |
Enter replace mode and set the byte under the cursor zero | |
Ctrl+a |
Enter replace mode and increment byte under the cursor | |
Ctrl+x |
Enter replace mode and decrement byte under the cursor | |
: or Ctrl+g |
Go to offset | Defaults to hex. Use t suffix for decimal and + prefix for incremental jump. |
/ |
Search | Search the entire file. Tab cycles between ASCII and hex search |
n |
Search next | |
s |
Open Strings window | |
Backspace |
Go to the previously visited offset | This is useful after a Go to command, for example |
+ |
Add current offset to bookmarks | |
- |
Go to the last added bookmark | |
Alt+1..8 |
Go to bookmark | |
Alt+- |
Remove the last added bookmark | The cursor must be at the bookmarked offset |
Alt+0 |
Clear bookmarks | |
Alt+h |
Toggle byte highlight | |
; |
Add a comment to the selected offset | |
F12 |
Open Names window. Added comments will be there. | |
? |
Open Calculator |
Hex replace mode
| Key | Action | Tips |
|---|---|---|
| Arrow keys | Navigation | vim-like h, j, k, l also work |
Backspace |
The same as navigating left | |
z |
Set the byte to zero | |
Ctrl+a |
Increment byte | |
Ctrl+x |
Decrement byte | |
Enter |
Save changes to file | |
Esc |
Cancel changes | |
Tab |
Cycle through hex and ASCII dump to edit the file in ASCII | |
F10 |
Truncate the file at the selected offset | Be aware this can't be undone |
Names
| Key | Action | Tips |
|---|---|---|
| Arrow keys | Navigation | Up/Down only |
f |
Filter names using a regular expression | |
D |
Delete all names | |
Esc |
Close | |
End |
Select the last item shown | |
Ctrl+End |
Select the last item on the list | |
Home |
Select the first item shown | |
Ctrl+Home |
Select the first item on the list | |
Page Down |
Go down one page | |
Page Up |
Go up one page | |
Enter |
Follow the name in hex dump and close the window |
Strings
| Key | Action | Tips |
|---|---|---|
| Arrow keys | Navigation | Up/Down only |
f |
Filter strings using a regular expression | |
R |
Re-read strings from file | Useful if you changed the file |
Esc |
Close | |
End |
Select the last item shown | |
Ctrl+End |
Select the last item on the list | |
Home |
Select the first item shown | |
Ctrl+Home |
Select the first item on the list | |
Page Down |
Go down one page | |
Page Up |
Go up one page | |
Enter |
Follow the string in hex dump and close the window |
Calculator
64-bit calculator. Default base is decimal, but you can prefix hex numbers with 0x. Pre-defined variables:
| Variable | Value | Length |
|---|---|---|
@x |
Signed value under cursor | x is b (byte), w (word), d (dword) or q (qword) |
@X |
Unsigned value under cursor | X is B (byte), W (word), D (dword) or Q (qword) |
@o |
Current offset | dword on 32-bit systems; qword on 64 |
@O |
Previously visited offset | same as above |
Use the up and down arrow keys to navigate through the history.
Text view
This view hasn’t received much attention yet. Things are still pretty broken there.
| Key | Action |
|---|---|
e |
Open encoding selection dialog |
FAQ
1. I'm on a Mac. How am I supposed to use Alt key?!
iTerm2 users: go to Settings → Profiles → (your profile) → Keys and set the Left Option key to Esc+. This will make the Option key work like Alt.
2. Do all vim commands work in dz6?
No. Some key bindings behave similarly, but dz6 is not meant to be 100% compatible with vim. For example, o in dz6 moves to the next other byte, while the same key in vim opens a new line below the current one.
Motivation
After changing jobs and returning to Linux, I wanted something similar to Hiew that I could run on my machine. Since I like vim, I tried to combine features from both editors in dz6. VSCode, IDA, x64dbg, and Hex-Patch also served as inspiration. Hats off to the authors of these great tools!