Build ML Web App UIs in .NET Without JavaScript
If you've ever tried to build a simple UI for a machine learning model in .NET, you know the pain. You either reach for a JavaScript framework or spend hours wrestling with Blazor WebAssembly. But what if you could skip all that complexity and just describe your interface in C#?
That's exactly what Gradio.Net does. It brings the popular Gradio Python library to .NET, letting you create web interfaces for ML models using nothing but C#. No HTML, no CSS, no JavaScript. Just your code and a few lines to define inputs and outputs.
What It Does
Gradio.Net is a .NET port of the Gradio library. It exposes the same concepts you'd use in Python — Interface, Blocks, and components like Textbox, Image, Slider, and more — but implemented for the .NET ecosystem. You define your ML model's inputs and outputs, pass a function, and Gradio automatically generates a clean, interactive web UI.
Under the hood, it uses a local web server. You run your app, and a browser page appears with your interface ready to test. No separate frontend build step, no npm installs, no webpack configs.
Why It's Cool
The obvious win is removing JavaScript from the equation entirely. But there are a few deeper reasons this matters:
No frontend setup. You write C#, hit run, and your UI exists. For prototyping ML models or demoing to non-technical stakeholders, this removes a massive friction point.
Reuses your existing .NET ML pipeline. If you're using ML.NET, ONNX Runtime, or any other .NET-based ML tooling, your model loading and inference code stays the same. You just wrap it in a prediction function and point Gradio at it.
Interactive with zero effort. Gradio handles the web server, file uploads, and even streaming outputs. You get sliders, file upload buttons, and live image previews without writing a line of frontend code.
Familiar API for Python users. If you've used Gradio in Python, the API feels identical. The C# version maps directly, so migration or cross-team collaboration stays smooth.
How to Try It
The quickest way to see it in action is with the NuGet package. For a simple text classification demo:
-
Create a new .NET console app:
dotnet new console -n GradioDemo cd GradioDemo -
Add the package:
dotnet add package Gradio.Net -
Write a basic interface:
using Gradio.Net; async Task<string> Greet(string name) { return $"Hello {name}!"; } var app = Gr.Interface( fn: Greet, inputs: Gr.Textbox("Enter your name"), outputs: Gr.Textbox("Greeting output") ); app.Launch(); -
Run and visit
http://localhost:7860in your browser.
That's it. You'll see a clean web page with a text box, a submit button, and a live preview. No JavaScript, no build steps, no configuration files.
Final Thoughts
Gradio.Net isn't going to replace Blazor or React for complex web apps. That's not the point. Where it shines is the rapid prototyping loop — iterate on your model, run the app, test the outputs, tweak the parameters, repeat. It turns ML experimentation into a visual, interactive process that anyone on your team can use without learning the frontend stack.
If you're building ML tools in .NET and want to share them without also becoming a part-time web developer, give it a spin. The repo is open source, actively maintained, and the NuGet package is a single dotnet add away.