Documentation · this section

Documentation — 02

Bring your Pocket archive in.

Last updated · 2026-05-13

Pocket shut down in July 2025. If you exported your archive before the door closed — or you’re working from the zipped CSV email Pocket sent out — Shelf reads both formats and folds them into your library. No server in the middle. The file never leaves your browser.

Get your Pocket export

If you still have a logged-in Pocket window or a copy of the legacy export tool, you have one of two files:

  • ril_export.html — the classic Pocket HTML export. Two sections: Unread and Read Archive. Each item is an <a> with time_added and tags attributes.
  • pocket.csv — the recent zipped-email export. Columns: title, url, time_added, tags, status (where status is archive for archived items).

Either file works.

Where to upload it

Open Shelf’s Options page. The Step one · Archive card sits at the top. Drag your .html or .csv file onto the drop zone, or click the box to select the file from your file system. Shelf parses it in your browser, deduplicates against URLs already in your library, and stores the new items in chrome.storage.local. No upload, no network call.

What gets imported

For each Pocket item Shelf brings in:

  • URL — the original link. Required; rows with invalid URLs are skipped and counted as invalid links in the summary.
  • Title — the title Pocket stored. Falls back to the URL when Pocket didn’t have one.
  • Saved at — Pocket’s time_added (UNIX seconds, multiplied to milliseconds). Falls back to “now” when missing or malformed.
  • Tags — Pocket’s comma-separated (HTML) or pipe-separated (CSV) tag list, trimmed.
  • Kind — inferred from the URL hostname: video for YouTube/Vimeo, podcast for Spotify/Apple Podcasts/Google Podcasts, otherwise article.

What Shelf does not bring in: excerpts, thumbnails, reading time, and highlights — Pocket’s export doesn’t include those reliably. Your imported items live alongside your own saves; re-save any of them by visiting the URL and pressing Alt + S if you want the full metadata.

Deduplication

Imports are deduplicated against existing items by canonical URL. Two saves of the same article tend to look slightly different on the wire — one carries a utm_source, the other doesn’t; one is https://www.example.com/post, the other is http://example.com/post/. Shelf normalises both sides before comparing:

Protocol is forced to https:// for comparison. — Host is lowercased and the leading www. is dropped. — Tracking parameters are stripped — utm_, fbclid, gclid, msclkid, dclid, yclid, ttclid, mc_eid, mc_cid, _ga, gl, ref, ref_src, ref_url, referrer, igshid, igsh, twitter_share, twclid, s, spm, scm, and the Matomo pk family. Other query parameters are preserved. — Path loses any trailing slash (except for the root). — Fragment (#anchor) is dropped — Pocket never preserved them.

Two URLs that normalise to the same string are treated as the same item. When that happens, the existing item wins on most fields — its title is preserved (you may have edited it), its other metadata stays — but tags are merged as a union (case-insensitive, original casing kept) and savedAt takes the earlier of the two so re-importing an older archive does not push the date forward.

If you import the same export twice, the second pass is therefore a no-op for already-present URLs. The summary at the end shows three numbers: items found, items added, items skipped as duplicates.

That’s it. Move on to collections and destinations once your library is back.