(aka Razor Lab, formerly also DotNetInternals)
C# and Razor compiler playground in the browser via Blazor WebAssembly. https://lab.razor.fyi/
| C# | Razor | 
|---|---|
![]()  | 
![]()  | 
- Razor/CSHTML to generated C# code / IR / Syntax Tree / Errors.
 - C# to IL / Syntax / IOperation / Symbols / decompiled-C# / Errors / Execution console output.
 - Any Roslyn/Razor compiler version (NuGet official builds or CI builds given PR number / branch / build number).
 - Offline support (PWA).
 - VSCode Monaco Editor.
 - Multiple input sources (especially useful for interlinked Razor components).
 - C# Language Services (completions, live diagnostics, code fixes).
 - Configuring any C# options (e.g., LangVersion, Features, OptimizationLevel, AllowUnsafe)
via Roslyn C# APIs or via 
#:propertydirectives (both with editor completions). - Referencing NuGet packages via 
#:packagedirectives. 
The recommended startup app for development is src/Server.
To hit breakpoints, it is recommended to turn off the worker (in app settings).
eng/BuildTools: build-time tools.src/App: the WebAssembly app.cd src/App; dotnet watch-src/Serveris better for development though.
src/Compiler: self-contained project referencing Roslyn/Razor. It's reloaded at runtime with a user-chosen version of Roslyn/Razor. It should be small (for best reloading perf). It can reference shared code which does not depend on Roslyn/Razor from elsewhere (e.g.,Shared.csproj).src/RazorAccess:internalaccess to Razor DLLs (via fake assembly name).src/RoslynAccess:internalaccess to Roslyn Compiler DLLs (via fake assembly name).src/RoslynCodeStyleAccess:internalaccess to Roslyn CodeStyle DLLs (via fake assembly name).src/RoslynWorkspaceAccess:internalaccess to Roslyn Workspace DLLs (via fake assembly name).src/Server: a Blazor Server entrypoint for easier development of the App (it has better tooling support for hot reload and debugging).cd src/Server; dotnet watch
src/Shared: code used byCompilerthat does not depend on Roslyn/Razor.src/Worker: an app loaded in a web worker (a separate process in the browser), so it does all the CPU-intensive work to avoid lagging the user interface.src/WorkerApi: shared code betweenWorkerandApp. This is in preparation for making the worker independent of the app, so the app can be optimized (trimming, NativeAOT) and the worker can be loaded more lazily.test/UnitTestsdotnet test
- Logo: OpenMoji
 - Style: Fluent UI
 - Icons: Fluent UI Icons
 
Razor REPLs:
- https://blazorrepl.telerik.com/
 - https://netcorerepl.telerik.com/
 - https://try.mudblazor.com/snippet
 - https://blazorfiddle.com/
 - https://try.fluentui-blazor.net/snippet
 
C# REPLs:
- https://dotnetfiddle.net/
 - https://onecompiler.com/csharp
 - https://www.programiz.com/csharp-programming/online-compiler/
 
C# compiler playgrounds:
XAML REPLs:
Web IDEs:

