Free tools Windows power users keep installed
One-click scans. No signup required.
Use Playwright to open the page, wait for a page-specific signal that the JavaScript content you need is visible, and save the screenshot. Then use a scheduler to launch that script on a recurring cadence. The schedule determines when a capture starts; the browser wait determines when the screenshot is taken after that start.
1. Install Playwright and prepare a capture script
This JavaScript example waits for a target element to become visible before taking a full-page screenshot. Replace the URL and selector with values for the page you want to track. The example is illustrative and has not been tested against your target site.
- Install Playwright in a project with Node.js:
npm init -y, thennpm install playwright. - Save the following as
capture.js:
const { chromium } = require('playwright');
(async () => {
const browser = await chromium.launch();
try {
const page = await browser.newPage({ viewport: { width: 1365, height: 900 } });
page.setDefaultTimeout(15000);
await page.goto('https://example.com', { waitUntil: 'domcontentloaded' });
await page.locator('[data-ready="true"]').waitFor({ state: 'visible' });
await page.screenshot({ path: 'capture.png', fullPage: true });
} finally {
await browser.close();
}
})();
Run it locally with node capture.js. The target site must expose a reliable readiness signal. If there is no data-ready attribute, use a selector for the actual content, a text condition, or a page-state predicate that indicates the content you care about has appeared. Playwright documents navigation, locator waits, page functions, and screenshot options in its Page API.
2. Choose a readiness signal tied to the content
A browser event such as domcontentloaded or load marks a document lifecycle stage; it does not guarantee that an application has finished rendering its own data. Wait for the evidence that matters to this screenshot.
Recommended Free Tools
#1 Best Overall
- 【Easy Setup Whole-Home Security Cameras】Ready to use right out of the box!This home security camera system lets you set up your home camera as a reliable outside camera for home security on your porch or as a camera for room in the nursery in just few minutes, delivering full-house protection instantly,2-year warranty, pls feel free to contact us with any questions.Note: For outdoor monitoring, mount cameras outdoors, Inside the window-Glare affects the shooting results.
- 【2K HD & Color Night Vision】Whether you’re watching pets play by day or clearly distinguishing if backyard movement is a cat or a stranger under moonlight, these 2k cameras for home security deliver ultra-clear 2K resolution and full-color night vision. Both our indoor cameras for home security and outdoor home surveillance cameras capture every critical detail—no blur, no missed moments. Need help with your camera for home security? Call +1(978)757-4977 for professional consulting to set up and optimize your VSMAHOME camera. Note: Working hours: Mon-Fri 9:00 am-18:00 pm (ET)
- 【IP66 Weatherproof Durability】Engineered for endurance, these cameras for home security deliver unwavering performance in any condition. From heavy rain to intense sun, they stand guard reliably around the clock.We recommend installing these outdoor cameras for home security under eaves or similar sheltered spots to maximize their lifespan. They are built not only to handle harsh outdoor climates with ease but also to remain fully functional even if accidentally splashed with water indoors.As a core part of your home security camera system, these outdoor cameras for home security serve as a trustworthy, year-round shield for your home.
- 【Dual Storage Solution: Local and Cloud】Choose cloud storage to automatically back up important events, or insert a memory card up to 128GB (not included) for continuous 24/7 recording. This flexible home security camera system ensures that all critical moments captured by your home surveillance cameras—whether it's your pet's mischievous moments or suspicious activity at your doorstep at night—can be easily retrieved and replayed.Cameras for Home Security.indoor outdoor camera,house cameras with audio and video,cameras for home security outdoor.
- 【Two-Way Talk & Motion Alerts】When your outdoor home security camera detects a delivery person at your doorstep, it instantly notifies you via your phone. You can directly speak through this home camera with audio and video and say, "Please leave the package at the door." Or, when your baby is crying, use the camera for room to soothe them with a gentle voice, as if you were right there by their side.cameras for home security,security camera,home security camera system,outdoor camera,home camera,outside camera.indoor camera.
- Element visible: wait for a results panel, chart, or other distinctive element to become visible.
- Expected text: wait until a specific heading, status, or value appears when text is the meaningful signal.
- Application state: use Playwright’s
waitForFunctionwhen readiness depends on a browser-side condition rather than one locator.
Playwright documents networkidle as no network connections for at least 500 ms, but labels that load state discouraged and recommends web assertions to assess readiness. A page can keep connections open or make later requests, so network silence is not a universal indicator that the content to capture is ready. Prefer an element or state related directly to that content.
Set a finite timeout. If the condition does not occur, treat the run as a failure: log the URL and error, and do not silently save an image that could be mistaken for a complete capture. A timeout is especially useful for distinguishing a slow or changed page from a successful run.
Rank #2
- Compatible with Nintendo-Switch (NOT Nintendo-Switch 2)
- Ideal for dash cams and home monitoring systems
- Designed for high endurance so you can record for up to 10,000 hours with no worries (Actual hours of video saved less. Full HD (1920x1080) video only; total hours less for 4K UHD (3840 x 2160) video.)
- Built for and tested in harsh conditions; temperature proof, water proof, shock proof, humidity proof and magnet proof (Card only. See product packaging and official SanDisk website for more information and limitations.)
- Save more videos with capacities up to 128GB (1GB = 1,000,000,000 bytes. Actual user storage less.)
3. Save an image that remains useful over repeated runs
Viewport or full page
page.screenshot({ path: 'capture.png' }) captures the viewport. Add fullPage: true to capture the full scrollable page, as in the example. Full-page images can be much taller than viewport captures; choose the format and retention approach with the likely file size and later review in mind.
Use unique filenames for retained history
A fixed path such as capture.png is overwritten on each run. If you need a history, generate a unique filename for each run, such as one containing an ISO timestamp, and ensure the destination directory exists. For example, replace the screenshot line with:
Rank #3
- Affordable & Compact: The Tikee mini+ is an economical, high-quality timelapse solution, an ideal compromise for small projects or limited budgets. Compact and lightweight, Tikee mini+ is easy to install, making it perfect for projects requiring quick and easy set-up.
- Wide angle / 4K resolution / Brightness sensor: Equipped with a high-sensitivity Sony sensor, Tikee mini+ offers superior image quality with 4K resolution and an extended field of view (DFOV 149° / HFOV 124°). Thanks to the brightness sensor, you can take pictures only when the light is bright enough.
- Indoor / Outdoor: Thanks to its shorter focusing distance, Tikee mini+ captures details at close range, ideal for indoor shooting and equally effective outdoors.
- Weatherproof IP66: IP66 certified, Tikee mini+ is designed to withstand extreme weather conditions, ensuring reliable performance from -10°C to +50°C.
- 4G/LTE, WiFi, GPS, Video Live Stream*: Thanks to 4G/LTE, WiFi and GPS connectivity, manage your shooting sequences remotely, automatically send your photos to the secure cloud, and access images wherever you are. Launch a live streaming video session in HD resolution (1280 x 960), and instantly clarify any situation on location.
const filename = `captures/${new Date().toISOString().replace(/[:.]/g, '-')}.png`;
await page.screenshot({ path: filename, fullPage: true });
Create the captures directory before running this version. Decide separately how long to keep images and where they should live; a scheduled workflow’s temporary workspace does not by itself provide long-term storage.
Keep capture conditions consistent
For meaningful comparisons, keep the viewport, browser, device scale, locale, and other relevant rendering settings consistent between runs. Different rendering environments can produce different output; this is a reproducibility consideration, not a guarantee of pixel-identical images.
Rank #4
- Crystal Clear 2K Resolution & 3MP Clarity: Experience superior image quality with 2K Quad HD resolution, capturing sharp details day and night for enhanced security monitoring and peace of mind.
- Smart Detection: Smart technology distinguishes between motion and people, sending accurate alerts to your phone and reducing false notifications triggered by irrelevant movement.
- Customizable View Angle & Water Resistant: Monitor every corner effortlessly with 360° horizontally and 180° vertically of the manually adjusted camera lens, ensuring no blind spots and maximum area surveillance from a single device. Waterproof grade IP65, suitable for indoor and outdoor use.
- Two-Way Talk & Flexible Connectivity: Communicate clearly through the built-in microphone and speaker using the two-way audio feature. Connects easily via 2.4GHz Wi-Fi6 and features Bluetooth Low Energy (BLE) for simplified initial setup.
- Local Storage & No Monthly Fees: Store your footage locally with an SD card (sold separately) and enjoy all functions without any subscription fees. AWS Cloud storage options are also available.
4. Schedule the script to run repeatedly
GitHub Actions can trigger a workflow on a cron schedule. Create .github/workflows/capture.yml in the repository’s default branch and start with this schedule:
name: Website screenshot
on:
schedule:
- cron: '17 8 * * *'
workflow_dispatch:
jobs:
capture:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 22
- run: npm ci
- run: npx playwright install --with-deps chromium
- run: node capture.js
The cron expression runs daily at 08:17 UTC by default. GitHub documents a shortest scheduled interval of once every five minutes, and scheduled workflows run against the latest commit on the default branch. GitHub also warns that scheduled events can be delayed during high load, so avoid assuming an exact-time capture; choosing a minute away from the top of the hour can help avoid the busiest period.
Do these 3 things before closing this tab:
1Fix the driver behind crashes, sound loss and screen glitches2Clear out junk files and repair common Windows errors3Scan for outdated or missing drivers - takes under a minuteBest Value
- Compatible with Nintendo-Switch (NOT Nintendo-Switch 2)
- Ideal for dash cams and home monitoring systems
- Designed for high endurance so you can record for up to 40,000 hours with no worries (Actual hours of video saved less. Full HD (1920x1080) video only; total hours less for 4K UHD (3840 x 2160) video.)
- Built for and tested in harsh conditions; temperature proof, water proof, shock proof, humidity proof and magnet proof (Card only. See product packaging and official SanDisk website for more information and limitations.)
- Save more videos with capacities up to 512GB (1GB = 1,000,000,000 bytes. Actual user storage less.)
This workflow installs dependencies and launches the capture, but the image is not retained after the job unless you arrange storage or upload it. Add an artifact or other storage step appropriate to your retention needs, and configure failure notifications if missed captures matter. Credentials, if the target requires them, should be provided through the scheduler’s secret mechanism rather than committed in the script.
Use a machine you control instead
You can also configure a scheduler on a personally managed machine to invoke node capture.js. That keeps the browser near your own files and credentials, but the machine must be available at the scheduled time and failures need a reporting path. Choose the environment based on where the browser can reach the site, how credentials are supplied, where screenshots are stored, and how you will notice a failed run.
5. Troubleshoot missed or misleading captures
- Timeout waiting for a locator: confirm the selector exists on the target page and is visible in the relevant state. The page may have changed, the content may require authentication, or the chosen condition may not represent readiness.
- Screenshot is blank or incomplete: wait for the specific content instead of relying only on a navigation event. Check whether the content is inside a frame or appears only after interaction; adapt the readiness condition to the actual page.
- Runs work locally but fail in the scheduler: check that the workflow installs the same dependencies and browser, has access to required secrets, and can reach the site. A scheduler’s filesystem and network environment may differ from your computer.
- Previous images disappear or get overwritten: use unique filenames and configure an artifact or external storage destination with the retention period you need.
- Capture starts later than expected: GitHub Actions scheduled events may be delayed under high load. The cron expression requests a run; it is not an exact-time guarantee.
- Different screenshots are hard to compare: standardize viewport and rendering settings across runs, and account for changes made by the site itself.
Or skip the browser setup
ScreenshotNeo offers a screenshot API: send one GET request with the target URL to receive an image or PDF. For a recurring capture, call it from the same scheduler pattern after choosing when each run should start. The API accepts a URL and supports PNG, JPEG, or WebP output; see the ScreenshotNeo API documentation for request details.
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://example.com -o shot.webp
ScreenshotNeo accepts cookie and consent banners like a visitor and removes more than 60 known consent platforms, newsletter popups, and chat widgets before capture; each of those steps can be turned off. Bot checks or CAPTCHAs, blank pages, timeouts, failed loads, and cache hits cost nothing, and responses identify the page verdict and billing status in headers. Its MCP server provides take_screenshot, get_page_info, and capture_pdf tools for Claude, Cursor, and other MCP clients. The Free plan includes 1,000 screenshots per month with no card; paid plans start at $5 for 3,000 shots. Learn more at ScreenshotNeo, or sign up for the free plan.
Frequently Asked Questions
Can I use a fixed delay instead of waiting for a selector?
You can wait for a delay, but it cannot confirm that the required content actually appeared. Prefer a page-specific condition when the screenshot must represent completed dynamic content.
Will GitHub Actions run at exactly the cron time?
No. Scheduled workflow events can be delayed during high load, so cron expresses the requested timing rather than an exact-time guarantee.
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.

