Real disassembler for unverified contracts on Etherscan, BscScan, Polygonscan, Arbiscan and 5 more: real PCs, clickable jumps.
Users
3
−1 in 30 days
Rating
0.0 / 5
unchanged in 30 days
Ratings
0
0 in 30 days
Store rank
#347K
#267K among extensions
Version
1.0.0
updated 23 Aug 2026
Users
monthly, 2 months
Latest, 15 Oct 2026:3 usersMove the mouse over the chart for any month
Ratings count
monthly, 2 months
Latest, 15 Oct 2026:0 ratingsMove the mouse over the chart for any month
The Chrome Web Store rounds user counts down to the leading digit, so the user line moves in steps. The ratings count is exact and is the better signal of real adoption.
About blazed.sh — EVM Disassembler for Etherscan, BscScan & 7 more
The opcode view for unverified contracts on Etherscan and alike is not really usable for anything besides just copy pasting it into another tool for more detailed representation and debugging. Our extension changes this by giving you a more structured bytecode view with function annotations and real EVM.js based decompiler.
This extension replaces the default bytecode/opcode view in place, on the same page.
Works with Etherscan and on the eight other explorers built from the same codebase which includes: BscScan, Polygonscan, Arbiscan, Basescan and more.
WHAT YOU GET
• Real program counters: hex byte offsets, the ones the bytecode actually uses.
• Clickable jump targets: every static jump resolves to its destination and is validated
against the JUMPDEST set before it becomes a link.
• Honest unknowns: a jump whose target is computed at runtime renders as "→ ?" rather
than a confident guess. Invalid targets are flagged separately.
• Reverse cross-references: every JUMPDEST shows how many jumps reach it; click to list
the sources and jump to any of them.
• Back and forward navigation (Alt+← / Alt+→), so following a chain of jumps is
reversible.
• Function blocks: one collapsible block per 4-byte selector, recovered from the
dispatch table. Selectors that share a body are grouped rather than duplicated.
• Function names resolved through openchain.xyz, cached locally so each selector is
looked up at most once.
• Decompiled Solidity beside the listing: produced per function, not as one collapsed
blob, and syntax-highlighted. It follows whatever you are reading as you scroll, and
pins when you expand a function.
• Storage layout and ERC standard detection from symbolic execution.
• solc version and IPFS metadata hash, parsed from the contract's CBOR trailer.
• The metadata trailer rendered as a hex dump with an ASCII gutter, instead of the
nonsense opcodes Etherscan shows.
• Search by mnemonic, operand hex, or @pc; highlight matches in place or filter the
listing down to them.
• Copy or download the full disassembly.
• A resizable split between the disassembly and the source pane.
BUILT FOR REAL CONTRACTS
The listing is virtualized. A 12,636-instruction contract renders as roughly 200 DOM
nodes and stays under 80 rows mounted at any scroll position, so scrolling and searching stays responsive on contracts that would otherwise lock up a browser tab.
PRIVACY
• No requests are made to Etherscan. The bytecode is read from the page you are already
looking at - no API key, no RPC endpoint, no account.
• Symbolic execution and decompilation run entirely on your machine.
• Function-name lookup sends 4-byte selectors - and only 4-byte selectors - to
api.openchain.xyz. Never the contract address, never the bytecode. Results are cached
locally so a selector is asked about at most once. It can be switched off.
• The Sourcify check sends the contract address to sourcify.dev to see whether verified
source exists elsewhere. It can be switched off.
• No analytics, no telemetry, no account, no tracking.
HONEST LIMITS
• Verified contracts are left alone. They already have source; the panel stays out of
the way.
• Not every function decompiles. On a large reference contract, 25 of 51 public functions
produce readable Solidity; the rest were not reachable by symbolic execution, and the
panel says so plainly instead of showing a misleading stub. The disassembly is
unaffected either way.
• Function block boundaries are an approximation. The compiler emits shared internal
helpers after the last public entry point, so the final block is shared code rather
than part of the last function.
• Decompiled output is reconstructed from bytecode. It is a reading aid, not the original
source, and it is labelled as such in the panel.
Built by blazed.sh — https://blazed.sh