A Wayback Machine for the sites you own.
Capture your websites on a schedule. See exactly what changed. Turn years of pixels into a visual record—kept on your infrastructure, not ours.
- Self-hosted
- AGPL-3.0
- Your archive
Three frames. One clear story.
Yesterday should be easy to find.
Screenshot-a-Day does one job: it keeps a dependable visual history of the web pages you are responsible for.
Capture
Schedule exact, reproducible frames across Chromium, Firefox, and WebKit—even for authenticated or internal pages.
Compare
Put any two moments side by side, fade between them, or generate a pixel-level heatmap of what moved.
Publish
Keep the archive private, share an unlisted link, or publish an indexable gallery with GIF and WebM timelines.
No screenshot cloud required
Your sites.
Your schedule.
Your archive.
Some pages cannot—and should not—be handed to a third-party capture service.
Screenshot-a-Day runs where you choose. Headers and cookies are encrypted with your installation key, private targets require an explicit allowlist, and your images stay in storage you control.
The self-hosted Screenshot-a-Day application includes no product telemetry and does not report usage to Arts-Link. This marketing site uses anonymous, cookieless analytics as described in its privacy notice.
Read the security modelThe useful details
Small enough to understand.
Serious enough to trust.
- 01 / Access
- Encrypted headers + cookies
- 02 / Browsers
- Chromium, Firefox + WebKit
- 03 / Sharing
- Private, unlisted + indexable
- 04 / Motion
- GIF + WebM timelines
- 05 / Automation
- REST API + signed webhooks
Bring your own machine
A short setup to visual memory.
Screenshot-a-Day ships as two containers and one persistent data volume. Add your installation secrets, bring it up, and open the setup screen.
Current tested release v0.1.1 is for self-hosters who are comfortable running Docker Compose and reading the deployment guide.
$ git clone --branch v0.1.1 --depth 1 https://github.com/arts-link/screenshot-a-day.git
$ cd screenshot-a-day
$ cp .env.example .env
$ openssl rand -base64 32
$ openssl rand -hex 32
$ openssl rand -hex 32
# Add those values to the three matching .env entries, then:
$ chmod 600 .env
$ docker compose pull
$ docker compose up -d
Read the deployment guide
The web changes. Keep the receipts.