Machine Code to Assembly Disassembler

Disassemble hex or Base64 machine code to assembly free. x86, x64, ARM, ARM64, RISC-V, MIPS, PowerPC, SPARC, 68K - instant, in your browser.

Advertisement

Online Disassembler: Turn Machine Code Into Assembly Instantly

This online disassembler converts raw machine code — hex bytes or Base64 — into readable assembly language for eight processor families, without installing anything. Paste a byte string, pick an architecture, and you get an address-by-address listing showing the offset, the raw bytes consumed by each instruction, and the decoded mnemonic with its operands. Everything runs client-side using WebAssembly builds of Capstone (disassembly) and Keystone (assembly), so the bytes you paste never leave your browser. That matters when the “bytes” are a suspicious payload pulled out of an incident, a proprietary firmware image, or a competition artifact you are not allowed to upload anywhere.

Reverse engineers reach for a disassembler whenever they have code but no source: a crash dump with a fault address, a shellcode blob recovered from a packet capture, a firmware ROM with no symbols, or a compiler output they want to sanity check. This tool is aimed at the fast half of that work — “what do these 40 bytes actually do?” — and answers it in a second rather than after a project import.

Supported Architectures and Modes

The architecture selector drives which decoder Capstone uses, and each architecture exposes its own mode list. Picking the wrong mode is the single most common reason a disassembly comes out as garbage, so the pairing matters:

ArchitectureModes availableTypical use
x86 / x86-6416-bit, 32-bit, 64-bitDesktop and server binaries, shellcode, bootloaders (16-bit real mode)
ARM64 (AArch64)64-bitApple Silicon, modern Android, ARM servers
ARM32ARM, Thumb, Cortex-MEmbedded firmware, older Android, microcontrollers
RISC-V32-bit, 64-bitRISC-V SoCs, teaching, open hardware
MIPSMIPS32, MIPS64, microMIPSRouters, set-top boxes, older consoles
PowerPC32-bit, 64-bitEmbedded PPC, legacy Mac binaries, some automotive
SPARCSPARC32, SPARC V9Solaris-era systems and legacy server code
Motorola 68K68000, 68010, 68020, 68030, 68040Retro computing, arcade and console ROMs

For x86 and x86-64 you can additionally choose between Intel and AT&T syntax. Intel syntax writes destination first (mov rbp, rsp); AT&T reverses the operands and prefixes registers with % (mov %rsp, %rbp). If you are cross-checking against objdump output on Linux, AT&T is usually what you want; if you are reading Windows documentation or NASM source, choose Intel. The syntax selector applies to x86 only — the other architectures have a single canonical form.

How to Use the Disassembler

  1. Choose your input format. Toggle between Hex and Base64. Hex input is forgiving: 55 48 89 e5, 5548 89E5, and \x55\x48\x89\xe5-style pastes all normalise. Base64 accepts both standard and URL-safe alphabets and is converted to hex before decoding.
  2. Select the architecture and mode. If you know the file came from a 64-bit Linux binary, pick x86 with 64-bit mode. If you are unsure, try a couple of combinations — a wrong guess produces obviously nonsensical instructions and invalid-byte markers.
  3. Set the base address. The default is 0x0, but entering the real load address (for example 0x401000) makes jump and call targets line up with the addresses in your debugger or crash log, which saves manual arithmetic.
  4. Disassemble. Output is a table of address, raw bytes, mnemonic, and operands. Large inputs are processed in chunks so the page stays responsive.
  5. Work the extra tabs. Statistics, shellcode detection, string extraction, call graph, decompiler, packer detection, and performance analysis all operate on the same decoded listing.

You can also upload a file instead of pasting, save a session for later, and generate a shareable permalink that encodes the bytes and settings in the URL — handy for handing a snippet to a colleague or attaching to a ticket.

Worked Example: An x86-64 Function Prologue

