Sync Your Reading List Across Devices Without a Cloud Account

Savely syncs your reading list between computers through a private GitHub Gist you own, not through our servers (we don't have any). Here's how to set it up, how conflicts are resolved, and what to know about privacy.

Savely stores your reading list on your device, with no account and no server. That's great for privacy, but most of us read on more than one computer. So how do you get the same list on your laptop and your desktop?

Savely's answer: sync through a place you already own. Right now that's a private GitHub Gist on your own GitHub account. Savely never sees your data in transit, because there's no Savely server for it to pass through.

This guide covers setup, how merging works, and the privacy trade-offs you should know about before turning it on.

Before you start: the privacy trade-off

Sync is off by default, deliberately. Here's what turning it on means:

  • Your list (addresses, titles, tags, highlights, notes) and the article text are stored in a private Gist.
  • A private Gist isn't listed publicly or shown on your profile, but it is not end-to-end encrypted. Anyone who has your token, or access to your GitHub account, can read it.
  • The token stays in local extension storage on each device, and is never copied into your browser's own settings sync.

If that trade-off works for you, read on. If not, you can still move your list between machines with a manual export and import.

Step 1: Create a GitHub token

  1. On GitHub, go to Settings → Developer settings → Personal access tokens.
  2. Create a token with the smallest possible access:
    • a classic token needs only the gist scope, or
    • a fine-grained token needs only Gists: read and write.
  3. Copy the token. GitHub shows it only once.

Giving the token only Gist access means that even if it leaked, it couldn't touch your repositories.

Step 2: Connect Savely

  1. Open your Savely list and click ⚙ to open the options page.
  2. Scroll to Sync across devices and pick GitHub Gist as the provider.
  3. Paste your token and click Connect.
  4. Your browser will ask for permission to access api.github.com. Allow it; sync can't work without it.

On the first sync, Savely looks for an existing Savely Gist on your account. If there isn't one, it creates a new private Gist.

Step 3: Sync

  • Click Sync now to sync on demand.
  • Tick Sync automatically every 30 minutes to let it run in the background while your browser is open.

Step 4: Add your other devices

On each other computer, install Savely and connect the same token. Savely finds the existing Gist and joins it, so every device ends up reading from and writing to the same place.

How Savely merges changes

Two devices will inevitably change the same list between syncs. Savely's rules are designed so you never lose something you meant to keep:

  • Items are matched by address, with tracking parameters like utm_source ignored, so the same article saved on two machines becomes one item.
  • Tags and highlights are combined, never overwritten. Tag an article "work" on your laptop and "later" on your desktop, and it ends up with both. If the same passage is highlighted on both, the version with a note wins.
  • Other fields (favorite, archived, and so on) take the most recent change.
  • Deletions are remembered, so an item you delete on one device disappears from the others too. The exception: if you changed that item on another device after deleting it, the newer, deliberate edit wins and the item comes back.
  • If another device synced in the meantime, Savely stops rather than overwrite its changes, and tells you. Click sync again to merge.

What's inside the Gist

Two files:

  • savely-sync.json: your list's metadata (addresses, titles, tags, highlights, deletions) in readable JSON.
  • savely-contents.json.gz.base64: the article text, compressed.

Because it's a normal Gist, GitHub keeps its revision history, which gives you an extra safety net.

Limits worth knowing

  • Size: Savely refuses to upload a file larger than about 9 MB and says so plainly. Compressed article text for several hundred articles fits comfortably.
  • Automatic sync only runs while the browser is open.
  • Disconnecting removes the token from that device. It doesn't delete the Gist or your local list.

Prefer not to use GitHub?

Then don't. Savely works fully without sync. For an occasional move between machines, use Export → Full backup (JSON) on one device and Import on the other. Imports merge by address, so nothing is duplicated or overwritten.