About this project

ImHex is an open-source hex editor aimed at reverse engineers, programmers, and people who work with raw data late at night. It has a modern graphical interface built with Dear ImGui and provides stable, nightly, and web versions. The desktop application supports Windows, macOS, Linux, and FreeBSD; releases also include software-rendered "NoGPU" builds for systems without OpenGL 3.0-compatible graphics hardware. The main editing experience includes byte patching, patch management, infinite undo/redo, and flexible copy commands. Data can be copied as raw bytes, hex strings, arrays in languages such as C, C++, C#, Rust, Python, Java, and JavaScript, ASCII-art hex views, or self-contained HTML. Searching covers simple text and hex, regex, binary patterns with wildcards, numeric value ranges, and string extraction. The editor also supports goto from start, end, or cursor position, paged views, and multiple color-highlighting rules. ImHex includes a custom C++-like pattern language for parsing and highlighting file contents. It supports arrays, pointers, structs, unions, enums, bitfields, namespaces, little/big endian, conditionals, and useful error messages. The pattern language can visualize images, audio, 3D models, coordinates, and timestamps. Pattern files, libraries, magic files, encodings, themes, processor nodes, and YARA rules can be downloaded through a built-in content updater from the ImHex database. The data inspector can interpret bytes as signed/unsigned integers, floats, LEB128 values, ASCII/wide/UTF-8 strings, timestamps, GUIDs, colors, and more. It supports copying and modifying bytes, hiding unused rows, and adding custom types through the pattern language. A node-based data preprocessor lets users modify, decrypt, or decode data before it is shown in the hex editor, without changing the underlying source. Custom nodes can be added. Data can be loaded from many sources: local files, raw disks and partitions, GDB server memory, Intel HEX and Motorola SREC formats, Base64, UDP packets, process memory, and remote files over SSH/SFTP. Large files are handled with a paged view for efficient loading. The diffing view compares data from different sources, highlights differences, and offers a table of differences. The integrated disassembler is based on Capstone and supports architectures such as ARM, ARM64, MIPS, x86, PowerPC, SPARC, RISC-V, WebAssembly, and others. Custom disassemblers can be added. Analysis tools include file magic detection, a MIME type database, byte distribution graphs, entropy graphs, highest/average entropy values, encrypted/compressed file detection, and digram/layered distribution graphs. YARA rules can be run to scan vulnerable files, highlight matches, and jump to results. Bookmarks support custom names, colors, comments, highlighting, jump-to, and opening bookmark contents in new tabs. Hashing tools include CRC8/16/32 with custom polynomials, MD5, SHA family, Adler32, and many other algorithms, applied to selected regions or arbitrary strings. A set of helpful utilities is included: Itanium/MSVC/Rust/D demanglers based on LLVM, an ASCII table, regex replacer, calculator, graphing calculator, hexadecimal color picker, base converter, byte swapper, UNIX permissions calculator, IEEE754 float visualizer, file splitter/combiner/shredder, TCP client/server, HTTP request tool, and more. The interface supports multiple workspaces, custom layouts, and detachable windows. Beginners can use simplified mode, interactive tutorials, achievements, and the documentation. ImHex supports plugins. The SDK can be built locally or fetched in GitHub Actions, and a plugin template is available. The project is mostly licensed under GPLv2-only, while libimhex and the UI plugin library are under LGPLv2.1 to allow proprietary plugins. System requirements are modest: roughly 50 MiB RAM and 100 MiB storage, with OpenGL 3.0 recommended for normal releases. The project is translated into many languages and welcomes contributions.