Take the eight bytes 55 48 89 e5 48 83 ec 10 in x86 / 64-bit / Intel syntax. The disassembler produces:

AddressBytesInstructionMeaning
0x000055push rbpSave the caller’s frame pointer
0x000148 89 e5mov rbp, rspEstablish a new frame pointer
0x000448 83 ec 10sub rsp, 0x10Reserve 16 bytes of local stack space

Notice that x86 instructions are variable length — one, three, and four bytes here. That is why a disassembler must start at a correct instruction boundary: begin one byte late and every subsequent decode is wrong until the stream happens to resynchronise. The 48 prefix in the second and third instructions is the REX.W byte that promotes the operation to 64-bit operands; drop it and the same encoding would operate on ebp/esp instead.

A Linux write syscall looks like b8 01 00 00 00 bf 01 00 00 00 48 89 c6 ba 0d 00 00 00 0f 05, decoding to mov eax, 1 / mov edi, 1 / mov rsi, rax / mov edx, 0xd / syscall — the classic “write 13 bytes to stdout” sequence you will meet in almost every shellcode tutorial.

ARM, ARM64, Thumb and RISC-V: Fixed-Width Decoding

Unlike x86, ARM64 and RISC-V (in their base encodings) use fixed-width instructions, which makes decoding far more predictable. The ARM64 prologue fd 7b bf a9 fd 03 00 91 decodes to stp x29, x30, [sp, #-0x10]! followed by mov x29, sp — two 4-byte instructions that push the frame pointer and link register as a pair and then set up the frame. Compare that with the three x86-64 instructions above doing the same job.

ARM32 is the case where the mode selector really bites. The bytes 00 b5 00 af 00 bd only make sense in Thumb mode, where they decode as push {lr} / add r7, sp, #0 / pop {pc} — three 2-byte instructions. Decode the same bytes in ARM mode and you get a single meaningless 4-byte word plus a trailing fragment. Firmware for Cortex-M parts is Thumb-only, so if you are staring at a microcontroller image, start there. The Cortex-M mode additionally enables the M-profile system registers.

RISC-V behaves similarly: 13 01 01 ff is addi sp, sp, -16 and 23 34 11 00 is sd ra, 8(sp) in RV64 — a stack allocation followed by saving the return address. Selecting 32-bit instead of 64-bit changes how the wider load/store mnemonics are printed, so match the mode to the target.

Assembling in the Other Direction: Assembly to Hex

The Assembler tab runs the process in reverse. Type assembly source and it emits the encoded machine code as hex, powered by Keystone compiled to WebAssembly. This is what you want when you are searching for “ARM to hex” or an “ARM converter”: enter mov x0, #1 and get the corresponding ARM64 encoding back. The assembler follows the same architecture, mode, and syntax selection as the disassembler, so an x86-64 build respects your Intel/AT&T choice, and the resulting hex is fed straight back into the input box so you can immediately round-trip it through the disassembler and confirm the encoding is what you intended. Round-tripping is the fastest way to verify a hand-written instruction encoding before dropping it into an exploit, a patch, or a hardware test harness.

Beyond Plain Disassembly

  • Shellcode detection: flags patterns typical of position-independent payloads — syscall sequences, GetPC tricks, suspicious jump chains — and assigns a risk level.
  • Packer and protector detection: scans for known signatures such as UPX and reports the offset where the marker was found, plus unpacking guidance.
  • Entropy and statistics: byte-level Shannon entropy is a quick indicator of compression or encryption — high entropy over a whole blob usually means packed or encrypted data rather than plain code.
  • String extraction: pulls printable ASCII runs out of the byte stream, often the fastest route to URLs, filenames, or command strings.
  • Call graph: builds a graph from the decoded calls and branches, exportable as ASCII, JSON, DOT (for Graphviz), or Mermaid.
  • Decompiler: produces pseudo-C from the disassembly to give you the shape of the control flow at a glance.
  • Performance analysis: summarises the instruction mix so you can spot hot patterns in a short routine.

When you are done here, related work often continues in the hex editor for byte-level edits, the file magic number checker to confirm what a blob actually is, or the malware deobfuscator when the payload arrives wrapped in encoding layers.

Frequently Asked Questions

Is this a free online disassembler?

Yes. There is no account, no upload limit tied to a plan, and no server-side processing. The Capstone and Keystone WebAssembly modules load into your browser and do all the decoding locally.

Which architectures does it disassemble?

x86 and x86-64 (16-, 32- and 64-bit), ARM64/AArch64, ARM32 including Thumb and Cortex-M, RISC-V (32- and 64-bit), MIPS (MIPS32, MIPS64, microMIPS), PowerPC (32- and 64-bit), SPARC (SPARC32 and V9), and Motorola 68K (68000 through 68040).

Can I use this as an online Ghidra alternative?

For quick byte-level questions, yes — and it needs no install. But it is not a full replacement. Ghidra and IDA Pro parse whole executables, recover functions and types across an entire binary, resolve symbols and imports, and give you a persistent, annotatable project database. This tool disassembles a byte string you supply, with pseudo-C and call-graph views on top. Use it for snippets, shellcode, crash-dump bytes, and encoding checks; use a full suite for whole-binary reverse engineering.

My output is nonsense. What went wrong?

Almost always the architecture or mode is wrong, or the start offset is not an instruction boundary. Try the other CPU modes for your architecture (particularly ARM vs Thumb), and try shifting the input by one or two bytes. Very high entropy with no valid instructions usually means the data is compressed or encrypted, not code.

What is the difference between a disassembler and a decompiler?

A disassembler maps machine code one-to-one onto assembly mnemonics — a lossless, mechanical translation. A decompiler goes further and tries to reconstruct higher-level source such as C, which involves inference and is inherently approximate. This tool does both, but treat the disassembly as ground truth and the pseudo-C as a reading aid.

Does the tool support AT&T syntax?

Yes, for x86 and x86-64. Switch the syntax selector to AT&T to get GAS-style output with reversed operands and %-prefixed registers, matching what objdump prints by default on Linux.

Can I convert assembly back into hex bytes?

Yes. The Assembler tab takes assembly source and emits machine code hex for the selected architecture and mode, and pushes the result into the disassembler input so you can verify the encoding immediately.

Can I disassemble a whole executable?

You can upload a file and disassemble its bytes, but the tool decodes a linear byte stream — it does not parse PE, ELF, or Mach-O headers to find the code sections for you. For a full binary, extract the section you care about first, or set the base address to the section’s virtual address so branch targets read correctly.

Is my machine code sent to a server?

No. Disassembly, assembly, string extraction, entropy, and pattern detection all run in your browser via WebAssembly. That makes the tool usable on samples you are contractually or legally prohibited from uploading.

Online Disassembler: Convert Hex Machine Code to Assembly

This free online disassembler turns raw machine-code bytes into human-readable assembly, right in your browser. Paste hexadecimal bytes (or Base64), pick the target CPU architecture and mode, and the tool decodes each instruction into its mnemonic, operands, and byte breakdown. The decoding engine is Capstone compiled to WebAssembly, so the same disassembler library used by professional reverse-engineering tooling runs 100% client-side — your bytes are never uploaded to a server.

Supported Architectures

Select the architecture and mode that match the code you are decoding. "Hex to assembly" only produces correct output when the architecture and bit-width are right — the same bytes disassemble to completely different instructions on x86 versus ARM.

ArchitectureModes available
x86 / x86-6416-bit, 32-bit, 64-bit
ARM (32-bit)ARM, Thumb, Cortex-M
ARM64 (AArch64)64-bit
RISC-VRV32, RV64
MIPSMIPS32, MIPS64, microMIPS
PowerPC32-bit, 64-bit
SPARCSPARC32, SPARC V9
Motorola 68K68000–68040

For x86 you can also switch between Intel syntax (mov rax, rdi) and AT&T syntax (movq %rdi, %rax) to match the toolchain you are used to.

How to Convert Hex to Assembly

  1. Choose your input format: paste hex bytes (any of 48 89 e5, 0x48, 0x89, 0xe5, 4889e5, or \x48\x89\xe5) or switch the toggle to Base64 and paste a Base64-encoded byte string.
  2. Pick the Architecture and Mode (and, for x86, the Syntax).
  3. (Optional) Set a Base Address in hex so jump and call targets are shown at the real load address instead of starting at 0.
  4. Click Disassemble. Each instruction shows its address, raw bytes, mnemonic, and operands.

You can also upload a binary file (.bin, .exe, .elf, .o, .dll, .so, .dylib); the tool reads it locally, detects common executable headers, and disassembles the code section.

Base Address and Offsets

By default the first byte is shown at address 0. Set a base address (in hex) to match where the code is actually loaded in memory — this makes relative branch and call targets resolve to meaningful addresses, which is essential when you are cross-referencing a disassembly against a debugger or a memory dump.

Exporting Your Results

  • Copy the disassembly to your clipboard with one click.
  • Download as TXT for a formatted, address-aligned listing.
  • Download as JSON for a structured representation (address, bytes, mnemonic, operands) you can feed into other tools or scripts.
  • Share a permalink — the hex bytes and the selected architecture/mode are encoded in the URL, so the link reproduces the exact same disassembly when opened.

Beyond Basic Disassembly

The tool also offers an instruction-encoding breakdown (prefixes, opcode, ModR/M, SIB, displacement) for learning how x86 instructions are built, string extraction, shellcode and packer detection, and a call-graph view for understanding control flow in larger buffers.

Privacy

Every step — hex parsing, Base64 decoding, file reading, and disassembly via the Capstone WebAssembly module — runs entirely in your browser. Nothing you paste or upload is transmitted to a server, which makes this safe for analyzing untrusted or sensitive binaries.

What is Machine Code Disassembly?

Machine code disassembly is the process of converting binary machine code (hexadecimal bytes) back into human-readable assembly language instructions. When software is compiled, high-level source code (like C, C++, or Rust) is transformed into machine code—the raw binary instructions that processors execute directly. Disassembly reverses this process, allowing security researchers, reverse engineers, and developers to analyze compiled binaries without access to the original source code.

The disassembly process involves:

  • Instruction Decoding: Interpreting byte sequences as processor instructions based on the target architecture (x86-64, ARM, RISC-V, etc.)
  • Operand Analysis: Identifying registers, memory addresses, and immediate values used by each instruction
  • Syntax Translation: Converting the decoded instruction into assembly syntax (Intel, AT&T, or architecture-specific format)

This tool uses the Capstone disassembly framework, a lightweight and powerful engine that supports multiple architectures and is widely used in professional security tools like IDA Pro, Ghidra, and radare2.

Common Use Cases for Disassembly

Disassemblers are essential tools across multiple domains:

Malware Analysis & Cybersecurity

Security researchers use disassemblers to analyze malicious software, understand attack techniques, and develop detection signatures. By examining the assembly code, analysts can identify shellcode, detect obfuscation techniques, and reverse-engineer malware behavior without executing it.

Reverse Engineering & Software Analysis

When source code is unavailable, disassembly allows developers to understand how proprietary software works, identify security vulnerabilities, or ensure compatibility. This is critical for legacy system maintenance, interoperability research, and vulnerability disclosure.

CTF Challenges & Security Training

Capture The Flag (CTF) competitions frequently include reverse engineering challenges where participants must disassemble binaries to find hidden flags, bypass protection mechanisms, or understand exploitation techniques. Disassembly skills are fundamental for binary exploitation and pwn challenges.

Firmware & Embedded Systems

Firmware reverse engineering requires disassembling compiled code from IoT devices, routers, and embedded systems. This helps identify security flaws in devices that may lack proper security updates or contain hardcoded credentials.

Learning Computer Architecture

Students and developers learning assembly language can use disassemblers to see how compilers translate high-level code into machine instructions, understand optimization techniques, and learn how different CPU architectures handle the same operations.

Understanding Processor Architectures

Different processor architectures use distinct instruction sets, each with unique characteristics:

x86-64 (AMD64/Intel 64)

The most common architecture for desktop and server systems. x86-64 uses variable-length instructions (1-15 bytes), complex instruction set computing (CISC), and supports both Intel and AT&T assembly syntax. It's widely used in Windows, Linux, and macOS systems.

ARM & ARM64 (AArch64)

Dominant in mobile devices, embedded systems, and increasingly in desktop computers (Apple Silicon). ARM uses fixed-length 32-bit instructions (or 16-bit in Thumb mode), reduced instruction set computing (RISC), and is known for power efficiency. ARM64 is the 64-bit evolution with enhanced capabilities.

RISC-V

An open-source instruction set architecture gaining traction in embedded systems, IoT devices, and research. RISC-V emphasizes simplicity, modularity, and extensibility, making it popular for custom processor designs and educational purposes.

MIPS

Historically used in routers, embedded systems, and game consoles (PlayStation). While declining in new designs, MIPS remains important for legacy device analysis and security research.

PowerPC (PPC)

Found in older Apple computers (pre-Intel Macs), gaming consoles (PlayStation 3, Xbox 360), and embedded systems. PowerPC uses a RISC architecture with fixed-length 32-bit instructions.

Each architecture requires different disassembly approaches, as instruction encoding, registers, and calling conventions vary significantly.

Intel vs AT&T Assembly Syntax

x86/x86-64 assembly can be written in two main syntaxes, which differ in instruction ordering and formatting:

Intel Syntax (Default for Windows, IDA Pro)

mov eax, 5          ; destination first, source second
add rax, rbx        ; rax = rax + rbx
mov [rax], ebx      ; store ebx into memory at address rax

Intel syntax is more intuitive for beginners: destination comes first (like x = y in programming), and memory references use brackets without size prefixes.

AT&T Syntax (Default for GCC, Unix tools)

movl $5, %eax       ; source first, destination second
addq %rbx, %rax     ; rax = rax + rbx
movl %ebx, (%rax)   ; store ebx into memory at address rax

AT&T syntax requires percent signs before registers, dollar signs before immediate values, and suffixes indicating operand size (b=byte, w=word, l=long, q=quad).

When to Use Each:

  • Intel syntax: Preferred for Windows reverse engineering, malware analysis, and beginners learning assembly
  • AT&T syntax: Standard for Unix/Linux development, GCC compiler output, and GDB debugger

This tool defaults to Intel syntax but allows switching for compatibility with different tools and workflows.

How This Tool Compares to Professional Disassemblers

Professional reverse engineering tools offer different capabilities and trade-offs:

IDA Pro (Commercial, ~$1,800-$3,500)

The industry standard for professional reverse engineering. IDA Pro offers advanced features like cross-references, function recognition, automatic commenting, and the Hex-Rays decompiler (converts assembly back to C-like pseudocode). It excels at analyzing large, complex binaries and provides extensive plugin support.

Ghidra (Free, Open-Source)

Developed by the NSA and released publicly in 2019, Ghidra rivals IDA Pro in functionality while being completely free. It includes a powerful decompiler, collaborative analysis features, and strong multi-architecture support. Ghidra is ideal for large-scale analysis and team collaboration.

radare2/Cutter (Free, Open-Source)

A command-line reverse engineering framework with a GUI frontend (Cutter). Radare2 emphasizes scriptability, debugging capabilities, and supports the widest range of architectures. It's preferred for dynamic analysis, embedded systems, and users comfortable with terminal workflows.

Binary Ninja (Commercial, ~$300-$3,000)

A modern disassembler known for its clean interface, powerful API, and intermediate language (BNIL) for analysis. Binary Ninja is popular among CTF players and security researchers who value customization and scripting.

This Tool: Machine Code Disassembler

Our tool focuses on quick, online disassembly without installation requirements. It's ideal for:

  • Analyzing shellcode snippets during CTF challenges
  • Quick instruction lookups while reading security research
  • Learning assembly language interactively
  • Mobile/tablet access when desktop tools aren't available
  • Privacy-conscious analysis (100% client-side, no server uploads)

While professional tools offer deeper analysis capabilities (control flow graphs, function analysis, decompilation), this online disassembler provides instant access for focused, instruction-level analysis without the complexity or cost of full reverse engineering suites.

Best Practices for Binary Analysis

Follow these guidelines for effective disassembly and reverse engineering:

1. Verify Architecture and Endianness

Always confirm the target architecture before disassembly. x86-64 uses little-endian byte ordering, while some ARM and MIPS systems use big-endian. Incorrect architecture selection produces nonsensical output.

2. Start with Entry Points

For executable files, begin disassembly at the program entry point (often found in PE/ELF headers). For shellcode, identify the starting instruction carefully—shellcode often includes NOP sleds or position-independent code.

3. Identify Code vs Data

Not all bytes in a binary are instructions. Compilers mix code with embedded data (strings, constants, jump tables). If disassembly produces strange instructions, you may be looking at data regions.

4. Use Context from Other Tools

Combine disassembly with other analysis techniques:

  • Strings extraction to find embedded text
  • Entropy analysis to detect encryption/compression
  • File format analysis (PE/ELF headers) for structural information
  • Dynamic analysis (debugging, tracing) to confirm static analysis findings

5. Document Your Findings

Professional reverse engineers maintain detailed notes about:

  • Function purposes and naming conventions
  • Register usage patterns
  • Calling conventions observed
  • Interesting code patterns or security vulnerabilities

6. Respect Legal and Ethical Boundaries

Only reverse engineer software where you have legal authorization:

  • Software you own or have explicit permission to analyze
  • CTF challenges and educational exercises
  • Security research with responsible disclosure
  • Malware samples in isolated research environments

Unauthorized reverse engineering may violate software licenses, anti-circumvention laws (DMCA), or computer fraud statutes.

Frequently Asked Questions

What is a disassembler?+

A disassembler converts machine code (binary instructions) back into assembly language, the human-readable representation of CPU instructions. Unlike decompilers which attempt to produce high-level source code, disassemblers produce low-level assembly that directly corresponds to the machine code bytes.

Disassemblers are essential for reverse engineering, malware analysis, debugging compiled programs, and understanding how software works at the lowest level. They help security researchers identify vulnerabilities, analyze suspicious files, and verify that compiled code matches its intended behavior.

Learn more: Read our comprehensive guide Disassemblers Explained: Your Complete Guide to Assembly-Level Reverse Engineering to understand how disassemblers work, compare professional tools, and explore career opportunities.

Which architectures are supported?+

This tool supports multiple processor architectures commonly encountered in reverse engineering:

  • x86-64 (AMD64/Intel 64): Dominant architecture for desktop and server systems
  • x86-32 (i386): Legacy 32-bit Intel/AMD processors
  • ARM: 32-bit ARM processors in embedded systems and IoT
  • ARM64 (AArch64): 64-bit ARM in modern smartphones and Apple Silicon
  • RISC-V: Open-source ISA for embedded systems
  • MIPS: Routers, network equipment, legacy consoles
  • PowerPC: Older Macs, gaming consoles, industrial systems

For x86/x86-64, you can choose between Intel syntax (destination first) and AT&T syntax (source first).

What input formats does the tool accept?+

The tool accepts machine code in multiple common formats for maximum flexibility:

  • Raw hexadecimal: Continuous hex string like 4831c0bb2a000000
  • Space-separated hex: 48 31 c0 bb 2a 00 00 00
  • C-style byte arrays: \x48\x31\xc0\xbb\x2a\x00\x00\x00
  • Python bytes format: b"\x48\x31\xc0\xb"
  • Binary file upload: Upload compiled executables (EXE, ELF, Mach-O) or raw binary dumps

The tool automatically strips common formatting characters (spaces, newlines, backslashes, quotes) to process the raw bytes. For uploaded files, it attempts to detect the file format and locate executable code sections automatically.

How do I analyze shellcode with this tool?+

Shellcode analysis is a primary use case for this disassembler. Follow these steps:

1. Copy the Shellcode

Obtain shellcode from exploit code, CTF challenges, or malware samples.

2. Select Architecture

Most shellcode targets x86-64 or x86-32. Check register usage (RAX/RBX = 64-bit, EAX/EBX = 32-bit).

3. Paste and Disassemble

The tool accepts raw hex, byte arrays, and space-separated formats.

4. Look for Patterns

  • NOP sleds: Repeated 0x90 bytes
  • Position-independent code: CALL/POP tricks
  • Syscalls: INT 0x80 or SYSCALL instructions
  • Stack strings: Data pushed to avoid NULL bytes

5. Identify Payload

Common types: reverse shells, bind shells, command execution, file operations.

Deep dive: Read our comprehensive Shellcode Analysis for Security Researchers: A Complete Guide for advanced techniques, encoding methods, and real-world examples.

Can I upload entire executable files for disassembly?+

Yes, this tool supports uploading Windows PE files, Linux ELF binaries, macOS Mach-O executables, and raw firmware dumps.

How Upload Works

  • PE files: Auto-detects entry point and code section
  • ELF files: Extracts entry point and .text section
  • Mach-O: Identifies executable segments
  • Raw binaries: Starts from offset 0

Best Practices

  1. Select correct architecture (x86-64 for most modern binaries)
  2. Tool scans multiple offsets if needed
  3. Large files over 10MB may take longer (client-side processing)

Privacy: All processing in your browser, no server uploads.

Learn more: See our deep dive Understanding PE, ELF, and Mach-O: Executable File Format Deep Dive to understand file structures and analysis techniques.

What if my binary is packed or obfuscated?+

Packed or obfuscated binaries require special handling. Many programs and malware use packers (UPX, Themida, VMProtect) that compress or encrypt the original code.

Packer Detection

This tool includes basic detection using entropy analysis, PE section name analysis, and Detect It Easy (DiE) signatures.

If Packing Detected

  1. Tool warns that disassembly shows the unpacking stub, not actual program logic
  2. Unpack first using UPX unpacker, de4dot, or manual debugger unpacking
  3. Re-upload the unpacked binary for accurate disassembly

Obfuscated Code

Obfuscation techniques (junk instructions, control flow flattening, opaque predicates) still disassemble correctly, but the assembly will be intentionally convoluted and harder to understand.

Best Practice: Use packer identification tools first (Detect It Easy, PEiD), unpack if necessary, then proceed with disassembly.

Master unpacking: Read our comprehensive Complete Guide to Unpacking and Deobfuscating Malware for manual and automated unpacking techniques.

What advanced features does this tool provide beyond basic disassembly?+

This tool provides several professional-grade features:

1. Binary File Format Detection

Automatically identifies PE (Windows), ELF (Linux), Mach-O (macOS) formats and extracts entry points and section headers.

2. Packer & Obfuscation Detection

Uses Detect It Easy signatures to identify common packers (UPX, Themida), compilers, and entropy analysis to detect encryption.

3. String Extraction

Scans binaries for ASCII/Unicode strings to find debugging messages, URLs, credentials, and configuration data.

4. Instruction Encoding Details

Shows raw byte encoding, instruction size, memory addresses, and syntax-highlighted mnemonics.

5. Multiple Architecture Support

Allows switching between 32-bit and 64-bit modes for multi-architecture malware analysis.

6. Syntax Flexibility

Toggles between Intel and AT&T syntax for x86/x86-64 compatibility.

7. Privacy-First Design

Processes everything client-side using WebAssembly with no server uploads, making it safe for sensitive binaries and functional offline.

How do I convert hex to assembly online?+

Paste your hexadecimal bytes into the input box (formats like "48 89 e5", "0x48, 0x89, 0xe5", "4889e5", and "\x48\x89\xe5" all work), select the target architecture and mode — for example x86 in 64-bit mode — and click Disassemble. The tool decodes each byte sequence into its assembly mnemonic and operands. Getting the architecture and bit-width right is essential: the identical hex bytes produce entirely different instructions on x86 versus ARM, so "hex to assembly" is only meaningful once you tell the disassembler which CPU the bytes are for. The whole conversion runs in your browser using the Capstone WebAssembly engine, so nothing is uploaded.

Can I paste Base64-encoded bytes instead of hex?+

Yes. Use the Hex / Base64 toggle above the input box and switch it to Base64, then paste a Base64-encoded byte string (standard or URL-safe Base64 are both accepted). When you click Disassemble, the tool decodes the Base64 to raw bytes, converts it to hex, and disassembles it exactly as it would hex input. This is handy when your bytes come from a JSON payload, a config blob, or an API response that already encodes binary as Base64 — you do not have to convert it to hex by hand first.

What is the difference between ARM and ARM64 disassembly?+

They are different instruction sets and must be disassembled with the matching architecture setting. "ARM" (also called ARM32 or AArch32) covers 32-bit ARM code and includes the ARM, Thumb, and Cortex-M modes; "ARM64" (AArch64) is the 64-bit instruction set used by modern Apple Silicon, most 64-bit Android devices, and recent server chips. The same bytes decode to nonsense if you pick the wrong one, so choose ARM64 for 64-bit code and ARM (with the correct ARM/Thumb mode) for 32-bit code. Both run through the same Capstone WebAssembly engine in your browser.

Why do I need to set a base address?+

By default the disassembler shows the first byte at address 0. Setting a base address (entered in hex) tells the tool where the code is actually loaded in memory, so that relative branch and call targets resolve to the real addresses instead of offsets from zero. This matters when you are matching a disassembly against a debugger, a crash dump, or a memory map — with the correct base address, a "jmp" or "call" target lines up with what you see in your other tooling. If you are just decoding a standalone snippet, you can leave it at 0.

Does this online disassembler upload my bytes to a server?+

No. Every step — parsing the hex or Base64 input, reading any uploaded binary file, and disassembling via the Capstone engine — runs entirely in your browser. Capstone is compiled to WebAssembly and loaded into the page, so the machine code you paste or the file you select never leaves your device and is never transmitted anywhere. That makes it safe for analyzing untrusted shellcode, proprietary binaries, or anything you would not want to send to a third-party server.

Can I switch between Intel and AT&T assembly syntax?+

Yes, for x86 and x86-64. Use the Syntax selector to choose Intel syntax (destination first, e.g. "mov rax, rdi") or AT&T syntax (source first with % register prefixes and operand-size suffixes, e.g. "movq %rdi, %rax"). Pick whichever matches the toolchain you are reading alongside — Intel syntax is common in Windows/MASM and most documentation, while AT&T syntax is the default for GNU as and gdb on Linux. The syntax option appears only for x86 architectures, since the other instruction sets have a single canonical assembly form.

This tool is provided for informational and educational purposes only. All processing happens in your browser — no data is sent to or stored on our servers. While we strive for accuracy, we make no warranties about the completeness or reliability of results.