Do these 3 things before closing this tab:
1Clear out junk files and repair common Windows errors2Scan for outdated or missing drivers - takes under a minute3Repair Windows errors before they cause bigger problems“Without an executable” has two different meanings. If your ASP.NET code must not shell out to a browser process, use a .NET automation library such as Playwright for .NET; it still installs and launches a compatible browser runtime. If the host must contain and launch no browser executable at all, call a hosted screenshot API over HTTPS. The provider renders the page and your application receives image bytes.
This guide shows both architectures, explains their deployment trade-offs, and provides complete ASP.NET-oriented code. For a strict no-browser host, ScreenshotNeo is the direct option described near the end.
Choose the architecture first
| Requirement | Recommended approach | What still runs |
|---|---|---|
| No shell command from application code | Playwright for .NET or PuppeteerSharp | A managed browser process and its runtime on the host |
| No browser executable in the ASP.NET host | Hosted screenshot API over HTTPS | Only your ASP.NET process; rendering occurs remotely |
Neither Playwright nor PuppeteerSharp can render arbitrary webpages with only a .NET assembly. They provide an API over a browser engine, so browser binaries, native dependencies, fonts, disk space, memory, and operating-system compatibility remain deployment requirements.
Option A: Playwright for .NET (no shelling out, but a local browser runtime)
Install the package and browser
Add the current Microsoft.Playwright NuGet package. Follow the installation command documented for that exact package version to download its browser build. Playwright stores browser binaries in an OS-specific cache and the documentation notes that installed browsers consume hundreds of megabytes; include this in image size, deployment and startup planning.
Recommended Free Tools
#1 Best Overall
- Read Before You Buy — No Video Output: These adapters support charging and USB 2.0 data transfer, but cannot transmit video signals. Except for standard USB webcams (which use USB data only), they are not compatible with HDMI/DisplayPort cables, video-capable USB-C hubs, or docking stations with video output.
- Convert USB-A Ports to USB-C: Designed to connect USB-C earphones, cables, flash drives, card readers, and other USB-C accessories to standard USB-A ports. Plug-and-play with no drivers or software required.
- Aluminum Alloy Housing: Built with a sturdy aluminum alloy shell that aids in heat dissipation and protects against daily wear and scratches. Designed to maintain a stable and secure connection.
- Compact & Travel-Friendly: The ultra-compact design allows the adapter to stay plugged into your device without blocking adjacent ports or adding bulk, reducing wear and tear on your original USB ports.
- 12-Month Warranty: Backed by a 12-month manufacturer warranty for peace of mind. Designed to meet strict quality control standards for reliable everyday performance.
The following minimal example navigates to a URL and captures the complete scrollable page. It returns bytes, so an ASP.NET endpoint can stream them directly:
using Microsoft.Playwright;
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
app.MapGet("/screenshot", async (string url) =>
{
if (!Uri.TryCreate(url, UriKind.Absolute, out var target) ||
(target.Scheme != Uri.UriSchemeHttp && target.Scheme != Uri.UriSchemeHttps))
return Results.BadRequest("Use an absolute http or https URL.");
using var playwright = await Playwright.CreateAsync();
await using var browser = await playwright.Chromium.LaunchAsync(new BrowserTypeLaunchOptions
{
Headless = true
});
var page = await browser.NewPageAsync();
await page.GotoAsync(target.ToString(), new PageGotoOptions
{
WaitUntil = WaitUntilState.NetworkIdle,
Timeout = 60_000
});
var bytes = await page.ScreenshotAsync(new PageScreenshotOptions
{
FullPage = true,
Type = ScreenshotType.Png,
Timeout = 60_000
});
return Results.File(bytes, "image/png");
});
app.Run();
For a reusable service, create one Playwright instance and a browser per application lifetime, then create isolated pages or contexts per request. Always close pages, contexts and the browser during shutdown. Never accept arbitrary URLs without validation: unrestricted screenshot endpoints can be abused to probe internal network addresses.
Useful capture controls
- Output: set
Pathto save a file, or omit it and receive a byte array. - Format: choose PNG, JPEG or WebP when supported by the package version; JPEG/WebP quality settings apply where documented.
- Full page:
FullPage = truecaptures the scrollable document instead of only the viewport. - Element: locate an element and call its screenshot method to capture only that region.
- Timing: use navigation timeout, a selector wait, an explicit delay, or network-idle waiting for client-rendered content. Network idle can never occur on pages with persistent connections, so use a selector or bounded delay in that case.
- Viewport and device: set viewport dimensions, device scale factor, color scheme and user agent through the browser context.
Confirm option names and defaults against the API reference for the package version you deploy; these APIs evolve.
Rank #2
- 5-in-1 USB-C Hub: Experience comprehensive connectivity featuring a Power Delivery input, two USB-A 2.0 ports, a USB-A 3.0 port, and an HDMI port. (Note: The USB-C power delivery input port is only for connecting an external wall charger to power your laptop and cannot power peripheral devices.)
- 90W Pass-Through Charging: Achieve optimal charging with 90W pass-through power to your laptop, supported by a total input of 100W, with the hub reserving 10W for operational efficiency. (Note: Wall charger not included.)
- Quick Data Transfers: Accelerate your productivity with rapid data transfers using a high-speed 5Gbps USB 3.0 port and two 480Mbps USB 2.0 ports.
- 4K HDMI Display: Enhance your visual experience with a hub capable of delivering 4K resolution at 30Hz in both mirror and extend modes. Please note that this hub is compatible with MacBook (macOS 12 and newer), Windows 10 and 11, ChromeOS, and laptops equipped with DP Alt Mode and Power Delivery. Note: This device is not compatible with Linux.
- What You Get: Anker USB-C Hub (5-in-1, 4K HDMI), welcome guide, 18-month warranty, and our friendly customer service.
Deployment checklist for Playwright
- Install the browser build for the selected Playwright version during image creation or deployment, not interactively on a read-only production filesystem.
- Verify the target OS, CPU architecture, native libraries, fonts and sandbox policy. Linux containers commonly need additional system packages.
- Provide writable space for the browser cache and temporary files, and enough memory for concurrent pages.
- Set bounded navigation and screenshot timeouts, cancel work when the HTTP request is aborted, and limit concurrency with a queue.
- Test the published artifact rather than only the development machine. Rendering can differ with missing fonts, locale, timezone or GPU support.
Option A alternative: PuppeteerSharp
PuppeteerSharp offers the same basic .NET pattern: install the NuGet package, ensure its compatible browser is downloaded or supplied, launch headless Chrome, navigate, and save or return the screenshot. Verify the package’s browser downloader, executable location and Linux dependencies for your exact version. It satisfies “do not invoke an executable from my C# code” only in the narrow sense; a browser process still exists.
Option B: a hosted API (strictly no browser executable on the host)
Your ASP.NET application sends the target URL and capture settings with HttpClient, checks the HTTP response, and streams the returned image. This keeps browser binaries out of the application image, but introduces an external network dependency, credentials, provider limits, URL processing and data-governance questions.
Evaluate a provider before production
- Confirm current pricing, quotas, maximum URL and image sizes, supported JavaScript features, authentication and retention.
- Understand where URLs and screenshots are processed, regional controls, logging and deletion terms.
- Implement timeouts, retries with backoff for transient failures, response-size limits and circuit breaking.
- Keep API keys in a secret store or environment variable, never in source control or client-side code.
- Decide whether the endpoint should return an image immediately or create an asynchronous job for slow pages.
Or skip the browser setup: ScreenshotNeo
ScreenshotNeo is a website screenshot API and MCP server. A GET request returns PNG, JPEG, WebP or PDF bytes. Before capture it accepts cookie/consent banners and removes more than 60 known consent platforms, newsletter popups and chat widgets; each cleanup step can be disabled. Bot checks, CAPTCHAs, blank pages, timeouts, failed loads and cache hits are not billed, and response headers identify the page verdict and whether the request was billed.
It also provides an MCP server for Claude, Cursor and other MCP clients, with take_screenshot, get_page_info and capture_pdf tools. Features include full-page capture with lazy images loaded, CSS-selector element capture, dark mode, 12 device presets plus custom viewports, retina scale, PDF paper size/margins/landscape/page ranges, HTML/CSS-to-image, custom JavaScript and CSS, pre-capture clicks, hidden selectors, selector/delay/network-idle waits, ad/tracker/request/resource blocking, custom headers/cookies/user agent/Authorization, timezone and geolocation, transparent backgrounds, resizing, configurable-TTL caching, signed public-image links, asynchronous jobs with signed webhooks, bulk capture of 100 URLs per call, a usage API and an OpenAPI specification. Common parameter names used by other screenshot APIs are accepted to ease migration.
Rank #3
- Sleek 7-in-1 USB-C Hub: Features an HDMI port, two USB-A 3.0 ports, and a USB-C data port, each providing 5Gbps transfer speeds. It also includes a USB-C PD input port for charging up to 100W and dual SD and TF card slots, all in a compact design.
- Flawless 4K@60Hz Video with HDMI: Delivers exceptional clarity and smoothness with its 4K@60Hz HDMI port, making it ideal for high-definition presentations and entertainment. (Note: Only the HDMI port supports video projection; the USB-C port is for data transfer only.)
- Double Up on Efficiency: The two USB-A 3.0 ports and a USB-C port support a fast 5Gbps data rate, significantly boosting your transfer speeds and improving productivity.
- Fast and Reliable 85W Charging: Offers high-capacity, speedy charging for laptops up to 85W, so you spend less time tethered to an outlet and more time being productive.
- What You Get: Anker USB-C Hub (7-in-1), welcome guide, 18-month warranty, and our friendly customer service.
ASP.NET C# call
using System.Net.Http.Headers;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddHttpClient();
var app = builder.Build();
app.MapGet("/remote-screenshot", async (IHttpClientFactory clients, IConfiguration config, string url) =>
{
var key = config["SCREENSHOTNEO_API_KEY"];
if (string.IsNullOrWhiteSpace(key))
return Results.Problem("SCREENSHOTNEO_API_KEY is not configured.");
if (!Uri.TryCreate(url, UriKind.Absolute, out var target) ||
(target.Scheme != Uri.UriSchemeHttp && target.Scheme != Uri.UriSchemeHttps))
return Results.BadRequest("Use an absolute http or https URL.");
var client = clients.CreateClient();
client.Timeout = TimeSpan.FromSeconds(90);
var endpoint = "https://api.screenshotneo.com/v1/shot" +
"?access_key=" + Uri.EscapeDataString(key) +
"&url=" + Uri.EscapeDataString(target.ToString());
using var response = await client.GetAsync(endpoint, HttpCompletionOption.ResponseHeadersRead);
if (!response.IsSuccessStatusCode)
return Results.Problem($"Screenshot service returned {(int)response.StatusCode}.");
var bytes = await response.Content.ReadAsByteArrayAsync();
var type = response.Content.Headers.ContentType?.MediaType ?? "image/webp";
return Results.File(bytes, type);
});
app.Run();
See the ScreenshotNeo documentation for parameters, authentication and advanced options. The same request can be made with cURL:
Windows Errors? Fix Them Before They Spread
Repair common Windows errors and clear accumulated junk for a smoother, more stable PC - no reinstall needed.Free scan · no reinstallOutdated Drivers Are Slowing You Down
One free scan finds every outdated or missing driver and matches the right update for your exact hardware.Free scan · exact hardware matchcurl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp
Python:
import requests
r = requests.get("https://api.screenshotneo.com/v1/shot", params={"access_key": "YOUR_API_KEY", "url": "https://stripe.com"}, timeout=90)
r.raise_for_status()
open("shot.webp", "wb").write(r.content)
Node.js:
const q = new URLSearchParams({ access_key: 'YOUR_API_KEY', url: 'https://stripe.com' });
const res = await fetch(`https://api.screenshotneo.com/v1/shot?${q}`);
if (!res.ok) throw new Error(`HTTP ${res.status}`);
const data = Buffer.from(await res.arrayBuffer());
Every plan includes every feature. The Free plan includes 1,000 shots per month with no card; paid plans are Starter $5 for 3,000, Growth $15 for 15,000, Pro $39 for 60,000, Scale $99 for 250,000, and Business $249 for 1,000,000. Yearly billing gives two months free. Create a free ScreenshotNeo account to start with 1,000 screenshots a month and no card.
Local browser versus hosted API
| Consideration | Local Playwright/PuppeteerSharp | Hosted API |
|---|---|---|
| Browser binary | Required on the host or in the container | Not required on your host |
| Rendering control | Direct control of browser version, fonts and network | Provider controls the rendering environment |
| Operations | You manage native dependencies, memory and scaling | You manage HTTP reliability, credentials and quotas |
| Privacy | Pages can remain inside your network | URLs and output are processed by a third party |
| Cost evidence | No universal benchmark or cost comparison is established | Compare the provider’s current plans and limits |
Troubleshooting
“Executable not found” or browser launch failure
Install the browser build required by your Playwright or PuppeteerSharp version, set a writable cache path, and verify native libraries and architecture in the deployed image. Do not assume a browser installed on a developer workstation exists in production.
Rank #4
- Dual Converters, Infinite Potential:Includes 2× USB C male to USB A female adapters and 2× USB A male to USB C female adapters. Perfect for a wide range of uses—tablets with Bluetooth keyboards, expand USB ports on macbook, and more. Two different converters for all your daily needs
- Next-Level 10Gbps & 3A Charging: No more slow 480Mbps, this usb to usb c adapter has a transfer speed of up to 10Gbps, allowing you to do more transferring in less time. This usb adapter fits both USB A and USB C charger, supporting up to 3A fast charging
- Upgraded Exquisite Craftsmanship: With an aluminum alloy housing and metal connector, the usbc to usb adapter is extremely durable and sturdy. Rigorously tested to withstand more than 10,000 times of plugging and unplugging, ensuring long-lasting performance
- Broad Compatible: The usb c to usb adapter widely supports all USB C/ USB A devices like laptops, tablets, cellphones, car chargers, and phone chargers. Such as compatible with MacBook Pro/Air 2023/2022, Thunderbolt 4/3 Devices,Apple MagSafe Watch 9/8/7/SE/Ultra, iPad Pro 2022/2021, Samsung Galaxy S23/S20/S10, and iPhone 17/16/15 Pro. Plug and play
- Please Note: To reach 10Gbps speed, keep the cable under 3.3 ft. For USB A Male to USB C adapters, try flipping the USB C connector. USB C Male to USB A adapters support bidirectional 10Gbps transfer within 3.3 ft
The page is blank or incomplete
Wait for a page-specific selector or bounded delay after navigation. Check that JavaScript requests are allowed, required authentication is supplied, and the page is not blocked by a bot challenge. Full-page capture does not guarantee lazy content has loaded unless you trigger the page’s loading behavior.
Timeouts and high memory use
Use finite navigation and screenshot timeouts, limit concurrent contexts, close pages promptly and avoid launching a new browser for every request. For long or numerous captures, queue jobs or use a hosted service.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
Works locally but fails on Azure App Service
Confirm the App Service OS, architecture, sandbox restrictions, native dependencies, writable paths and execution limits. Browser cache-path examples found for Linux App Service are dated engineering guidance, not a universal compatibility guarantee; validate your exact runtime and deployment image.
Best Value
- 5-in-1 Connectivity: Equipped with a 4K HDMI port, a 5 Gbps USB-C data port, two 5 Gbps USB-A ports, and a USB C 100W PD-IN port. Note: The USB C 100W PD-IN port supports only charging and does not support data transfer devices such as headphones or speakers.
- Powerful Pass-Through Charging: Supports up to 85W pass-through charging so you can power up your laptop while you use the hub. Note: Pass-through charging requires a charger (not included). Note: To achieve full power for iPad, we recommend using a 45W wall charger.
- Transfer Files in Seconds: Move files to and from your laptop at speeds of up to 5 Gbps via the USB-C and USB-A data ports. Note: The USB C 5Gbps Data port does not support video output.
- HD Display: Connect to the HDMI port to stream or mirror content to an external monitor in resolutions of up to 4K@30Hz. Note: The USB-C ports do not support video output.
- What You Get: Anker 332 USB-C Hub (5-in-1), welcome guide, our worry-free 18-month warranty, and friendly customer service.
Hosted request returns an error
Check URL encoding, API-key configuration, quota and response status. Log provider verdict and billing headers where available, but never log secrets or sensitive URLs. Retry only transient statuses and enforce a maximum response size.
Frequently asked questions
Frequently Asked Questions
Can ASP.NET take a screenshot with no browser anywhere?
Not for arbitrary, JavaScript-rendered webpages using Playwright or PuppeteerSharp. Those libraries require a compatible browser runtime. A hosted rendering API is the practical way to keep the browser off your ASP.NET host.
Should I return bytes or save a file?
Return bytes for an HTTP image response or downstream processing; set a screenshot path when you need durable local storage. Ensure the deployment filesystem is writable before choosing file output.
The Tool Desk
Outbyte PC Repair FREERepair Windows errors before they cause bigger problemsFix Now →Outbyte Driver Updater FREEScan for outdated or missing drivers - takes under a minuteDriver Scan →Is a hosted API suitable for private intranet pages?
Only if the provider can reach the page and its privacy, regional-processing and retention terms meet your requirements. Otherwise keep rendering inside your network with a locally managed browser.
Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

