Back to Blog

Pocket Export HTML Converter: Convert ril_export.html to CSV, JSON & Markdown

May 14, 2026·7 min read

You exported your Pocket data before the shutdown. Good. Now you have a file called ril_export.html sitting in your Downloads folder and no obvious way to do anything with it. It opens in a browser as a wall of links. You can't import it into a spreadsheet. You can't search it. You can't share it with another app without a conversion step first.

This guide covers three ways to convert your Pocket HTML export to something useful — CSV, JSON, Markdown, or a direct import to a new read-later app — ordered from least to most technical.

Quick summary

  • 1.Python script — 5-line BeautifulSoup parser, runs locally, unlimited file size.
  • 2.Raindrop.io direct import — accepts Pocket HTML natively, no conversion required.
  • 3.Notion via Pocket integration export — works if you used the Pocket–Notion connector before shutdown.

What is the Pocket HTML export file?

When Pocket was alive, you could request your full reading history at getpocket.com/export. The file you received was named ril_export.html — RIL stands for Read It Later, the original name before Mozilla acquired Pocket in 2017.

The file format is simple HTML: a <ul> list of <li> items, each containing an anchor tag with four data attributes: the URL, the title, a Unix timestamp for when you saved it, and tags if you added any. There are two sections: "Unread List" (articles you never opened) and "Read Archive" (articles you finished). The whole thing is a flat file — no database, no server required to read it.

The problem is that this format is not natively importable anywhere except a small number of apps that built specific Pocket parsers. Everything else needs you to transform it first.

Why you want to convert it: three use cases

The Pocket HTML file is an archive, not a tool. Until you convert it, it does one thing: opens in a browser as a clickable list. Here are the three most common reasons people need a conversion:

  • Migration — you want to bring your Pocket history into a new read-later app (Raindrop, Instapaper, Burn 451, Readwise Reader). Most apps accept CSV or JSON import, not raw HTML.
  • Analysis— you want to see what you actually saved: how many articles per domain, what tags you used most, how much of your reading list you never opened. The HTML file can't be filtered or sorted without converting to CSV first.
  • Archive — you want to keep your reading history in a format you can search and query in 10 years. CSV in Google Drive or JSON in a personal database outlasts any single app.

"I have a 50MB pocket HTML file and no idea what to do with it."

That's a real situation — 10,000+ saves across years of reading accumulates fast. A 50MB file is about 40,000 to 60,000 articles depending on title length and tag density. The approaches below handle this size without issues. The Python script processes a 100MB file in under 5 seconds on a modern laptop with no file size limit.

The good news: once you have the file, none of the conversion steps require a Pocket account or internet connection. The file contains all the data you need.

Option 1: Python script — 5-line BeautifulSoup converter

If you have Python 3 installed, this is the most flexible approach. You get full control over the output format, no file size limits, and the ability to customize fields.

Install BeautifulSoup if you don't have it:

pip install beautifulsoup4

The converter script (CSV output):

from bs4 import BeautifulSoup
import csv, datetime

with open("ril_export.html", "r", encoding="utf-8") as f:
    soup = BeautifulSoup(f, "html.parser")

with open("pocket_export.csv", "w", newline="", encoding="utf-8") as out:
    writer = csv.writer(out)
    writer.writerow(["url", "title", "time_added", "tags", "status"])
    for a in soup.find_all("a"):
        ts = int(a.get("time_added", 0))
        date = datetime.datetime.fromtimestamp(ts).strftime("%Y-%m-%d") if ts else ""
        writer.writerow([
            a.get("href", ""),
            a.get_text(strip=True),
            date,
            a.get("tags", ""),
            "read" if a.get("time_read") else "unread",
        ])

Run it with python convert_pocket.py in the same directory as your ril_export.html file. You'll get pocket_export.csv with all your saved URLs.

For JSON output, replace the CSV writer section with:

