Vidbytok (Ukrainian відбиток — “imprint”) is a one-click desktop website copier. Paste any URL, press one button — get a complete, browsable offline mirror of the site.
No settings, no checkboxes, no depth sliders. Vidbytok probes the target, decides the strategy itself (fast static scraper vs. headless browser), picks a sensible crawl depth, pulls every asset, and hands you a zipped offline copy.
Most site-rippers either drown you in options or break on modern sites (SPAs, Cloudflare, lazy-loaded media). Vidbytok hides all of that:
- One input, one button. Paste a link, press
COPY SITE. That’s the whole UI. - Self-deciding engine. It fetches the page once and analyses it:
- plain server-rendered HTML → fast static scraper (
website-scraper) - SPA / JS-rendered / Cloudflare / anti-bot challenge → headless browser engine (real Chromium: clicks cookie banners, triggers lazy-load, saves the rendered DOM)
- plain server-rendered HTML → fast static scraper (
- Auto depth & scope. Root URL → broader crawl; a deep link → focused crawl.
Internal links and
sitemap.xmlare followed automatically; off-site assets (CDN images/fonts/CSS/JS) are still pulled so the copy works offline. - Everything bundled. HTML, CSS, JS, images, fonts, media — re-pathed for
offline navigation and packed into a
.zip. - Ad/tracker stripping during render so the mirror is clean.
- History & themes, out of the way. A two-icon toolbar opens a full download history (thumbnail, pages/size, re-copy, open/reveal/zip) and a theme picker — 5 CRT skins (phosphor green, amber, ice, mono, paper), persisted. The main screen stays a single input and one button.
| Idle | Copying | Done |
|---|---|---|
![]() |
![]() |
![]() |
| History | Themes |
|---|---|
![]() |
![]() |
URL ─▶ probe (1 lightweight request)
├─ HTTP 403/429/503, "Just a moment", cf-challenge ─▶ headless browser
├─ framework root + little text (React/Next/Vue/Nuxt) ─▶ headless browser
├─ thin HTML, JS-driven ─▶ headless browser
└─ normal server-rendered HTML ─▶ fast static scraper
│
auto: depth (root=2 / deep-link=1), recursive, sitemap, ad-block, │
all asset types, zip, open folder ──────────────────────────┘
The heavy lifting:
- Static engine —
website-scraperwith an expanded source map (lazydata-src,srcset,og:image, icons, fonts), domain-scoped recursion, assets sorted intocss/ js/ images/ fonts/ media/. - Browser engine — a pool of offscreen Electron
BrowserWindows. Each page: load → dismiss cookie banner → hydrate → auto-scroll for lazy content →savePage('HTMLComplete')→ optional PDF/PNG → cross-page links rewritten to local files.sitemap.xml/sitemap_index.xmlseed the queue.
npm install
npm startRequires Node.js 18+ and Windows (Electron 33, Windows x64 build target).
npm run distProduces a portable Vidbytok.exe and an NSIS installer in dist/.
The installer registers a desktop/Start-menu shortcut named Vidbytok.
Note: building the NSIS installer needs symlink-creation rights for
electron-builder’s signing cache — enable Windows Developer Mode or run the build from an elevated shell. The portabledist/win-unpacked/Vidbytok.exebuilds without that.
- Electron 33 — desktop shell, headless render engine, IPC
- website-scraper — fast static mirroring
- archiver — zip packaging
- Zero telemetry. Config & history live in
%APPDATA%/Vidbytok, not next to the binary.
MIT © Oleksandr Bilov (@Dominant-dev)




