Free tools Windows power users keep installed
One-click scans. No signup required.
To save a website screenshot to Dropbox on a schedule, combine three steps: use a browser automation script to capture the page, upload the image with the Dropbox API, and schedule the script to run at your chosen interval. The example below uses Playwright and Node.js, captures the visible browser viewport, and uploads a uniquely named image so earlier captures are preserved.
What you need
- Node.js and a machine or hosted environment that can run a scheduled job.
- A Dropbox app with upload permission and an OAuth access token.
- The page URL, desired capture size, and Dropbox folder.
This method is appropriate for ordinary website screenshots. Dropbox’s simple upload endpoint supports files up to 150 MiB; use an upload session for larger files. Dropbox files/upload API
As an Amazon Associate I earn from qualifying purchases.
1. Create a Dropbox app and authorize uploads
- In the Dropbox App Console, create an app and choose its access type: app-folder access limits it to the app’s folder, while full Dropbox access allows broader access.
- Enable the
files.content.writeOAuth permission for uploads and complete the authorization flow. Dropbox recommends OAuth 2.0 for production applications. See Dropbox authorization documentation. - Keep the token out of source control and logs. Store it as an environment variable or in your scheduler’s secret store.
- Choose a destination path, such as
/WebsiteCaptures. The example uses Dropbox’s add conflict mode and a timestamped filename; check the returned API result rather than assuming an upload succeeded.
2. Install Playwright and capture-and-upload dependencies
Create a project directory, then install Playwright and Dropbox’s official SDK:
npm init -y
npm install playwright dropbox
Install the browser binaries Playwright needs:
npx playwright install chromium
Set the credentials and target values in the environment where the script will run:
#1 Best Overall
- Includes Raspberry Pi 5 with 2.4Ghz 64-bit quad-core CPU (8GB RAM)
- Includes 128GB Micro SD Card pre-loaded with 64-bit Raspberry Pi OS, USB MicroSD Card Reader
- CanaKit Turbine Black Case for the Raspberry Pi 5
- CanaKit Low Noise Bearing System Fan
- Mega Heat Sink - Black Anodized
export DROPBOX_ACCESS_TOKEN="your_oauth_access_token"
export PAGE_URL="https://example.com"
export DROPBOX_FOLDER="/WebsiteCaptures"
Use your actual authorized token and page URL. For a hosted scheduler, configure these as protected environment variables rather than putting secrets in the script.
3. Create the recurring capture script
Save this as capture.js. It opens Chromium, captures the visible viewport as a PNG, and uploads it under a unique UTC timestamp. By default, it fails rather than silently replacing an existing file.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
const { chromium } = require('playwright');
const { Dropbox } = require('dropbox');
const token = process.env.DROPBOX_ACCESS_TOKEN;
const pageUrl = process.env.PAGE_URL;
const folder = process.env.DROPBOX_FOLDER || '/WebsiteCaptures';
if (!token || !pageUrl) {
throw new Error('Set DROPBOX_ACCESS_TOKEN and PAGE_URL');
}
Rank #2
- Includes Raspberry Pi 5 16GB with 2.4Ghz 64-bit quad-core CPU (16GB RAM)
- Includes 128GB Micro SD Card pre-loaded with 64-bit Raspberry Pi OS, USB MicroSD Card Reader
- CanaKit Turbine Black Case for the Raspberry Pi 5
- CanaKit Low Noise Bearing System Fan
- Mega Heat Sink - Black Anodized
async function main() {
const browser = await chromium.launch({ headless: true });
try {
const page = await browser.newPage({
viewport: { width: 1440, height: 900 },
});
const response = await page.goto(pageUrl, {
waitUntil: 'networkidle',
timeout: 60000,
});
if (!response || !response.ok()) {
throw new Error(`Page load failed: ${response ? response.status() : 'no response'}`);
}
const image = await page.screenshot({ type: 'png' });
const stamp = new Date().toISOString().replace(/[:.]/g, '-');
const path = `${folder}/website-${stamp}.png`;
const dbx = new Dropbox({ accessToken: token });
const result = await dbx.filesUpload({
path,
contents: image,
mode: { '.tag': 'add' },
autorename: false,
mute: true,
});
console.log(`Uploaded ${result.result.path_display}`);
} finally {
await browser.close();
}
}
main().catch((error) => {
console.error(error);
process.exitCode = 1;
});
Playwright’s page.screenshot() captures the viewport by default. For the whole scrollable page, change the capture line to const image = await page.screenshot({ type: 'png', fullPage: true });. A full-page screenshot can be much taller than a viewport image. See the Playwright screenshot documentation.
Recommended Free Tools
Wait for dynamic page content
networkidle is not suitable for every site: analytics or live updates may keep network activity going. If the page has a reliable element that signals readiness, replace the navigation wait with waitUntil: 'domcontentloaded', then wait for that element, for example await page.locator('main').waitFor();. If a fixed delay is necessary, use a short, intentional wait and understand that it may be too short or unnecessarily long on different runs.
Rank #3
- CanaKit Raspberry Pi 5 Essentials Starter Kit
Choose the capture you actually need
- Viewport: the visible area at the configured 1440-by-900 size; useful for consistent snapshots.
- Full page: the page’s full scrollable height; useful for an overview, but image height and file size may vary.
- Authenticated or mobile pages: add the needed browser context, cookies, or viewport configuration carefully. Do not store passwords or session cookies in a public repository.
4. Test the script before scheduling
- Run
node capture.jsmanually in the same environment that will run the schedule. - Confirm the page loads as expected and the terminal reports an uploaded Dropbox path.
- Open that destination in Dropbox and check image dimensions, content, and filename.
- Run it a second time to verify that a distinct timestamped file is created rather than replacing the first.
The Dropbox API v2 consists of HTTP endpoints for integrating an app with Dropbox, according to Dropbox API Documentation. The SDK in this example calls the file upload endpoint; its permission and path behavior are governed by your app authorization and upload parameters.
5. Schedule the script
Choose where the job should run. A local computer is simple, but it must be powered on, connected, and able to run Node.js at the scheduled time. Hosted scheduled compute avoids relying on a particular desktop, but you must configure its runtime, secrets, logs, and retry behavior.
Example: run every day with cron
On a Unix-like system, find the absolute path to Node.js and your script (for example, using which node), then edit your crontab with crontab -e. This example runs daily at 9:00 a.m. according to the machine’s local timezone:
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 problems0 9 * * * /usr/bin/node /absolute/path/capture.js >> /absolute/path/capture.log 2>&1
Replace the paths with those on your machine. Cron does not necessarily inherit variables from your interactive shell, so define required environment variables securely in the job’s environment or use a protected wrapper script. Do not put a long-lived token in a world-readable file.
Example: Windows Task Scheduler
- Open Task Scheduler and choose Create Basic Task.
- Set the trigger (for example, daily) and the time or recurrence you want.
- For the action, choose Start a program, set the program to the full path to
node.exe, and add the full path tocapture.jsas an argument. - Set the working directory to the project folder if your setup needs it. Configure the task to run only when the machine is available, and verify how its environment receives the Dropbox token.
- Run the task manually from Task Scheduler and inspect its history and log before relying on the recurrence.
Dropbox’s scheduling tutorial gives cron and a scheduled event service as examples of recurring execution, but it is an older tutorial about file requests, not a current website-screenshot guide: Dropbox developer getting started tutorial.
Rank #4
- All-in-One Complete Kit: This SANOOV RPi 5 bundle comes with Raspberry Pi 5 4GB RAM single board, active cooler, durable ABS case and screwdriver. No extra parts needed, ready to use right out of the box for beginners and hobbyists
- Powerful Single Board Computer: Equipped with 4GB RAM and high-performance processor, delivers fast running speed for 4K playback, AI projects, programming and daily computing tasks. SANOOV for raspberry pi 5 4GB is equipped with broadcom 64 quad-core Arm Cortex A76 processor with gigabit ethernet and upgraded with IEEE 802.11ac Wi-Fi, Bluetooth 5.0 dual-band 2.4Ghz and 5Ghz and Power Over Ethernet (POE). Upgrading delivers 2-3 x speed vs Pi 4, redefining the experience
- Efficient Active Cooler: Effectively lowers operating temperature and prevents performance throttling. Runs quietly even under long-time heavy load, ensures stable operation all day long. SANOOV RPi 5 4GB kit offer an active cooler, which combines an aluminium heatsink with a high-performance PWM fan. Active cooler is fully compatible with the Pi OS, which can effectively reduce the temperature of RPi5 and ensure its good performance during long-term high load operation
- Sturdy ABS Protective Case: Well-fitted for Raspberry Pi 5 board, can be secured with 4 screws to effectively protect the Pi 5 motherboard from damage, reserves full access to all ports and buttons. SANOOV uses ABS material to produce the case, which has a softer texture and feel. Meanwhile, SANOOV case adopts a layered design for easy disassembly and installation. (Tip: The Case cannot install M.2 HAT Add on Board and Solid State Drive!)
- Wide Application & Full Compatibility: Seamlessly compatible with official OS and mainstream peripheral accessories for Raspberry Pi 5. Whether you are a beginner, student, electronics hobbyist or professional developer, this all-in-one kit meets your diverse needs. It excels in IoT projects, robotics design, retro gaming devices, home media servers and other DIY creations. Backed by a large global community, you can easily find guides, technical support and shared projects online
Make recurring uploads reliable
- Use unique filenames for history. The timestamp in the example distinguishes each run. For intentional replacement, choose a stable path and explicitly select the upload behavior you want; do not assume a repeated path preserves old versions.
- Check before upload. The script checks the page response and waits for screenshot creation before calling Dropbox. Keep the process exit status nonzero on failures so the scheduler can report them.
- Record useful logs. Log the run time, page URL (if it is not sensitive), result path, and error details. Never log access tokens, cookies, or other secrets.
- Plan for transient failures. Network issues, site changes, expired authorization, and browser updates can break a run. Configure a scheduler retry only if duplicate timestamped captures are acceptable, and review failures rather than assuming each recurrence worked.
- Consider image growth. Full-page captures and frequent schedules can produce many files. Decide on a retention policy and clean up old captures deliberately.
Troubleshooting
The page is blank or incomplete
Check that the URL is correct and reachable from the machine running the job. The site may require a login, block automation, or render content after the initial load. Wait for a meaningful selector, use the correct browser context for authorized access, and inspect a local screenshot before enabling the schedule.
The script reports a timeout
A page may never reach network idle because it maintains connections or loads ongoing resources. Use domcontentloaded and wait for a specific page element instead, or adjust the timeout for the site’s normal response time. Avoid unlimited waits because they can stall scheduled runs.
Dropbox returns an authorization or permission error
Verify that the token is valid, the app is authorized for the intended account, and files.content.write is enabled and granted. If you change app scopes, the user may need to authorize the updated permissions.
The upload fails because of its path
Confirm the Dropbox path begins with the intended folder and that the selected app access type permits writing there. Check the exact API error and the returned file metadata rather than treating a process launch as proof of upload.
The scheduled run works manually but not automatically
Schedulers often run with a different working directory, environment, user account, or permissions. Use absolute paths, configure secrets in the scheduler context, and inspect redirected logs or Task Scheduler history.
The Tool Desk
Outbyte Driver Updater FREEScan for outdated or missing drivers - takes under a minuteDriver Scan →Outbyte PC Repair FREERepair Windows errors before they cause bigger problemsFix Now →Files overwrite or collide
Use unique names, such as the UTC timestamps in the script, and add conflict mode for new files. If you prefer one continually replaced image, configure that deliberately and understand that it will not provide a separate file for every capture.
Best Value
- 【What you Get】You will get 1*Pi 5 8GB Single Board,1*RasTech Case,1*Active Cooler,1*Screwdriver,1*Installation instructions,12-month free warranty, lifetime service, 24-hour prompt and friendly response.
- 【More Connectors】There are two USB 3.0 ports(5Gbps simultaneously) and two USB 2.0 ports, which triple total bandwidth ,support any combination of up to two cameras or displays. Peak SD card performance is doubled through support for the SDR104 high-speed mode. It provides a smooth desktop experience for you. Offer Gigabit Ethernet and a PCIe interface, along with dual-band Wi-Fi and Bluetooth 5.0/BLE wireless capability. The RasTech Pi 5 Kit use the new 27W 5.1V 5A USB-C power connector.
- 【 Support Dual 4Kp60 Display 】Each of the two microHDMI sockets can control a 4K display at 60 Hertz, now support HDR, offering super HD video for media streaming projects. RPi 5 is the first RPi model that comes with a PCI Express port (PCIe 2.0 x1 with 500 MB/s) to attach SSDs (requires separate M.2 HAT).
- 【 Excellent Chips And Applications】Pi 5 is a full-size Pi computer using silicon built in-house at Pi. The RP1 “southbridge” provides the bulk of the I/O capabilities for Pi 5. Pi 5 is more friendly and convenient in the development of Internet of Things, Web development, machine identification, automatic control and other electronic equipment applications and network.
- 【 Faster CPU, Better GPU 】 Pi 5 features a Broadcom BCM2712 64-bit quad-core Arm Cortex-A76 processor running at 2.4GHz, it delivers a 2–3× increase in CPU performance relative to RaspberryPi 4. The 800MHz VideoCore VII GPU is compatible to OpenGL ES 3.1 and Vulkan 1.2, substantial uplift in graphics performance. Pi 5 Offers lightning-fast CPU speed, a PCI Express interface, a Real Time Clock (RTC) and a power button and runs significantly cooler than Pi 4.
When Dropbox’s built-in screenshot sync is enough
Dropbox Help says screenshot sync automatically saves screenshots taken on supported Mac and Windows computers to a Screenshots folder, and that it is unavailable on mobile devices: Dropbox screenshot sync help. That is useful for screenshots you take on your computer, but it is not documented as a timed service that opens a website and captures it repeatedly.
Or skip the browser setup
ScreenshotNeo can capture a page through one API request and can also store a screenshot in Dropbox if you connect the workflow that way; this API call itself returns the image, so your automation still needs to upload its response to Dropbox. For API details, see ScreenshotNeo documentation.
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp
ScreenshotNeo removes cookie banners, popups, and chat widgets before capture; bot checks, blank pages, failed loads, and cache hits are not billed. Its MCP server lets AI agents take screenshots, and the free plan includes 1,000 screenshots per month with no card; paid plans start at $5 for 3,000. To use it on a recurring schedule, run the request from your scheduler and upload the returned file to Dropbox. Sign up for ScreenshotNeo’s free plan.
Frequently Asked Questions
Can Dropbox automatically capture a website on a schedule by itself?
No. Dropbox’s documented screenshot sync saves screenshots taken on supported desktop computers; recurring website capture requires a browser capture step and a scheduler.
Can I capture the full webpage instead of just what’s visible?
Yes. Set Playwright’s screenshot option fullPage: true to capture the scrollable page.
What if I need a screenshot every few minutes?
Set the scheduler cadence to the required interval, then check that your runtime, Dropbox permissions, and retention plan can handle the resulting number of captures.
Quick wins for a faster PC:
Fix the driver behind crashes, sound loss and screen glitchesFind Drivers →Clear out junk files and repair common Windows errorsFree Scan →Scan for outdated or missing drivers - takes under a minuteDriver Scan →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.




