Free tools Windows power users keep installed
One-click scans. No signup required.
To monitor a website on Windows, run a recurring check against its URL, record the HTTP result and response time, and define what should happen when the check fails. For one URL, PowerShell plus Task Scheduler is a practical starting point. For an IIS site, pair that external check with IIS health data; for broader enterprise or multi-location monitoring, use SCOM or Azure Monitor.
Choose a monitoring method that matches what you need to know
A scheduled HTTP check answers whether a particular Windows machine can reach a URL at that moment. It does not establish that the site is reachable for every visitor or region. IIS telemetry, external URL checks, browser-level checks, and multi-location synthetic monitoring answer different questions.
| Situation | Method | What it measures | Trade-off |
|---|---|---|---|
| One URL checked from a Windows PC or server | PowerShell script scheduled with Task Scheduler | HTTP status, elapsed time, optionally expected page text | Simple to set up, but depends on the Windows host and script staying healthy. |
| An IIS site you host | IIS Administration monitoring API and Get-WebsiteState |
Site state, uptime, requests, CPU, memory, disk, and cache fields | Useful local server telemetry, but not proof of public availability. |
| Multiple URLs or authenticated enterprise workflows | System Center Operations Manager (SCOM) Web Application Availability Monitoring | HTTP status, DNS/TCP timings, response and download measures, and alerts | More policy and monitoring capability, with more setup complexity. |
| Availability checks from outside locations | Azure Monitor Application Insights availability tests, or a hosted uptime service | Availability and responsiveness from external points | Less local maintenance; requires cloud account configuration and may involve service costs. |
Build a basic website check with PowerShell
The following Windows PowerShell script makes a request, records a UTC timestamp, status code, elapsed time, and any error, then returns a nonzero exit code for a failed check. Change the URL, log path, and optional expected text to fit your site. The account running the script needs permission to write to the log directory.
$Url = 'https://example.com/'
$LogPath = 'C:WebsiteMonitorchecks.csv'
$ExpectedText = '' # Optional; for example: 'Welcome'
$timestamp = [DateTime]::UtcNow.ToString('o')
$timer = [Diagnostics.Stopwatch]::StartNew()
$statusCode = $null
$errorMessage = ''
$passed = $false
try {
$response = Invoke-WebRequest -Uri $Url -Method Get -TimeoutSec 30
$timer.Stop()
$statusCode = [int]$response.StatusCode
$passed = ($statusCode -ge 200 -and $statusCode -lt 400)
if ($passed -and $ExpectedText -ne '') {
$passed = $response.Content.Contains($ExpectedText)
if (-not $passed) { $errorMessage = 'Expected text was not found.' }
}
} catch {
$timer.Stop()
$errorMessage = $_.Exception.Message
if ($_.Exception.Response -and $_.Exception.Response.StatusCode) {
$statusCode = [int]$_.Exception.Response.StatusCode
}
}
$row = [pscustomobject]@{
TimestampUtc = $timestamp
Url = $Url
StatusCode = $statusCode
ElapsedMs = $timer.ElapsedMilliseconds
Passed = $passed
Error = $errorMessage
}
$directory = Split-Path -Parent $LogPath
if (-not (Test-Path $directory)) { New-Item -ItemType Directory -Path $directory -Force | Out-Null }
if (Test-Path $LogPath) {
$row | Export-Csv -Path $LogPath -NoTypeInformation -Append
} else {
$row | Export-Csv -Path $LogPath -NoTypeInformation
}
if (-not $passed) { exit 1 }
exit 0
For a reliable result, a request should count as successful only if it meets the condition you care about. A 200-level status is a basic check; a redirect may be acceptable, while a login page, maintenance page, or response lacking expected text may not be. The script above treats 200–399 as passing and supports a simple text assertion. It does not execute page JavaScript or verify a multi-step browser workflow.
#1 Best Overall
- 14" diagonal, 1366x768 resolution, HD BrightView LED, Glossy NON-TOUCH Display
Test it in the same environment the task will use
Run the script manually from the PowerShell version and Windows account intended for the scheduled task. Confirm that it can resolve the hostname, reach the site, write the CSV file, and return exit code 0 on success and 1 on failure. Test a deliberately invalid URL or expected string as well so you know how a failure appears in the log.
PowerShell 5.1 has an automation consideration: Microsoft Support documents a security confirmation change after updates released on December 9, 2025. Invoke-WebRequest may prompt before processing web content without special parameters because earlier DOM processing could execute scripts. Verify behavior on the target machine and PowerShell version before relying on unattended runs; an interactive prompt can stall a task. See Microsoft Support’s Invoke-WebRequest security and confirmation guidance.
Schedule the check in Task Scheduler
Task Scheduler can launch a script on a recurring time schedule or in response to system events. Microsoft documents fixed-time, daily, weekly, monthly, boot, logon, and system-event triggers in its Task Scheduler for developers documentation. Choose an interval based on how quickly you need to know about an outage and how much request traffic is appropriate.
- Open Task Scheduler and choose Create Task. Give the task a clear name, such as Website availability check.
- On Triggers, choose New, select a schedule such as Daily, then set Repeat task every and its duration. Pick a cadence appropriate to the site and the intended response policy.
- On Actions, choose New. Set Program/script to the PowerShell executable available on the target machine, and provide the script path in Add arguments, for example
-NoProfile -File "C:WebsiteMonitorCheckWebsite.ps1". - On General, set the account and whether the task may run when the user is not logged on. Use an account with the required network access and log-file permissions.
- Review Conditions and Settings. Decide whether the task should wait for network availability, stop after a maximum runtime, and restart after a missed or failed run.
- Save the task, run it once using Run, and verify the log and Last Run Result before relying on the schedule.
For command-line administration, schtasks.exe can create and manage scheduled tasks. For example, to create a task that runs a script daily at 9 a.m. under the current account:
The Tool Desk
Outbyte Driver Updater FREEScan for outdated or missing drivers - takes under a minuteDriver Scan →Outbyte PC Repair FREEClear out junk files and repair common Windows errorsFree Scan →schtasks /Create /SC DAILY /ST 09:00 /TN "Website availability check" /TR "powershell.exe -NoProfile -File C:WebsiteMonitorCheckWebsite.ps1"
Review schtasks /Create /? on the Windows version in use for supported switches and security-context requirements. Interactive commands and task execution may differ depending on the account, permissions, and whether it is logged on.
Set a failure and alert policy
A useful monitor does more than write a result: it defines how to respond. A single failed request can be transient, for example during a brief network interruption. Decide whether one failure should be logged only, or whether repeated failures, slow response, or a failed content assertion should trigger notification.
Rank #2
- 256 GB SSD of storage.
- Multitasking is easy with 16GB of RAM
- Equipped with a blazing fast Core i5 2.00 GHz processor.
- Set separate conditions for an unsuccessful status, timeout, excessive response time, and missing expected content.
- Choose whether to alert immediately or after a number of consecutive failures; the latter reduces noise from one-off errors but can delay detection.
- Use a notification mechanism your environment supports, such as an approved email or incident-management integration. The sample script only writes a log and sets an exit code; it does not send alerts.
- Monitor the monitor: make sure task failures, missing log updates, expired credentials, DNS errors, and an offline Windows host are visible to someone.
Task Scheduler’s Operational event log can help diagnose task registration and execution issues. Microsoft recommends testing scripts directly before placing them in a scheduled task; investigate the task history and event log when manual runs succeed but scheduled runs do not.
Monitor an IIS website locally
If the website runs on IIS, combine the external URL test with host-side telemetry. IIS Administration’s /api/webserver/websites/monitoring endpoint exposes performance data for an individual website, including uptime, active connections, request counts, CPU, memory, disk, and cache fields. See the IIS Administration Monitoring API documentation for the resource and API details.
To check whether an IIS site is running, use the IIS PowerShell command:
Get-WebsiteState -Name 'Default Web Site'
The returned state can include Started. A started site can still be unreachable externally because of DNS, firewall, routing, TLS, or upstream problems. Conversely, an externally reachable response does not tell you whether the IIS worker process or server resources are healthy. Use both views when you need to distinguish application-host problems from internet-facing reachability.
Use SCOM for enterprise web availability checks
System Center Operations Manager’s Web Application Availability Monitoring template accepts one or more URLs, a test frequency and timeout, HTTP status evaluation, and alert settings. It can collect DNS, TCP, time-to-first-byte, time-to-last-byte, response, content-size, and download measurements, and generate alerts. The documented 2024 template example uses a 10-minute frequency and a 45-second timeout, with an alert threshold of HTTP 400 or greater; these are example defaults, not universal recommendations. Tune them to the site’s service requirements and expected response behavior.
SCOM is a better fit when web checks belong alongside enterprise monitoring policies, dashboards, and alert workflows. Its setup is more involved than a single scheduled PowerShell script. See Microsoft’s Web Application Availability Monitoring template documentation for configuration details.
Quick wins for a faster PC:
Fix the driver behind crashes, sound loss and screen glitchesFind Drivers →Repair Windows errors before they cause bigger problemsFix Now →Rank #3
- FULL HD IPS DISPLAY - Enjoy vibrant, crystal-clear images with 178-degree wide-viewing angles
- AMD RYZEN 3 30 PROCESSOR - Everyday performance you can count on; Multitask, stream, game casually, and edit photos smoothly with responsive power and vibrant HDR visuals
- ENJOY UP TO 14 HOURS AND 15 MINUTES OF BATTERY LIFE - HP Fast Charge restores battery from 0 to 50% in approximately 45 minutes
- AMD RADEON 610M GRAPHICS - Experience smooth entertainment; Built for streaming and multitasking, enjoy realistic visuals and efficient performance for work and play
- STORAGE AND MEMORY - 512 GB PCIe NVMe M.2 SSD offers fast speed and efficient storage; and 8 GB LPDDR5 RAM memory boosts performance with higher bandwidth
Check availability from outside the Windows host
When the question is whether visitors in other locations can reach the site, a local task is not enough. Azure Monitor Application Insights supports recurring availability tests and alerts, with checks from points around the world. Microsoft describes these tests as monitoring availability and responsiveness from various points worldwide in its Application Insights availability tests documentation. This external perspective can reveal regional or internet-path failures that a server-local check cannot see.
For browser-level monitoring, distinguish a simple HTTP request from a real visitor workflow. A PowerShell request can inspect a response and text, but does not run client-side JavaScript or complete a sequence such as sign-in, search, and checkout. Use a browser synthetic test when those interactions are the failure risk. For a basic external status test, use an outside monitoring location rather than assuming IIS state or a successful request from the server proves universal availability.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Or skip the browser setup
For capturing a clean visual snapshot as part of a monitoring or debugging workflow, ScreenshotNeo is a website screenshot API and MCP server. It is not a replacement for recurring uptime checks or alerting; it can capture a page when you want visual evidence. One GET request returns an image or PDF. Example cURL request:
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://example.com -o shot.webp
See the ScreenshotNeo API documentation for request options. Cookie banners and consent overlays, newsletter popups, and chat widgets are removed before capture; those steps can be turned off. Bot checks, blank pages, timeouts, failed loads, and cache hits are not billed, and response headers indicate the page verdict and billing status. Its MCP server provides take_screenshot, get_page_info, and capture_pdf tools for AI agents using Claude, Cursor, or another MCP client. The Free plan includes 1,000 shots per month with no card; paid plans start at $5 for 3,000 shots. Sign up for 1,000 free screenshots a month, with no card required.
Troubleshoot missed or misleading checks
The script works manually but not as a scheduled task
Check the task’s configured account, script path, working directory, execution permissions, and log-folder access. Run the task from Task Scheduler, then inspect its history, Last Run Result, and the Task Scheduler Operational event log. A task running when nobody is logged on may not have the same credentials or environment as your interactive session.
The task hangs or reports a web-request confirmation
Set a request timeout and a maximum task runtime. On Windows PowerShell 5.1, verify the post-December 9, 2025 Invoke-WebRequest security confirmation behavior on the target machine; an unattended confirmation can block execution. Test the chosen invocation in the exact environment that will run it.
The site is reported down but opens in a browser
Compare the precise URL, redirects, authentication needs, proxy settings, TLS behavior, and DNS resolution between the browser and the task account. Check whether a firewall or network policy treats the scheduled host differently. A text assertion can also fail after a harmless page change, so keep the expected text stable and relevant.
Rank #4
- 14” Diagonal HD BrightView WLED-Backlit (1366 x 768), Intel Graphics,
- Intel Celeron Dual-Core Processor Up to 2.60GHz, 4GB RAM, 64GB SSD
- 3x USB Type A,1x SD Card Reader, 1x Headphone/Microphone
- 802.11a/b/g/n/ac (2x2) Wi-Fi and Bluetooth, HP Webcam with Integrated Digital Microphone
- Windows 11 OS, Dale Blue
The check says the site is up but users still report an outage
A single-location request may reach a cached, partial, or otherwise unrepresentative response. It does not test client-side behavior or prove access from other networks. Add an expected-content assertion, a browser transaction check for interactive paths, or multi-location availability testing depending on the failure being investigated.
Recommended Free Tools
The IIS site says Started but the public URL fails
Investigate DNS, firewall rules, TLS certificates, routing, reverse proxies, and upstream dependencies. Get-WebsiteState reports IIS state, not end-to-end public reachability; retain a separate external URL check.
FAQ
Can Windows alert me when a URL stops responding?
Yes, but Task Scheduler itself runs tasks rather than defining a complete notification policy. Have the script or your monitoring platform notify an operator when your chosen failure condition is met.
Is a 404 response proof that a website is down?
No. It means the requested resource was not found; whether that is a failed check depends on whether that specific URL is expected to exist. Define acceptable status codes for the page you are monitoring.
How often should I check a website?
Set the interval according to how quickly you need to detect a problem, the site’s risk, and the monitoring system’s request limits. A template’s example frequency is not a substitute for a policy chosen for your service.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
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.

