
Every EPROM programmer user encounters the Intel HEX file format sooner or later. It is the standard layout produced by assemblers and C compilers when they compile source code, and it is the file type that device programmers read when writing firmware into memory chips. Understanding this format helps you verify files, diagnose programming failures and keep legacy equipment operational.
Intel HEX, also known as the Intel hexadecimal object file format or Intellec Hex, conveys binary information in ASCII text form. Instead of transmitting raw binary, the file represents the data using printable characters. That simple design is the reason the format has survived for so long and remains almost universally supported.
What Is the Intel HEX File Format?
Intel HEX files store binary program data using ASCII characters. One character is used to store each nibble of the binary data, so each byte of firmware appears as two text characters. A .hex file in this format consists of records of data, and each record places the address in memory to store the data at its start. The programmer reads a record, notes the address, and writes the data to that location in the target device.
The hexadecimal object file is an ASCII representation of an absolute binary object file. Because the data has already been resolved to fixed addresses, the programmer does not need to perform linking or relocation. The file simply describes where every piece of data belongs, across 8-bit, 16-bit and 32-bit microprocessors.
The address information is not limited to a single block. A file may contain many data records spread across different addresses, and the programmer accumulates them all into one memory image. The end of file record then signals that the file is complete and no further records are expected.
Why the Intel HEX Format Matters for EPROM Programming
The primary purpose of an Intel HEX file in the embedded space is to create a file that is used to program or reprogram a target system. EPROM programmers are one of the clearest examples. You compile your code, obtain a .hex file, and load that file into your programmer software. The programmer then uses the address information in each record to place the bytes at the correct locations inside the EPROM.
Without this structure, a programmer would receive a stream of bytes with no indication of where each byte belongs. The addressing built into the Intel HEX record format is what makes it possible to program devices whose memory maps are not a simple continuous block.

How Intel HEX Records Are Structured
Intel HEX consists of a series of records. Each record is a line of ASCII text that carries a specific piece of information. The most common record type is the data record, which holds the bytes to be programmed. At the start of each data record, the address in memory where the data should be stored is given. Later records continue the pattern until the complete memory image has been described.
Because the entire file is ASCII, you can open it in a text editor and inspect it. This is a practical advantage when you work with a vintage programmer. You can check that the file has not been corrupted in transfer, confirm which record types it uses, and verify that the address ranges match the EPROM you intend to program.
The Six Intel HEX Record Types
Intel Hex records describe the hexadecimal object file format for 8-bit, 16-bit and 32-bit microprocessors. There are six different types of records, each with a distinct role. The table below summarises the formats in which each record type appears.
| Record Type | Bit Formats |
|---|---|
| Data Record | 8-bit, 16-bit, 32-bit |
| End of File Record | 8-bit, 16-bit, 32-bit |
| Extended Segment Address Record | 16-bit, 32-bit |
| Start Segment Address Record | 16-bit, 32-bit |
| Extended Linear Address Record | 32-bit only |
| Start Linear Address Record | 32-bit only |
Data records carry the program data itself. End of file records mark the point where the file finishes, so the programmer knows there is no further data to load. Extended segment and start segment address records support 16-bit and 32-bit formats. The start segment address record supplies the execution start address, while the extended segment address record adjusts the segment base.
Extended linear and start linear address records appear only in the 32-bit format. The extended linear address record extends the addressable range, and the start linear address record gives the start address for execution. Together, these six record types allow a single ASCII file to describe firmware for everything from small 8-bit controllers to large 32-bit systems.
Addressing in Practice
In a simple 8-bit file, the address in each data record may be all the programmer needs. For larger EPROMs and 16-bit or 32-bit targets, extended segment and extended linear address records work alongside data records to cover a wider address space.
This matters when a file was created for a system that uses a segmented or linear memory model. The programmer must reproduce the same address mapping inside the physical device, and the extended address records exist specifically to support those larger maps.
The programmer software assembles the records into a complete memory image before writing the device. If your programmer supports only certain record types, a file that relies on unsupported records may not load correctly. Always check the documentation for your programmer software to confirm which record types it accepts.

Intel HEX in Legacy Programming Workflows
Intel HEX is one of the oldest file formats available, yet it is adopted by many newcomers to the market. That combination of age and wide acceptance makes it almost universal. For preservation work with legacy EPROM programmers, this is valuable. A firmware image stored as Intel HEX decades ago can still be read and programmed today.
The format’s longevity is easy to explain. A 2025 retrospective on the format noted that the Intel HEX file was turning fifty years old. The ASCII text design means the files are platform independent, simple to transmit and easy to process with basic tools. Those qualities matter when you are reviving older hardware and working with software and documentation from a different era.
Intel HEX and Other File Formats
Intel HEX is not the only format used for programming memory devices. Motorola HEX files and raw binary files also appear in EPROM programming, and different tools favour different formats. However, Intel HEX is the format most commonly associated with .hex files and is supported by a wide range of assemblers, compilers and programmers.
Note that not every file with a .hex extension necessarily follows the Intel specification. Tools such as Microchip’s Hexmate process files that conform to the Hexadecimal Object File Format developed by Intel. Other forms of HEX files and other file formats cannot be processed by such tools. If you are unsure about a file, inspect its contents in a text editor and compare the record types with the specification.

Practical Tips for Working with Intel HEX Files
- Open the file in a plain text editor before programming to confirm it is intact and read the address ranges.
- Confirm that every record type used in the file is supported by your programmer software.
- Check that the end of file record is present; a file that stops without it may be truncated.
- Keep the original binary output alongside the .hex file so you can compare or convert if needed.
- If a programming failure occurs, look for stray text, line wrapping or files saved by a word processor rather than a plain text editor.
Frequently Asked Questions
What is a hex file?
A hex file, in EPROM programming, is usually an Intel HEX file. It stores binary program data using ASCII characters, with one character used for each nibble of the data. The file is made up of records, and each data record includes the address in memory where the data should be stored. Programmers read these records to build the complete memory image for the target device.
What is hex format?
Hex format, formally the Intel hexadecimal object file format, is an ASCII representation of an absolute binary object file. It describes program data for 8-bit, 16-bit and 32-bit microprocessors. Assemblers and C compilers produce files in this layout, and device programmers read them. The format defines six record types covering data, end of file, segment addresses, linear addresses and execution start addresses.
How do I open a hex file?
Because Intel HEX files are ASCII text, you can open them in any plain text editor. The records appear as printable characters rather than raw binary. The address in memory is given at the start of each data record. For programming, you would normally load the file into your programmer software instead of opening it manually.
How do I convert hex to human readable text?
Intel HEX files are already human readable because they use ASCII characters to represent binary data. Each character stores one nibble, so the file displays as hexadecimal digits. To interpret it, you read the records and note the addresses and data values. If you need raw binary output, most programmer tools can export a binary file from a hex input.
Why is the Intel HEX file format still used?
Intel HEX is one of the oldest file formats still in general use, and it is adopted by many newcomers to the market. Because the files are ASCII text, they are easy to transfer, inspect and process with simple scripts. The format works for 8-bit, 16-bit and 32-bit systems, and its near universal support makes it a reliable choice for programming memory devices.