.ELF

ELF File

Executable and Linkable Format
Ask a question
QUICK ANSWER

An ELF file is the binary executable format used by Linux, Android, the BSDs and most Unix-like systems - the equivalent of Windows EXE. On Linux you run it directly; a PS2 homebrew .elf runs in PCSX2, a GameCube/Wii .elf runs in Dolphin. ELF does not run natively on Windows or macOS, and like any executable it can be malware, so only run files from sources you trust.

Developer: Unix System Laboratories (AT&T); now an open System V / TIS standard Category: Executable Files Open standard MIME: application/x-elf
OPENS ON Windows macOS Linux
Related: .APK · .EXE · .VBS · .JAR

On this page

19k+ extensions indexed
Last reviewed Aug 26, 2026

Not sure what your file is?

Drop any file into our identifier - we read just the first bytes to name the format.

Identify a file

What is the ELF file format?

Files with the .elf extension store binary data structured according to the Executable and Linkable Format standard - the default executable and object format for Linux, most Unix-like systems, and many embedded platforms. The format was introduced with Unix System V Release 4 by Unix System Laboratories and later ratified as a Tool Interface Standard (TIS) portable specification.

ELF files can store the following types of content:

  • Executable files for applications and tools, often distributed as a .bin file
  • Compiled object files, typically carrying the .o extension
  • Shared libraries - files with the .so extension
  • Core dumps (memory snapshots produced after a process crash)

The format is built around a well-defined binary structure. Every .elf file begins with the 4-byte magic sequence 7F 45 4C 46 (0x7F followed by the ASCII letters ELF) at offset 0, followed by header fields that identify the target architecture, word size (32-bit or 64-bit), and byte order (little-endian or big-endian). Two optional tables - the program header table and the section header table - then describe how segments should be loaded at runtime and how sections are organised for linking.

Although the ELF standard was developed with Unix systems in mind, it was quickly adopted by other platforms, including game consoles such as the PlayStation 2 and Wii, Android, and many embedded environments. The standard MIME type is application/x-elf. Contents of an .elf file are not human-readable; tools such as readelf and objdump (both part of GNU Binutils) can inspect its headers and disassemble its code without executing it.

Security & safety

RISK: HIGH

Like any executable, an ELF can contain malware - Linux/IoT botnets (e.g. Mirai variants) ship as ELF binaries, and an ELF runs with your privileges once executed. Only run ELF files from trusted sources; don't 'chmod +x' and execute random downloads. Inspect unknown ELFs safely with readelf/objdump or scan them on VirusTotal before running. Console homebrew .elf files are lower-risk (they run inside an emulator's sandbox) but still get them from reputable homebrew sources.

Format details

in a nutshell
FULL NAMEExecutable and Linkable Format
DEVELOPERUnix System Laboratories (AT&T); now an open System V / TIS standardsince 1989 (Unix System V Release 4); adopted as the TIS/System V ABI standard
MIME TYPEapplication/x-elf
TYPEBinary executable / object / shared-library format
STANDARDOpen · royalty-free
MAGIC BYTES · FILE SIGNATURE
OFFSET
00010203
HEX
7F454C46
ASCII
·ELF
Every ELF file starts with the 4-byte magic 7F 45 4C 46 (0x7F + "ELF") at offset 0. Byte 4 (EI_CLASS) is 1 for 32-bit / 2 for 64-bit; byte 5 (EI_DATA) is 1 for little- endian / 2 for big-endian; byte 16 (e_type) tells whether it's an executable, a relocatable object, a shared object (.so) or a core dump.

Programs that open ELF files

