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

  1. Build in Release so you upload the assembly you ship, not a debug build.
  2. Find the output — bin/Release/net8.0/YourApp.dll (or .exe).
  3. Upload it on the home page and download the obfuscated copy (named YourApp.obfuscated.dll so it can't overwrite the original).
  4. 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.