Decompile .NET DLL assemblies back to a C# project.
Drag and drop your .dll file or click to browse.
CIL bytecode is converted back to C# source code.
Explore namespaces, classes, and methods online.
For Windows app distributions, use the MSIX package viewer or APPX extractor to inspect bundles, manifests and supported managed assemblies.
DLL stands for Dynamic Link Library. It is a file format used on Windows for shared libraries — code modules that can be loaded and used by multiple programs at the same time. DLLs allow code reuse and modular application architecture.
In the .NET ecosystem, DLLs are the primary way to distribute class libraries, frameworks, and reusable components. Many NuGet packages distribute managed DLLs; others contain native libraries, content or dependency metadata.
There are two fundamentally different types of DLL files:
.NET DLLs contain CIL bytecode along with extensive metadata: type definitions, method signatures, field declarations, custom attributes, and assembly references. This metadata is far richer than what native code retains, which is why .NET decompilation produces much better results.
The decompiler reads the PE (Portable Executable) headers, parses the .NET metadata tables, and reconstructs high-level C# source code from the CIL bytecode. The output includes proper type inference, reconstructed LINQ expressions, async/await patterns, and other modern C# features.
A DLL with no CLR directory is native code, and the .NET decompiler is skipped rather than run and left to report that there is no managed metadata. The file is read structurally instead, which for a native library is often exactly what the question was:
.ico files, and every other resource with its id and languageThis is metadata and resource extraction, not source recovery, and the result labels it that way. An Authenticode certificate table is reported as present or absent only — nothing is hashed and no chain is built, so it is not a signature check. Reading native machine code itself is a job for a disassembler such as Ghidra or IDA.
Standard UPX-packed libraries are expanded to a separate copy first, confirmed by running UPX rather than by trusting UPX0 section names, and the expanded copy is classified again — so a .NET assembly hidden under the packing still reaches the C# decompiler. Your uploaded file is never modified and nothing is executed.
A DLL (Dynamic Link Library) is a shared library file used on Windows. It contains code and data that can be used by multiple programs simultaneously. .NET DLLs contain CIL bytecode and can be decompiled back to C# or VB.NET source code.
Only .NET DLL files can be decompiled to high-level source code. Native DLLs compiled from C or C++ contain machine code that can only be disassembled. Upload one anyway and you get its exported functions, imports, architecture, version information and extracted resources instead of an empty result.
Yes. Upload the .nupkg directly to the NuGet package viewer. It preserves the manifest and framework folders and recovers C# from supported managed DLLs. Reference assemblies contain API stubs; native binaries do not yield original C#.