Smali Decompiler

Smali to Java Online

Convert smali back to readable Java source code — or get the smali disassembly of any APK or DEX.

.smali .dex .apk
Drop your SMALI, DEX or APK file here
Choose file

⚠ Drag-and-drop upload could not load — an ad blocker is most likely blocking it. Please disable your ad blocker and reload the page to upload a file.

How It Works

1

Upload

Drag and drop a .smali file, or an APK or DEX you want smali for.

2

Assemble & Decompile

Smali is assembled into a DEX, then decompiled to Java with JADX.

3

Browse

Read the Java sources and the smali disassembly side by side.

What is Smali?

Smali is the assembly language for the Dalvik virtual machine — the bytecode format Android apps actually run. The name comes from the Icelandic word for "assembler", and its counterpart baksmali ("disassembler") is what apktool uses under the hood to turn a classes.dex file into a tree of readable .smali files.

Each .smali file describes exactly one class: its superclass, its fields, and every method as a sequence of Dalvik instructions with explicit register allocation. Where Java has int x = a + b;, smali has add-int v0, v1, v2. Nothing is inferred and nothing is reconstructed — it is a direct, lossless textual form of the bytecode.

Smali to Java

Going from smali back to Java is a two-stage process, and this tool does both. First the smali source is assembled into a Dalvik executable, which validates that your smali is well-formed and resolves all the register and type references. Then that DEX is decompiled to Java.

This round trip is useful when you have been handed a single smali class out of context — from a bug report, a security advisory, or a colleague — and you want to read it as Java rather than as assembly. Your smali must be a complete class definition, starting with a .class directive; a bare .method block will not assemble on its own.

Smali from APK, XAPK and DEX

Every Android file decompiled on this site now produces a smali/ folder alongside the usual sources/ and resources/ folders. The package structure mirrors the Java tree, so sources/com/example/MainActivity.java has its counterpart at smali/com/example/MainActivity.smali.

Having both is more useful than having either alone, because they fail in different places.

When Smali Beats Decompiled Java

Java decompilers reconstruct source code from bytecode, and reconstruction is a best-effort process. Smali is a transcription, and transcription always succeeds. That difference matters in several common situations:

Smali Instruction Basics

Dalvik is register-based rather than stack-based, which makes smali noticeably easier to read than JVM bytecode. A few conventions cover most of what you will see:

Frequently Asked Questions

How do I convert smali to Java online?

Upload your .smali file. It is assembled back into a Dalvik executable and then decompiled to Java with JADX. You get the Java class alongside the original smali so you can read both.

What is a smali file?

Smali is the human-readable assembly language for the Dalvik virtual machine used by Android. It is what apktool and baksmali produce when they disassemble a DEX file. Each .smali file corresponds to one Java class.

Can I get smali from an APK?

Yes. Every APK, XAPK, AAB and DEX file decompiled here produces a smali folder next to the Java sources, so you can compare the exact Dalvik instructions against the reconstructed Java.

Why would I read smali instead of Java?

Smali is an exact representation of what the app actually executes, while decompiled Java is a reconstruction. When a decompiler produces broken or missing code — common with heavy obfuscation — the smali is still correct and complete.

Can I edit smali and rebuild the APK?

This tool assembles smali into a DEX so you can verify your edits compile and see what Java they correspond to. Repacking and signing a full APK still needs apktool and apksigner on your own machine.

Is there a size limit?

Uploads are limited to 1 GB. Smali disassembly of very large APKs is capped so decompilation stays fast; when that happens a note in the smali folder tells you how many classes were written.