Free tools Windows power users keep installed
One-click scans. No signup required.
Urlwatch is a free, open-source command-line tool that fetches web pages (or the output of shell commands) on a schedule, filters the result, compares it with the previous version and notifies you when something differs. It suits people who are comfortable with YAML, a terminal and cron. It is not a hosted service: nothing runs unless you schedule it, and it will not judge whether a change matters. This review covers the real setup path, how alerts work, and where it gets awkward.
What Urlwatch actually does
The project’s README describes the aim as helping you “watch changes in webpages and get notified (via e-mail, in your terminal or through various third party services) of any changes.” In practice the loop is: retrieve the job’s output, apply the filters you configured, compare against the last retrieved version, and hand any difference to the enabled reporters. A notification can include a unified diff, the same format you see from diff -u or in a code review.
As an Amazon Associate I earn from qualifying purchases.
This review is based on the official version 2.29 handbook, the introduction and the stable configuration guide, as read on 2026-10-03. Those pages carry no publication date, and no benchmarks, accuracy rates or independent tests were found, so none are quoted here. Commands below follow the documentation; check the current docs for your installed version.
Setup, step by step
The official quick start is short. It assumes you are happy at a command line.
#1 Best Overall
- Used Book in Good Condition
- Install Urlwatch. The quick start defers to a separate installation section. Platform prerequisites and dependencies vary by operating system and release, so follow that section for your system rather than relying on a copied command.
- Run it once. The first run migrates data from an earlier installation or starts fresh.
- Define jobs:
urlwatch --editopens the job and filter file,urls.yaml. The editor checks your configuration before activating it. - Configure settings and reporters:
urlwatch --edit-configopensurlwatch.yaml. - Schedule it. Add the
urlwatchcommand to a recurring scheduler. The docs give cron as the example and mention Task Scheduler on Windows. They recommend running no more often than every 30 minutes.
That last step matters most. Urlwatch has no internal polling loop in this workflow: the check interval is simply how often your scheduler launches it. A crontab line for a half-hourly check looks like this:
*/30 * * * * urlwatch
If the machine is asleep or off, nothing is checked. Readers who want checks around the clock need an always-on computer or server of their own; the documentation does not require any particular host.
Jobs: url, navigate and command
Each job is a YAML entry with exactly one defining key:
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
| Key | What it does | Use it for |
|---|---|---|
url |
Retrieves what the web server returns (HTTP GET by default) | Static or server-rendered pages, JSON endpoints, feeds |
navigate |
Loads the page in a headless browser | Pages that need JavaScript to show their content |
command |
Runs a shell command and uses its output | Anything you can script yourself |
A minimal job file entry might look like this:
name: Pricing page
url: https://example.com/pricing
The navigate kind needs a headless browser available on the machine, so it carries the extra setup cost that comes with one. The documentation reviewed does not spell out current browser requirements, so check the handbook before relying on it.
Rank #2
- Bookbound planner helps you keep track of passwords and favorite websites
- Room for over 200 entries; 3.5 x 6 inch page sizes
- User name and security questions field
- Tips for what makes a strong password; web resources; notes pages
- Printed on quality paper containing 30% post-consumer waste; black simulated leather cover; 3.63 x 6.13 x .21 inches
Filters: the part that decides whether it’s useful
An unfiltered page diff is usually noisy: timestamps, rotating promotions, session tokens and tracking markup all change between fetches. Filters are how you narrow the comparison. The handbook documents:
- Selecting HTML with CSS selectors or XPath
- Converting HTML to readable text
- Reading PDF and JSON content
- Text operations such as grep, strip and sort
Filters can be chained, for example: select a section with XPath, convert it to text, keep matching lines, then sort. A sketch of the idea:
name: Release notes
url: https://example.com/releases
filter:
- xpath: //main
- html2text
- grep: version
Treat filter keys as a starting point and confirm exact option names in the handbook’s filter list. The important point is conceptual: this is configuration you write and maintain. Urlwatch does not detect “meaningful” change on its own, and when a site redesigns, your selector may stop matching and need a fix. The sources publish no false-positive rate, so any claim about noisiness is an inference from how much filtering the tool offers.
Recommended Free Tools
The filter-edit caveat
The documentation warns that an unchanged report uses the earlier stored content as it was filtered at retrieval time. Editing a filter does not retroactively re-filter old data. To see the effect of an edit against the live page, run urlwatch --test-filter with the job, rather than waiting for the next scheduled run and wondering why the output looks odd.
Rank #3
Alerts and reporters
Reporters are configured in urlwatch.yaml (via urlwatch --edit-config). The configuration guide states each reporter is disabled by default and demonstrates enabling console and email output. The documentation lists:
- Console output
- Email through SMTP, or through Mailgun
- Slack, Discord, Telegram, Matrix, XMPP
- Push services such as Pushbullet and Pushover
- Shell commands, which let you pipe a report into your own script
The list is described as including “others”, so consult the handbook for the full set. You can choose combined or separate reports per job. Two cautions: a listed integration only tells you Urlwatch can talk to that service, not that the provider’s API, sign-up rules or pricing are unchanged, and each external channel needs its own account, token or SMTP credentials. The documentation makes no delivery guarantees.
Limitations
- You own the scheduling. No cloud polling, no uptime monitoring of the watcher itself. If cron stops, alerts stop silently.
- Setup is technical. YAML, a terminal and a scheduler are assumed. There is no point-and-click interface in the documented workflow.
- Filters need upkeep. Targeted extraction is the cure for noise, and it breaks when pages change structure.
- Text-based comparison. It diffs content, not appearance. A layout, image or styling change with identical text will not register, and a diff cannot show you what the page looked like.
- JavaScript pages cost more. The
navigatejob type means running a headless browser yourself. - Alert destinations add configuration. Every reporter beyond the console needs its own setup.
Who should use it
| Good fit | Weaker fit |
|---|---|
| You already run a server or an always-on machine and use cron | You want a hosted service with a web dashboard |
| You want text diffs of a specific section, feed or JSON endpoint | You need to notice visual changes |
| You like keeping jobs in a version-controllable YAML file | You want zero maintenance when target sites change |
| You want to pipe alerts into scripts or chat tools | You need guaranteed delivery with support behind it |
When you need to see the page, not just diff it
Text diffs answer “did the words change?”. For visual regressions, competitor landing pages, or evidence of what a page showed on a given day, you want pictures. The first service to try for that is ScreenshotNeo, a screenshot API that gives clean shots (consent banners, newsletter popups and chat widgets removed before capture) and bills only the clean ones. It does not diff images for you; you would store the captures and compare them with your own tooling, or run it from the same cron job that drives Urlwatch.
Or skip the browser setup
Urlwatch’s navigate jobs mean installing and maintaining a headless browser. With ScreenshotNeo, one GET request returns a PNG, JPEG, WebP or PDF. Full parameter list in the docs.
cURL
curl -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)
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}`);
Why it fits this kind of job:
- Cookie banners, popups and chat widgets are removed before the shot, so they do not show up as “changes” between captures.
- Bot checks, blank pages, timeouts, failed loads and cache hits are never billed; the
X-Page-VerdictandX-Billedresponse headers tell you which it was. - An MCP server (tools
take_screenshot,get_page_info,capture_pdf) lets AI agents in Claude, Cursor or any MCP client take screenshots. - You can capture a single element by CSS selector, wait for a selector or network idle, and run full-page captures, which helps keep monitored regions consistent.
- 1,000 screenshots a month are free with no card; paid plans start at $5 for 3,000, with every feature on every plan.
Create a free ScreenshotNeo account and take your first 1,000 screenshots a month at no cost.
Rank #4
- Used Book in Good Condition
Troubleshooting
No alerts arrive
Cause: the scheduler is not running the command, or the reporter is still disabled (the default). Fix: run urlwatch by hand and confirm console output, then enable and configure the reporter in urlwatch --edit-config.
The report looks stale after changing a filter
Cause: unchanged reports use older content filtered at retrieval time. Fix: use urlwatch --test-filter to see the current filter against the current page.
Crashes, No Sound, or Screen Glitches?
Random freezes, missing sound and display glitches usually trace back to one bad driver. Find and replace yours safely.Free scan · under a minuteWindows 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 reinstallConstant “changes” on every run
Cause: volatile page content such as timestamps or rotating blocks. Fix: select a narrower section with CSS or XPath, convert to text, and grep or strip the noisy lines.
Content you can see in a browser is missing from the diff
Cause: a url job gets only what the server sends, not what JavaScript builds. Fix: switch the job to navigate, or look for the underlying JSON endpoint.
Best Value
- 【Featured A-Z Tabs & Untitle for Security】Our password books have recognizable alphabetical tabs with the colorful design allow you to locate quickly and save time. The anonymous cover of our password keeper is unobtrusive and stays secure.
- 【Premium Quality & Perfect Size】This password journal features a eco-leather hardcover and 100gsm no-bleed paper, equipped with an elastic band, inner pocket, pen loop and bookmark. It comes in medium format (5.3 x 7.7 inches) which is the perfect size you need.
- 【Clean Layout & Plenty of Space】 Each tab has 6 pages with 4 entries per page and contains more than 552 passwords in our password organizer. This password notebook also provides more password space in case you need to change your password.
- 【Perfect Organization & Safe Placement】We ensure this password log book provides you with a secure space to keep passwords and web addresses. You won't have to worry about passwords being leaked or hacked.
- 【Thoughtful Gift & Warm Heart】 Considering for practical gifts for family or friends? Our specially designed internet password book is sturdy and easy to use. Ideal for any occasion, it's a gift that truly shows care.
Job file rejected on save
Cause: the editor validates configuration before activating it, so a YAML or key error blocks the change. Fix: re-open with urlwatch --edit, and make sure each job has exactly one of url, navigate or command.
Verdict
Urlwatch is a capable, transparent tool for people who want text-level change detection under their own control, with unusually flexible filtering and a long list of alert channels. Its costs are the ones the documentation implies: you schedule it, you maintain the filters, and you set up each reporter. If your question is “did the text of this section change?”, it is a sound choice. If it is “did this page look different?”, add screenshots.
Frequently Asked Questions
How often can Urlwatch check a page?
As often as your scheduler runs it. The documentation recommends no more frequently than every 30 minutes.
Does Urlwatch run in the background by itself?
Not in the documented workflow. It runs when launched, typically by cron or Windows Task Scheduler.
Can it watch things other than web pages?
Yes. A command job runs a shell command and compares its output, and filters can read JSON and PDF data.
Is Urlwatch free?
It is open-source software. Third-party reporter services such as email providers or push apps have their own terms, which are not covered by the Urlwatch documentation.
Do these 3 things before closing this tab:
1Clear out junk files and repair common Windows errors2Fix the driver behind crashes, sound loss and screen glitches3Repair Windows errors before they cause bigger problemsQuick 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.




