ELC

application/octet-stream

Safe

Magic Bytes

Offset: 10
23 20 54 68 69 73 20 69 73 20 61 20 73 68 65 6C 6C 20 61 72 63 68 69 76 65

Emacs Lisp Byte-compiled (ELC) is a binary file format maintained by the GNU Project to optimize performance within the Emacs extensible text editor. It functions as a pre-processed container for Lisp code, allowing the environment to load complex scripts and software packages with greater speed. Although these files contain executable bytecode for the Emacs virtual machine, they are typically generated locally from source scripts and are generally considered safe for use.

Extension

.elc

MIME Type

application/octet-stream, application/x-elc

Byte Offset

10

Risk Level

Safe

Validation Code

How to validate .elc files in Python

Python
def is_elc(file_path: str) -> bool:
    """
    Check if file is a valid ELC by magic bytes.
    Signature offset: 10 bytes
    """
    signature = bytes([0x23, 0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x73, 0x68, 0x65, 0x6C, 0x6C, 0x20, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65])
    with open(file_path, "rb") as f:
        f.seek(10)
        return f.read(25) == signature

How to validate .elc files in Node.js

Node.js
function isELC(buffer: Buffer): boolean {
  // Signature offset: 10 bytes
  const signature = Buffer.from([0x23, 0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x73, 0x68, 0x65, 0x6C, 0x6C, 0x20, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65]);
  if (buffer.length < 35) return false;
  return buffer.subarray(10, 35).equals(signature);
}
Go
func IsELC(data []byte) bool {
    // Signature offset: 10 bytes
    signature := []byte{0x23, 0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x73, 0x68, 0x65, 0x6C, 0x6C, 0x20, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65}
    if len(data) < 35 {
        return false
    }
    return bytes.Equal(data[10:35], signature)
}

API Endpoint

GET /api/v1/elc
curl https://filesignature.org/api/v1/elc

Related Formats