feature

Bring Your Bookmarks

Import from anywhere — HTML, CSV, or plain text — with 5x faster AI processing.

December 28, 2025
Import Migration Performance

Welcome to the first Arivu Chronicle.

We’re starting with something that matters: getting your bookmarks out of wherever they’re stuck.

The Migration Problem

You’ve probably been here before. You try a new bookmarking tool. It looks promising. You start using it. Then you realize your old bookmarks are trapped in your previous tool — or scattered across three browsers and a spreadsheet you exported from Notion two years ago.

The average knowledge worker has bookmarks in at least three different places. That Chrome folder from 2019. The Firefox sync that stopped syncing. The “Read Later” list in Safari that became a graveyard of good intentions. Maybe a Pocket account, a Raindrop export, or a markdown file you swore you’d organize.

Each system has its own export format. Each format has its own quirks. And switching tools means either leaving everything behind or spending a weekend wrestling with file conversions and manual cleanup.

Switching tools shouldn’t mean starting over. Your bookmarks are yours. They should move with you.

So we built an import system that doesn’t care where your bookmarks come from.

CHROMENOTIONFIREFOX.TXT FILEARIVUIMPORTORGANIZEDSEARCHABLEAI-ENHANCED

Any Format, One Drop

Arivu’s import parser speaks multiple languages:

HTML exports — The standard format browsers use. Export from Chrome, Firefox, Safari, or Edge and drop it straight in. We parse the nested folder structure, preserve your organization, and pull out every URL with its title intact.

Browser bookmark exports are hierarchical — folders within folders, sometimes five levels deep. Our parser walks the entire tree, maintaining your folder structure as collections in Arivu. That “Research / 2024 / Machine Learning / Papers” hierarchy you carefully built? It arrives intact. The timestamps, the add dates, everything you’d expect to be there.

We handle edge cases gracefully: malformed HTML from old browser versions, character encoding issues from bookmarks saved in different locales, duplicate detection so you don’t end up with three copies of the same article.

CSV files — Perfect for spreadsheet people. Notion exports, Airtable dumps, or that custom list you’ve been maintaining in Google Sheets. As long as there’s a URL column, we’ll find it.

CSV imports are smarter than simple column mapping. Our parser auto-detects which column contains URLs (even if it’s labeled “Link”, “Website”, “href”, or just left unnamed). It pulls titles, descriptions, tags, and dates from whatever columns you have. Notion exports with their nested properties? We parse those. Airtable rollup fields? Handled. The goal is zero manual mapping — drop the file and we figure it out.

Plain text — Sometimes simple is best. One URL per line. No headers, no structure, just links. We’ll handle the rest.

Text files get special treatment. We scan for anything that looks like a URL — with or without https://, with query parameters, with fragments. If you’ve been copying links into a notes app for years, paste that entire mess into a text file and we’ll extract every valid URL. Duplicates are caught, broken links are flagged, and everything else goes straight into your library.

The parser auto-detects format, so you don’t need to think about it. Drop your file and go.

.HTML<DL><DT><A...><DT><A...></DL>.CSVurltitle.TXThttps://...https://...https://...https://...

5x Faster AI Processing

Here’s where things get interesting.

When you import bookmarks, Arivu doesn’t just store URLs. It fetches each page, reads the content, and generates an AI summary so you can actually find things later. That’s a lot of work — especially for bulk imports.

This is what separates Arivu from a folder of browser bookmarks. Every link you save becomes searchable by what it’s about, not just its title. Looking for that article about Python async patterns? Search “async await concurrency” and find it — even if the title was “A Deep Dive into Modern Python.” The AI reads everything, so you don’t have to remember exact words.

Our original pipeline processed bookmarks one at a time. Fine for adding a few links, painful for importing hundreds. Users with large libraries were waiting hours for processing to complete. Some gave up entirely.

We rebuilt the AI pipeline from scratch:

  • Parallel processing — Bookmarks now process concurrently using asyncio.gather(), not sequentially
  • Smarter rate limiting — Our new EnhancedGeminiRateLimiter tracks requests per minute, tokens per minute, and daily limits simultaneously, with dynamic throttling at 80% capacity
  • Higher throughput — Jumped from 15 requests per minute to 500 RPM with a 50% safety buffer

The technical details matter here. The old system was simple: fetch page, send to Gemini, wait for response, move to next. Safe, but slow. The new system runs up to 10 concurrent workers, each managing its own request queue. The rate limiter predicts when limits will refresh and pre-queues requests to maximize throughput without hitting errors.

We also optimized content extraction. Not every page needs 100KB of HTML sent to the AI. Our new extraction pipeline pulls just the main content — skipping navigation, ads, footers, and sidebars. Smaller payloads mean faster responses and lower token usage. The quality of summaries actually improved because the AI isn’t distracted by boilerplate.

The result: 5x faster summary generation. Import hundreds of bookmarks and watch them process in the background while you keep working. A 500-bookmark import that used to take 45 minutes now finishes in under 10.

BEFORE: SEQUENTIAL

123

15 RPM → 45 MIN FOR 500 BOOKMARKS

AFTER: PARALLEL

500 RPM → 10 MIN FOR 500 BOOKMARKS

5X FASTERPROCESSING SPEED

Other Changes

This was our first chronicle entry — focused entirely on making it easy to bring your existing bookmarks to Arivu.

We shipped this alongside some stability improvements (504 error fixes, timeout resilience) to make sure your imports complete reliably, even for large files. Uploads now stream in chunks, so massive HTML exports don’t choke memory. Failed bookmarks get queued for retry instead of silently disappearing.

We also added progress tracking — you can see exactly how many bookmarks have been processed, how many are pending, and estimated time to completion. No more wondering if the import is stuck or just slow.

If you’ve been putting off switching to Arivu because migration felt like too much work: that excuse is gone now.

Bring your bookmarks. All of them.