Hex Editor
Open a file up to 50 MB and see every byte as hex and as text, with each row's offset beside it. This editor changes the bytes themselves: it overwrites, inserts and deletes with undo for every edit, reads the bytes at the cursor as 8 to 64-bit integers and 32 and 64-bit floats in both byte orders, finds and replaces hex or text, and says exactly which bytes differ from the file you opened, with the SHA-256 of both. The file is read in this tab and never uploaded.
- at 0x0
- 42 4D 4E 00 uint32 LE 5131586, BE 1112362496 uint16 LE 19778, BE 16973
- find
- Type bytes or text and press Find.
- changed
- No changes: every byte matches the file as opened. SHA-256 source computing, now computing
Arrows move, Shift with an arrow selects, hex digits (or characters in the text column) type over bytes, Insert switches to inserting, Delete and Backspace remove, Ctrl+Z undoes and Ctrl+Y redoes.
Go to an offset
Find and replace
Type bytes or text and press Find.
Edit at the cursor
The bytes at 0x0, read as numbers
| Type | Little-endian | Big-endian |
|---|---|---|
| uint8 | 66 | same |
| int8 | 66 | same |
| uint16 | 19778 | 16973 |
| int16 | 19778 | 16973 |
| uint32 | 5131586 | 1112362496 |
| int32 | 5131586 | 1112362496 |
| uint64 | 5131586 | 4777560541616930816 |
| int64 | 5131586 | 4777560541616930816 |
| float32 | 7.190884e-39 | 51.32617 |
| float64 | 2.5353404e-317 | 251725348864 |
The selection, or the byte at the cursor, as UTF-8 text: a decoded view for reading only, and every byte shown decodes exactly. Control bytes show as their symbols, such as ␀ for 00, and invisible format characters show as their code point, for example <U+202E> for a direction override.
B
What changed
No changes: every byte matches the file as opened. 0 edits can be undone (up to 500 are kept).
SHA-256 of the file as opened: computing
SHA-256 of the bytes now: computing
- little-endian 1, big-endian 16777216
- identical to the source hash, d8bd8ea41125...
- Offset 0x4E (78) is past the end; "G" is not a hex digit; not one byte changed
Files up to 50 MB (52,428,800 bytes), and an edit that would grow a file past that is refused. Only the editor's settings, such as row width, typing mode and number type, are kept in this browser; the Start over button above forgets them. The file itself is never stored.
Common questions
- How do I open a file in an online hex editor?
- Press Open a file, or drop a file anywhere on the page. Files up to 50 MB (52,428,800 bytes) are read into this tab by the browser's own file reader, and nothing is uploaded. A larger file is refused with its size named. The 78-byte example BMP made for this page is one click away if you want to try the editor first.
- What is the difference between little-endian and big-endian?
- They are the two orders a number's bytes can be stored in. Little-endian puts the least significant byte first and big-endian puts the most significant byte first, so the bytes 01 00 00 00 read as a uint32 are 1 little-endian and 16,777,216 big-endian. The table under the editor reads the bytes at the cursor both ways, as signed and unsigned 8, 16, 32 and 64-bit integers and as 32 and 64-bit floats.
- Can I insert or delete bytes, not just overwrite them?
- Yes. Switch Typing to Insert, or press the Insert key, and typed bytes go in at the cursor and push the rest along. Delete and Backspace remove bytes, and a selection is removed in one go. Up to the last 500 edits can be undone. The editor does not update a format's own size or checksum fields, so a file that records its own length may need those fixed after an insert or delete.
- How do I search for bytes or text in a binary file?
- Type hex bytes such as 13 0B, or switch to Text and type characters, which are searched as their UTF-8 bytes; a text search can ignore the case of A to Z. Matches do not overlap, Previous and Next step through them, and Replace all changes every match as a single edit that one Undo reverses. A search stops counting at 100,000 matches.
- Why does the text column show dots?
- The text column shows a byte as a character only when it is printable ASCII, 20 to 7E in hex. Every other byte, including 00, control bytes and anything above 7F, is shown as a dot. Bytes are always shown as plain text and never read as markup. To read a selection as UTF-8, use the decoded view under the number table, which says when some bytes could not be decoded.
- Is my file uploaded or changed on my disk?
- No. The file is read into this browser tab and every edit happens there. Save a copy downloads the edited bytes as a new file named after yours with -edited added, and the file you opened is not touched. Only settings such as the row width and typing mode are remembered in this browser; the file never is.
- Is the saved file exactly the bytes I see?
- Yes. The download is made from the same array of bytes the grid draws, with nothing added before or after. The What changed panel says which bytes differ from the file you opened and gives the SHA-256 of both, so you can check that undoing an edit put every byte back.
Edits change exactly the bytes you type, insert or delete, and a saved copy is those bytes with nothing added. The text column shows printable ASCII and a dot for every other byte; only the labelled UTF-8 view of a selection can lose detail, where invalid bytes show as U+FFFD. Files up to 50 MB are read in your browser, never uploaded or run, and a format's own checksums and size fields are not updated for you.