# 010 Editor

010 Editor is a commercial hex editor and text editor for Microsoft Windows, Linux and macOS. Typically 010 Editor is used to edit text files, binary files, hard drives, processes, tagged data (e.g. XML, HTML), source code (e.g. C++, PHP, JavaScript), shell scripts (e.g. Bash, batch files), log files, etc. A large variety of binary data formats can be edited through the use of Binary Templates.
The software uses a tabbed document interface for displaying text and binary files. Full search and replace with regular expressions is supported along with comparisons, histograms, checksum/hash algorithms, and column mode editing. Different character encodings including ASCII, Unicode, and UTF-8 are supported including conversions between encodings. The software is scriptable using a language similar to ANSI C.
Originally created in 2003 by Graeme Sweet, 010 Editor was designed to fix problems in large multibeam bathymetry datasets used in ocean visualization. The software was designed around the idea of Binary Templates. A text editor was added in 2008.
010 Editor is available as Trialware and can be run for free for 30 days. After 30 days a license must be purchased to continue using the software.

## Binary Templates

A Binary Template is a text file containing a series of structs similar to ANSI C. The main difference between ANSI C is that structs in Binary Templates may contain control statements such as if, for or while. When 010 Editor executes a Binary Template on a binary data file, each variable defined in the Binary Template is mapped to a set of bytes in the binary file and added to a hierarchical tree structure. The tree structure can then be used to view and edit data in the binary file in an easier fashion than using the raw hex bytes. Binary Templates typically have a '.bt' extension.
010 Editor has an online repository of Binary Templates containing over 80 formats. When a binary file is opened in 010 Editor and a Binary Template exists for the file, the software can automatically download and install the Template. Templates can also be added to the repository or updated directly from the software.

## Technology

Data files in 010 Editor are stored as a series of blocks, where each block can either point to a block of data somewhere on disk or in memory. When a large section of data from a binary file is copied to another binary file, a new block pointer is inserted into the file but the actual data is not copied. This scheme allows partial loading of files from disk and is also used to provide unlimited undo and redo. Currently when large text blocks are opened or copied the data is scanned for linefeeds, meaning there may be a delay before editing can resume. 010 Editor uses the Qt library to provide multi-platform support.

## Features

* Edit text files, hex files, processes, physical and logical drives
* Multiple files shown as draggable tabs which can be organized in tab groups
* Large file support (50 GB+ for text files, 8 Exabytes for hex files)
* Find and Replace with various data types and regular expressions
* Find and Replace across multiples files
* Unlimited undo and redo
* Column Mode Editing
* Supports 30 different character encodings (e.g. ASCII, ANSI, Unicode, UTF-8) plus custom encodings and conversions
* ASCII, Unix, Mac and Unicode linefeed support including visualizing whitespace
* Comparisons and histograms
* Inspector for interpreting bytes as different data types
* Scriptable using a language similar to ANSI C
* Scripts can be shared online and downloaded using an integrated online repository
* Syntax highlighters can be created, shared and downloaded through the online repository
* Bookmarks can be created using different data types
* Edit NTFS, FAT, exFAT, and HFS drives using templates
* Checksum/Hash algorithms including CRC-16, CRC-32, Adler32, MD2, MD4, MD5, RIPEMD160, SHA-1, SHA-256, SHA-512, TIGER
* Import or export hex data in Intel Hex Format, Motorola S-Records, Hex Text, C/C++/Java Code, Base64, Uuencoding, RTF, or HTML
* Arithmetic and bitwise operations on hex data
* Printing with header, footer and margin control
* Integrated debugger for finding problems with Binary Templates and scripts
* Portable version for running from USB drives
* Dark and light themes