Windows3 apps
PCSX2 (PlayStation 2 emulator) Open-source Run a PS2 homebrew/SDK .elf: File > Run ELF (or boot the .elf directly). For PS2 ELF binaries only.
Dolphin (GameCube/Wii emulator) Open-source Open a GameCube/Wii homebrew .elf in Dolphin to run it. For Nintendo console ELF binaries only.
Ghidra Open-source Import the ELF on Windows to disassemble/decompile it without running it.
macOS1 app
Ghidra Open-source Analyse an ELF on macOS by importing it into Ghidra (ELF won't run natively on macOS).
Linux4 apps
Linux (run it) Built-in Make it executable and run: 'chmod +x ./program && ./program'. An ELF executable IS the program - there's nothing to 'view'. It must match your CPU architecture.
readelf (GNU binutils) Open-source Inspect without running: 'readelf -a file.elf' shows headers, sections, symbols and the target architecture.
objdump (GNU binutils) Open-source Disassemble: 'objdump -d file.elf' shows the machine code; 'objdump -x' shows all headers.
Ghidra Open-source Import the ELF to disassemble and decompile it to readable C - for reverse engineering/analysis.

Technical details

deep spec
Magic number`7F 45 4C 46` (0x7F followed by ASCII `ELF`) at byte offset 0, present in every valid ELF file
MIME type`application/x-elf`
Word-size variants32-bit (EI_CLASS = `01`) and 64-bit (EI_CLASS = `02`), encoded at offset 4 in the ELF header
Byte-order fieldEI_DATA at offset 5: `01` = little-endian, `02` = big-endian; determined by the target hardware architecture
File types (e_type)ET_EXEC (executable), ET_REL (relocatable object), ET_DYN (shared object or PIE), ET_CORE (core dump)
Target architecturesx86, x86-64, ARM, AArch64, MIPS, RISC-V, PowerPC, SPARC and many others, identified by the `e_machine` field in the ELF header
OS/ABI identifierEI_OSABI byte at offset 7 specifies the target ABI: 0 = System V, 3 = Linux, 9 = FreeBSD, 12 = Solaris
Structure layoutELF header → optional program header table (runtime load segments) → data → optional section header table (link-time sections)
Key named sections`.text` (code), `.data` (initialised data), `.bss` (zero-initialised data), `.rodata` (constants), `.symtab` / `.dynsym` (symbols), `.rel` / `.rela` (relocations)
Dynamic linkingShared objects are resolved at load time by the runtime linker (`ld.so`); the required interpreter path is stored in the `PT_INTERP` program header
Debug informationDWARF debug data is embedded in `.debug_*` ELF sections and can be removed from production binaries with the `strip` command
Position-independent executablesPIE binaries are typed ET_DYN and support ASLR; the Linux kernel randomises their base load address at each launch
Primary inspection tools`readelf -a` (headers, symbols, sections) and `objdump -d` (disassembly), both provided by GNU Binutils
Released1989 (Unix System V Release 4); adopted as the TIS/System V ABI standard
Open standardYes · royalty-free
Specificationrefspecs.linuxfoundation.org

ELF conversions

Community Q&A

asked by users
Ask a quick question
Get help from people who work with ELF files. Be specific - include your system and software version.
No account needed · answers usually within a day

No questions yet - be the first to ask about ELF files.

Frequently asked questions

How do I open an ELF file?
It depends what it is. A Linux program ELF is run, not opened: 'chmod +x ./file && ./file'. A PlayStation 2 homebrew .elf runs in PCSX2; a GameCube/Wii .elf runs in Dolphin. To look inside any ELF without running it, use readelf, objdump or Ghidra.
Can I run an ELF file on Windows?
Not natively - ELF is the Unix/Linux format, Windows uses EXE/PE. Use WSL (Windows Subsystem for Linux) or a Linux VM to run a Linux ELF, or an emulator (PCSX2/Dolphin) to run a console homebrew .elf.
Is an ELF file the same as an EXE?
They're equivalents on different systems: ELF is the Linux/Unix executable format, EXE (PE) is the Windows one. They are not interchangeable and can't be converted into each other.
How do I run an ELF in PCSX2 or Dolphin?
In PCSX2 use 'Run ELF' (or boot the .elf) for PS2 homebrew; in Dolphin open the .elf directly for GameCube/Wii homebrew. You need the appropriate emulator for the console the ELF was built for.
How can I see what's inside an ELF file?
Use 'readelf -a file' for headers/sections/symbols, 'objdump -d file' to disassemble, or import it into Ghidra to decompile to C. This inspects the file without executing it.
Is it safe to run an ELF file?
Only from a source you trust - ELF binaries can be malware (Linux/IoT botnets are ELF). Inspect unknown ones with readelf/VirusTotal first. Console homebrew .elf files run sandboxed inside an emulator and are lower-risk.

References

1Wikipedia - Executable and Linkable Formaten.wikipedia.org
2GNU Binutils - readelf / objdumpwww.gnu.org

Keep exploring

across the database

Top extensions this week

1.AQQAQQ Instant Messenger File
2.CRDOWNLOADChrome Partial Download File
3.PARTPartial Download File
4.BINCD/DVD Disc Image (BIN/CUE)
5.RPMSGRestricted Permission Message
6.MDMarkdown Document
7.NOMEDIAAndroid No-Media Marker File
8.PRO6XProPresenter 6 Bundle File
9.EXEWindows Executable (Portable Executable)
10.PRDXSoftMaker Presentations Document

Related extensions

.APKAndroid Package
.EXEWindows Executable (Portable Executable)
.VBSVBScript file (Visual Basic Script)
.JARJava Archive
.EX4MetaTrader 4 Compiled Program (Expert Advisor / Indicator / Script)
.APPXMicrosoft Windows App Package (AppX)

Free file tools

An in-browser file identifier and image converter - everything runs on your device.

Open the toolbox

Browse file extensions A-Z