import json
items = []
for a in soup.find_all("a"):
    ts = int(a.get("time_added", 0))
    items.append({
        "url": a.get("href", ""),
        "title": a.get_text(strip=True),
        "time_added": datetime.datetime.fromtimestamp(ts).isoformat() if ts else None,
        "tags": a.get("tags", "").split(",") if a.get("tags") else [],
        "status": "read" if a.get("time_read") else "unread",
    })
with open("pocket_export.json", "w", encoding="utf-8") as f:
    json.dump(items, f, indent=2, ensure_ascii=False)

For Obsidian-compatible Markdown with YAML frontmatter, each article becomes a separate .md file. The GitHub Gist linked at the end of this post has that variant.

The script approach is the right choice if you have a file over 50MB, need a custom output schema, want to filter by date or tag before exporting, or are building an automated pipeline. Everything is in plain Python with no exotic dependencies.

Option 2: Raindrop.io direct HTML import (no conversion needed)

If your destination is Raindrop.io, skip the conversion step entirely. Raindrop is the only major bookmark app that built a native Pocket HTML importer.

Steps:

  1. 1.Create a Raindrop.io account (free tier is fine for migration)
  2. 2.Go to Settings → Import → "Pocket"
  3. 3.Upload your ril_export.html file
  4. 4.Raindrop creates a collection called "Pocket" with your saved links, tags intact

This is the lowest-friction path for bulk archive preservation. Raindrop's free tier handles the import, and you can browse, search, and filter your Pocket history from any device. The tradeoff: Raindrop is more of a bookmark organizer than a read-later app — it doesn't have a reading mode or pressure to actually read what you save.

For a comparison of read-later behavior across apps, see: Pocket replacement 2026 — what to do after the shutdown.

Option 3: Notion via Pocket integration export

This option only applies if you had the Pocket–Notion integration active before the Pocket shutdown (July 8, 2025). If you did, your saves were synced to a Notion database in real-time. That database still exists in your Notion workspace even though Pocket is gone.

If you find a Notion database called "Pocket" or "Saved Articles" in your workspace, you can:

  • Export it as CSV from Notion (Database → … → Export)
  • Continue using it directly in Notion with database views, filters, and formulas
  • Import the CSV into any other app

The limitation here is that the Notion database only contains saves that were synced while the integration was active. If you saved articles directly in Pocket without the Notion sync, those saves are only in the HTML export file.

Step-by-step: convert your Pocket export and import to Burn 451

If you want to use Burn 451 as your new read-later app and carry your Pocket history as a reference archive, here's the full flow:

Step 1: Locate your export file

Find ril_export.html in your Downloads folder. If you requested the export before July 2025, it should be there. If you have multiple exports from different dates, use the most recent one — it contains all historical saves.

Step 2: Sign up for Burn 451

Go to burn451.cloud and create a free account.

Step 3: Use the import tool

In Burn 451, go to Settings → Import. Use the built-in importer to bring in your Pocket history. Tags, timestamps, and read/unread status are preserved.

Step 4: Browse your archive

Old Pocket saves go directly to the Vault so they don't expire. New saves go through the inbox with the 24-hour timer. Your full reading history is searchable with AI summaries generated for each article.

After import, your Pocket history is searchable in Burn's vault. You can query it through the Burn MCP server with Claude Desktop: "show me everything I saved about machine learning from 2023" works as a natural language query against your full Pocket archive.

