Lightweight, accurate, gorgeous .NET performance profiler

A must-have tool for .NET developers to find slow methods, fix deadlocks, and optimize code.

A quick, easy, and pleasant way to analyze .NET performance

Discover which method calls take how much time and if JIT-compilation is the bottleneck.

Find out which lines of code are slow and how many times they are executed.

Discover if your application has to wait for synchronization or painfully long I/O operations like database queries.

NProfiler's specialty

Highly accurate timings

NProfiler is superior when it comes to adjusting the timings for profiler overhead. Most profilers ignore this problem.

  • On average, NProfiler's timings are much more realistic than those of other profilers.
  • NProfiler minimizes the risk of optimizing the wrong parts of your code based on incorrect timings.
  • You can see the actual performance of your code as if the profiler were not present. No more timings that are skewed by profiler overhead.
Read more

Profile any .NET application

Including .NET executables, ASP.NET web applications, Windows services, IIS and IIS Express sites and attach to running .NET processes.

In any .NET language with any framework

Profile C#, VB.NET, and F# using .NET Framework 2.0+, .NET Core, .NET 5+, and .NET Standard on Windows and Windows Server.

Integrated decompilation

Get line-level timings even if you don't have source code, for example, for third-party components or legacy assemblies.

Works seamlessly with .NET security

NProfiler uses clever tricks to provide line-by-line results even for security-transparent and partially-trusted assemblies, while other profilers simply crash.

Powerful, intuitive user interface

Easy configuration

Benefit from reasonable default values and recommendations for all options. Use saved settings from previous sessions for quick profiling.

Pinpoint profiling

Prevent massive slowdowns in your application by profiling only the methods you are truly interested in.


See performance metrics over time and select problematic ranges to display only data that matters.

Call tree

Get times and hit counts for all method calls and events, like JIT compilation. Poor performing stack traces will be auto-expanded.

Method list

Aggregate call tree items into flat lists to investigate the total performance impact of methods.

Line & statement-level results

See line-by-line performance data. Move the mouse over your code to get statement-level data if you have multiple statements on the same line.

Processes & threads

Examine the performance of whole processes or single threads. You can also profile child processes.

CPU, blocking, and total time

Understand if your code is slow due to computing intensity or extended blocking operations like sleeping, synchronization, or waiting for I/O.

Time formats

Display times as percentages, seconds, milliseconds, or high-precision ticks (1 second = 10,000,000,000 ticks).

Choose your favorite programming language

Profile any .NET language and select your favorite syntax for displaying method signatures afterward.

Save & load profiling results

Save results for later comparison against an optimized version of your application or to show them to your coworkers.

Inline help

NProfiler is so intuitive and easy to use that it is virtually self-explanatory. More complex options have small but helpful icons.

Ready for the most accurate .NET performance data?

Download NProfiler