Zelvior logo
Free v0.6.1 Works on old, slow computers

Is your browser slow on an old computer?

Zelvior makes web pages load and scroll faster on machines that struggle — an old laptop, a budget phone, a computer from a decade ago. No settings to learn. Install it once and forget about it.

For anyone with a slow computer

If pages take a while to load, scrolling feels jerky, or your computer's fan spins up just from browsing — that's usually pages doing more work than an older machine can keep up with: loading every image at once, running scripts that never pause. Zelvior sits in your browser and fixes that automatically on every site you visit, without you having to do anything after installing it.

Pages load faster

Images further down a page wait to load until you actually scroll to them, instead of all loading at once and competing for your connection and CPU.

Scrolling feels smoother

Background work is spread out so it doesn't get in the way while you're actively scrolling or clicking — it happens during the little gaps when you're not.

Adjusts itself to your computer

On a fast, modern machine it barely does anything extra. On an older or slower one, it steps up how much it helps, automatically, without asking you.

Tested on a genuinely old machine, not just a fast laptop with throttling turned on: a 2009 laptop with 1GB of DDR2 RAM. Results were mixed rather than uniformly better everywhere — see the honest breakdown in the developer section below if you want the details.

Free and open-source, and it doesn't send your browsing data anywhere — it only reads settings from your own browser's local storage. Currently installed manually (download, unzip, and load it in your browser's extension settings) — look for "zelvior-extension" in the repository list, which has step-by-step instructions. Works in Chrome, Edge, Brave, and other Chromium-based browsers.

For developers

Everything below is the underlying open-source runtime the extension is built on (zelvior-runtime on npm) — for adding the same behavior to your own site.

This page, right now

This isn't a mockup — this page loads the real runtime from the CDN link below and enables it on itself. The panel updates from Zelvior.metrics.snapshot(), live.

Loading runtime from jsDelivr…

What it does

Lazy image loading

Defers off-screen images automatically. Skips anything already in the initial viewport or marked loading="eager"/fetchpriority= "high", so it never delays your LCP image.

Cooperative scheduling

Two priority queues drain via requestAnimationFrame and requestIdleCallback so non-critical work never blocks a frame.

Self-tuning

Watches FPS, long tasks, and main-thread busy-ratio, and steps between four quality levels automatically — no manual thresholds to configure.

Zero dependencies

One file. No build step required to use it — <script> tag, npm import, or CommonJS require, all from the same package.

Standalone modules

Separate from the core runtime above — importing one of these never loads the core, or each other beyond what's actually used. Added in v0.5.0. Full docs on GitHub ↗

zelvior-runtime/events

passiveOpts, throttleRaf, debounce, onFrame, onIdle, delegate — event helpers with no DOM/runtime dependency beyond what you pass in.

zelvior-runtime/dom

read/write/clear — a fastdom-style batched read/write scheduler that avoids forced-synchronous-layout when reads and writes from independent call sites get interleaved.

zelvior-runtime/scroll

onScroll — a passive, rAF-throttled scroll listener. No custom scrollbar, no change to how the browser actually scrolls — just a cleaner way to listen.

import { onScroll } from 'zelvior-runtime/scroll';
import { read, write } from 'zelvior-runtime/dom';
import { debounce } from 'zelvior-runtime/events';

Honestly stated, not just claimed: the core bundle above is byte-identical whether or not you import any of these — measured, not assumed. See PERFORMANCE.md for exactly what was and wasn't benchmarked for each one.

Install

CDN — no build step, no install

<script src="https://cdn.jsdelivr.net/npm/zelvior-runtime/dist/zelvior.min.js"></script>
<script>Zelvior.enable();</script>
<script src="https://unpkg.com/zelvior-runtime/dist/zelvior.min.js"></script>
<script type="module">
  import Zelvior from 'https://esm.sh/zelvior-runtime';
  Zelvior.enable();
</script>

This exact jsDelivr snippet is what's running this page's live panel above — checked against the real CDN response before shipping, not assumed.