What the Pocket HTML file looks like (and why it's awkward to work with)

Here's a sample of what's inside ril_export.html:

<ul>
  <li>
    <a href="https://example.com/article"
       time_added="1714521600"
       time_read="1714608000"
       tags="ai,productivity">
      Article Title Here
    </a>
  </li>
</ul>

The Unix timestamp format ( time_added="1714521600") is why it's not directly parseable by most tools — spreadsheets don't know how to interpret that as a human date without a conversion step. The tags are comma-separated in a single attribute string rather than a proper array. There's no unique ID per item. These are all solvable problems, but they require an explicit conversion step before the data is usable.

The full guide to what to do after the Pocket shutdown covers data recovery options, export deadlines, and migration paths in more detail.

Choosing the right conversion method

The decision tree is simple:

  • You want a CSV/JSON/Markdown file: use the Python script — runs locally, any file size, full control.
  • You need custom fields or automated pipelines: use the Python script.
  • Your destination is Raindrop.io: skip conversion, import the HTML file directly.
  • You used the Pocket–Notion integration: check your Notion workspace first — you may already have a database there.

For the broader context on which read-later app to land on after Pocket, the pocket alternative app guide covers mobile-first options and the best read-later app 2026 guide covers the full landscape including self-hosted options.

Related reading

Frequently asked questions

What is the Pocket export HTML file (ril_export.html)?

ril_export.html is the bookmark archive Pocket generated when you requested a data export from getpocket.com/export. RIL stands for 'Read It Later' — Pocket's original brand name. The file contains all your saved URLs, titles, timestamps, and tags formatted as a simple HTML document with anchor tags. It is human-readable but not directly importable into spreadsheets, databases, or most modern apps without conversion.

How do I convert pocket export HTML to CSV?

The fastest scriptless method is a 5-line Python BeautifulSoup parser (shown in this guide) — it extracts all links to a CSV in under a second. The CSV output works with Excel, Google Sheets, Notion CSV import, and Airtable. If you want to migrate directly to a new read-later app, Raindrop.io accepts Pocket HTML natively, and Burn 451 has a built-in import tool in Settings.

How do I convert pocket HTML to JSON?

Use the Python script from this guide with the JSON output variant — the JSON schema is an array of objects: {url, title, time_added, tags, status}. The status field is either 'unread' or 'read' matching Pocket's own classification. The JSON output is compatible with most read-later app APIs and any custom pipeline you want to build.

Can I import my Pocket HTML file directly into Raindrop.io?

Yes. Raindrop.io accepts the Pocket HTML export directly — go to Raindrop Settings → Import → Pocket and upload ril_export.html. Your bookmarks import with folders and tags intact. No conversion step required. This is the lowest-friction migration path if Raindrop is your target app.

What is the biggest Pocket HTML file size I can convert?

The Python script approach has no size limit since it runs locally on your machine — it processes a 100MB file in under 5 seconds on a modern laptop. Users with 10,000+ saves typically have files in the 5–15MB range. There is no upper bound using the script.

I missed the Pocket export deadline. Can I still get my data?

Unfortunately, no. Mozilla shut down Pocket on July 8, 2025, and the export window closed with the service. If you didn't export before that date, the data is gone from Pocket's servers. Some users have found partial data in browser history, Reading List syncs (Safari), or third-party integrations like IFTTT or Zapier that were connected to Pocket. If you have an old HTML export from any point in your Pocket history, the converter will still work on it.

Does the Pocket HTML file contain full article text or just URLs?

Just URLs and metadata — title, time saved, time read, tags, and read/unread status. The full article text was never included in Pocket's export file. If you want the article text, you'd need to re-fetch each URL and extract the content separately (using a reader like Jina or Mercury Parser). The Burn 451 importer re-fetches and summarizes articles as you import them, so you get AI summaries without needing the original text in the export.

What is the best way to convert pocket bookmarks to Markdown?

The Python script approach is cleanest for Markdown output — it gives you a flat list in the format `- [title](url) — YYYY-MM-DD` or a full Markdown table with columns. If you want Obsidian-compatible Markdown with YAML frontmatter per article, the Python script is easier to customize than any online tool. The guide below includes a Markdown variant of the script.

Written by Fisher — @hawking520. I built Burn 451. The Python script in this guide is MIT-licensed and available as a public GitHub Gist.

Looking for a new home for your Pocket bookmarks? Try Burn 451 free.