Capstone
5.0.8 open-sourceThe section your link pointed to isn't on Capstone's page any more, so we've brought you to the top.
Capstone is a disassembly framework supporting multiple hardware architectures, designed for binary analysis and reversing in the security community.
csh = Cs(CS_ARCH_X86, CS_MODE_64 | CS_MODE_X86_INTEL)
for insn in csh.disasm(code, 0x1000):
print('0x%x:\t%s\t%s' % (insn.address, insn.mnemonic, insn.op_str))
csh = Cs(CS_ARCH_XTENSA, CS_MODE_XTENSA_ESP32S3)
for insn in csh.disasm(firmware_bytes, 0x40000000):
print('0x%x:\t%s\t%s' % (insn.address, insn.mnemonic, insn.op_str))
cs = Cs(CS_ARCH_X86, CS_MODE_64 | CS_MODE_X86_AMD)
for i in cs.disasm(code, 0x1000):
print(i.mnemonic, i.op_str)
cs = Cs(CS_ARCH_XTENSA, CS_MODE_XTENSA_ESP32S3)
for i in cs.disasm(firmware_bytes, 0x40000000):
print(i.mnemonic, i.op_str)
#define CAPSTONE_RISCV_COMPAT_HEADER
#include <capstone/capstone.h>
// CS_MODE_RISCVC now works as an alias for CS_MODE_RISCV_C
cs_open(CS_ARCH_RISCV, CS_MODE_RISCV32 | CS_MODE_RISCVC, &handle);
import capstone
md = capstone.Cs(capstone.CS_ARCH_RISCV, capstone.CS_MODE_RISCV64)
md.detail = True
for insn in md.disasm(b'\x33\x05\xa6\x00', 0x1000): # add a0, a2, a0
for op in insn.operands:
print(f"{insn.mnemonic}: op={op.reg} access={op.access}")
cstool -s <architecture> <bytes>
# Access skipdata mnemonic
mnemonic = cs.skipdata_mnem
# Set custom callback
cs.skipdata_callback = my_callback_fn
cs_disasm_iter(csh, &code, &code_len, &addr, &insn);
cs_open(CS_ARCH_MIPS, CS_MODE_MIPS32R6, &handle);
Summary
Capstone is an open-source disassembly framework used as a library for binary analysis and reverse engineering, distributed under the BSD license. It covers a wide range of instruction sets — ARMARMA family of RISC processor architectures designed by Arm Holdings and licensed to chip makers worldwide; tools target it to run natively on mobile, embedded, and increasingly server and desktop hardware., x86, MIPSMIPSA RISC processor architecture originally developed at Stanford and commercialized by MIPS Technologies, widely used in embedded and network devices; cyber tools target it to analyze or exploit routers, cameras, and similar hardware., PowerPC, RISC-V, M68K, WebAssemblyWebAssemblyA binary instruction format that runs in browsers and server runtimes at near-native speed, letting developers compile C, Rust, or other languages into a portable, sandboxed module any compliant host can execute., and dozens more — through a single architecture-neutral C API, with bindings for languages including Python, Rust, Go, and Java, so it drops into tools written in most common stacks. It's aimed at malware analysts and reverse engineers building or extending disassembly tooling rather than at end users running a standalone application, and its thread-safe, embeddable design suits use inside firmware or kernel-level analysis tools as well as desktop ones. First committed in 2013, it remains active with 389 contributors, 140 commits and 11 releases in the past year, and a release only 31 days ago.
Capstone is a disassembly framework supporting multiple hardware architectures, designed for binary analysis and reversing in the security community.
How Capstone helps
What instruction set is this unfamiliar binary blob actually written in?
decodes the byte stream against any of its supported architectures — ARM, x86, MIPS, PowerPC, RISC-V, M68K, WebAssembly, and dozens more — through one architecture-neutral API, so the same calling code identifies instructions regardless of the target ISA
Which registers does this instruction actually read and write?
returns per-operand access details (implicit and explicit registers touched) for the decoded instruction, giving the semantics needed for taint tracking or data-flow analysis rather than just a mnemonic
Can I disassemble untrusted or malware-crafted code without one thread's analysis corrupting another's?
is built thread-safe, so multiple disassembly calls can run concurrently inside the same process without shared state clobbering results
Will this instruction stream trip up my analysis tool the way it would a real CPU?
is tuned to handle the tricks x86 malware uses to confuse disassemblers, and flags instructions that decode but are structurally invalid with a distinct fail state rather than silently mis-parsing them
How do I add disassembly to a tool written in Python, Rust, Go, or Java instead of C?
exposes the same C engine through bindings in those languages and others, so the tool calls into one library rather than re-implementing decoding per language
Can I embed disassembly inside firmware or kernel-level tooling, not just a desktop app?
is designed as a lightweight, embeddable library rather than a standalone application, so it drops into constrained runtime environments like kernels or firmware analysis tools
Languages
Command line
No command matches.
| option | found in | since | description |
|---|
Values are placeholders taken from each option’s declared default. Nothing is executed here — the output shown is a recording of a run that already happened.
Score card
-
Shipping velocity releases a month, last 12 months
-
Documentation quality release-notes rubric, 0–100
-
Breaking-change discipline how rarely a release breaks users, and notice given
-
Maintenance risk quiet time against its own cadence, maintainers
-
Innovation & surface new capabilities, API and MCP surface
- Community health
-
Contributor trend distinct committers, this year against last
-
Maintainer concentration bus factor now against a year ago
-
Issue backlog trend issues closed per issue opened, 12 months
-
Responsiveness median time to a maintainer’s first reply
Nine scores for Capstone, each built from the releases, notes and API history this site tracks — and, on Researcher and Business, where it stands among every measured tool in its category and how that has moved.
Score cards are part of every paid plan.
See plans → Already subscribed? Sign in →Trajectory
Blank means never measured; nothing here is a filled-in zero.
Peer standings are included with Researcher and Business. See how this tool ranks against its competitors, using data we don't publish anywhere else.
See plans →Each score is 0–100 on a published rubric, derived from data this site already shows. A dimension we cannot measure says so — it is never scored 0 and never enters a rank.
How this is scored
- Shipping velocity — releases a month over the last 12 months, on a log scale where 16 a month scores 100. Needs 3 releases in the window.
- Documentation quality — the release-notes rubric published on the analytics page, unchanged.
- Breaking-change discipline — the share of releases carrying a breaking change (none scores 100, half or more scores 0). Only projects that label breaking changes are measured: a clean record cannot be told from an unlabelled one.
- Maintenance risk — quiet time measured against the tool's own release cadence (quiet longer than 90 days and three typical gaps scores 0), plus the number of active maintainers and whether contributors are growing, where known. Higher is lower risk.
- Innovation & surface — new capabilities in the feature ledger this year, API and MCP operations added, and the share of commits that are features: the mean of whichever we hold.
- Community health (open-source tools only) — each is a direction, not a size: contributors this year against last, the bus factor now against a year ago, and issues closed per issue opened, where steady scores 50, doubled 100 and halved 0; plus the median time to a maintainer's first reply (an hour scores about 100, a month or more 0). A commercial card has no repository and carries none of the four.
- Documented delivery (commercial tools) — when a vendor's documented new capabilities have slowed against its own baseline, that counts against the overall standing as heavily as two low dimensions. Steady delivery, or too little history to judge, leaves the standing alone; it is never a sixth score.
- Open-source tools are scored on repository signals; commercial tools on their published changelog. Ranks compare tools within one category and one profile and need at least five measured peers; the overall standing needs three ranked dimensions. Best-in-breed or consolidator is a shape, not a quality, and is never scored.
Release-note detail over time
See how much detail Capstone puts in its release notes, quarter by quarter, and compare it with tracked tools in the same category. This history uses up to ten retained, reviewed notes per tool; sparse or blank older quarters may reflect that limit.
Checking release-note history…
Releases
32 entries
No entries match these filters.
- September 20262
- July 20261
- June 20261
- May 20265
- February 20261
- January 20261
- December 20252
- August 20251
- April 20251
- March 20251
- January 20251
- November 20241
- September 20241
- August 20241
- August 20231
- July 20232
- February 20221
- May 20201
- January 20191
- December 20181
- July 20171
- March 20171
- May 20151
- November 20141
- March 20141
Project health
Issue, contributor and maintainer activity in aquynh/capstone, 2023-10 – 2026-09, as of 2026-09-25. Twelve-month figures first; the trend lines run the whole window.
- Contributors 37 +14 vs prior 12 months
- Maintainers 6 +4 joined · −3 left, last 12 months
- Bus factor 2 committers behind half the commits
- Community-filed not measured of issues opened, last 12 months
- Median time to close not measured issues closed, last 12 months
- Open backlog not measured open issues today
- Issues opened / month not measured
- Open backlog not measured
- Contributors / month 7
- Commits / month 22
- Stars 9,022
Counts from the project's public repository and git history; no individuals are identified. Maintainers are the committers covering 80% of the last year's commits. how we measure this
Add the badge to your README
Maintain this project? The badge links readers straight to this page, so they can follow every release here.