C# obfuscator
Protect your compiled C# from casual reverse engineering — free, in the browser, in about a minute.
You obfuscate the build output, not the source
A decompiler like ILSpy or dnSpy does not read your .cs files — it reads the
.NET assembly your C# compiles into (a .dll or .exe),
where every class, method and field still carries its original, readable name. That is what an
obfuscator rewrites.
So the flow is simple: build your project, then upload the compiled assembly. You get back a copy with the names scrambled that runs exactly the same.
How to obfuscate C# code
- Build in Release so you upload the assembly you ship, not a debug build.
- Find the output —
bin/Release/net8.0/YourApp.dll(or.exe). - Upload it on the home page and download the obfuscated copy
(named
YourApp.obfuscated.dllso it can't overwrite the original). - Run your test suite against the obfuscated build before shipping.
What it protects — and what it does not
Renaming turns ValidateLicenseKey into @a: someone reading the
decompiled output no longer gets your structure handed to them for free. Being straight about
the limits matters more than overselling:
- Names are rewritten for private and internal members always, and for the public surface of an application (a library's public API is preserved so callers still work).
- String literals are readable by default. A connection string or key compiled into your C# stays visible unless you enable string encryption (Pro). Secrets do not belong in a client binary regardless — see what obfuscation actually protects against.
- It is not a licensing system. A check that runs on the user's machine can be defeated; obfuscation raises the cost, server-side validation changes the outcome.
Reflection and serialization — the one thing to check
If your C# looks up members by their original name — Type.GetMethod("Foo"),
[JsonProperty]-free serialization that relies on property names, DI that binds by
convention — those names change when obfuscated. Keep [DataContract]/[JsonPropertyName]
attributes explicit, and run the obfuscated build once before release. Everything else just works.
Free vs Pro for C#
The free tier renames symbols in the browser with no account. Pro adds string encryption, control-flow obfuscation, call-reference proxying and optional method virtualization, plus larger files, batch mode and a CI/CD API. If you are weighing tools, the comparison pages put us honestly next to ConfuserEx, Dotfuscator, .NET Reactor and SmartAssembly — including where they do more.
C# is one of several .NET languages this works for — anything that compiles to a managed assembly (VB.NET, F#) obfuscates the same way. More in the guides.