Bookmark Vault

A browser extension that saves your X (formerly Twitter) bookmarks as PDFs, conversation included

Last updated: October 20, 2026日本語

1. About this extension

Bookmark Vault is a browser extension that takes the bookmarks you have saved on X (formerly Twitter), saves each one to your computer as a PDF that looks close to how it appears on screen, and then removes from your bookmarks only the posts that were saved successfully.

All PDFs are created inside your own browser. We never receive or store the content of your bookmarks, the PDFs, or your X login. The only information sent to our server — used to count free runs and check your subscription — is described in the privacy policy.

What it does

Limits and constraints

ItemActual behavior
Posts per runUp to 50. If you have more than 50, run it again and it continues where it left off
Save folderUse “Choose a folder” in the panel to pick a folder inside your browser's download folder. To save somewhere outside it, change the download location in your browser's own settings (a limitation of the browser)
Posts with videoVideos are not included in the PDF. A thumbnail with a play mark is recorded instead
Multi-slide cardsAll slides are recorded, laid out in two columns
Sleep during a runIf your computer goes to sleep, the run stops. Run it again after waking and it continues where it left off
RequirementsDesktop Google Chrome or Microsoft Edge, signed in to X. Does not work on smartphones

Pricing

ItemDetails
Free trial3 free runs (1 run = one execution, up to 50 posts). Enough to check that it works with your X account
Paid planUS$4.99 per month or US$54.99 per year (€4.99 / €54.99, £3.99 / £43.99, CA$6.99 / CA$76.99, A$7.99 / A$87.99; ¥500 / ¥5,500 in Japan). In other countries, the price is converted into your local currency at checkout. Prices include tax where it applies. One subscription covers up to 2 X accounts
CancellationCancel anytime from “Settings” in the panel. You can keep using it until the next billing date. No prorated refunds
PaymentHandled on Stripe's checkout page. Your card number never reaches us

You also need to turn off the browser setting “Ask where to save each file before downloading.” If it stays on, a save dialog appears for every single PDF. The extension cannot change this setting for you, so the first-run guide walks you through it.

2. Privacy policy

Revised October 20, 2026 (added the information sent to our server and the outside services used, for the launch of the paid plan)

This section explains what data the extension handles and how. Browser extension store policies (Chrome Web Store and Microsoft Edge Add-ons) require developers to disclose how data is handled, even when it is processed only on the user's device and never sent anywhere. Accordingly, this policy also describes processing that stays entirely on your device.

2-1. Data handled only on your computer (never sent to us)

DataWhy it is usedWhere it is keptSent to us
Content of your X bookmarks (text, images, author names, profile pictures, quoted posts, link cards, replies) To create the PDFs Your device only (saved as PDFs in your save folder) No
The PDFs created For you to keep Your device only No
Your X login session To read your own bookmarks. The extension uses the session your browser already holds Your browser (the extension does not copy or store it) No
Settings and records (save folder, display language, IDs of posts already processed, run log, a local copy of your run count and subscription status) To keep your settings for next time, avoid processing the same post twice, and keep working when our ledger server is briefly unreachable Your device only (chrome.storage.local) No
Diagnostic information (environment, settings, recent run log) To find the cause of problems. Written to a text file only when you press “Report a problem” Your device only No

2-2. Data sent to our ledger server

To count your 3 free runs and check your subscription status, the extension sends the following to our ledger server (api.hokanko.app):

The ledger server converts the account ID into a value that cannot be turned back (a one-way hash) before recording it. It does not store the ID number itself, your name, your handle or your email address.

The ledger records only the following:

What is recordedWhy it is needed
A hash made from your account IDTo tell users apart (it cannot be turned back into the original ID)
Number of runs used, and the ID of the latest runTo count the 3 free runs
Subscription status (active, cancellation scheduled, cancelled) and next billing dateTo decide whether the paid plan applies, and to show the next billing date in Settings
The subscription ID issued by StripeTo match notices from Stripe (such as a cancellation) to the right subscription

2-3. Outside services

ServiceRole and information handled
Stripe (payments)When you pay, Stripe receives your card details and email address directly. Your card number never reaches us. We receive only your subscription status and next billing date from Stripe
Cloudflare (hosts the ledger server and this website, and forwards contact email)Cloudflare may process connection data such as IP addresses while delivering requests. Email sent to our contact address is forwarded to our inbox through Cloudflare
Email service (contact)If you contact us by email, your message is stored on the email service

2-4. What we do not do

2-5. Retention and deletion requests

Data on your device (settings and records) is deleted when you uninstall the extension. The PDFs are under your control; we have no involvement with them.

To have your ledger record deleted, please write to us at the contact address. Deleting it also removes your free-run count and the link to your subscription. If you have a paid subscription, please cancel it first.

2-6. Changes to this policy

If the way the extension handles data changes, we will post the change on this page and notify users inside the extension.

This policy is also available in Japanese. If the two versions differ, the Japanese version prevails.

3. Permissions

The extension asks for the following permissions when installed. Below, together with the warning your browser shows, we explain why each is needed and what the extension does not do with it.

PermissionWarning shown by the browser
debuggerAccess the page debugger backend
Read and change all your data on all websites
tabsRead your browsing history
downloadsManage your downloads
downloads.ui(Included in the downloads warning)
storage(No warning)
3 host permissionsCovered by the debugger warning, so no extra warning is shown

Exact wording may differ slightly between browsers and versions.

3-1. debugger

Why it is needed: To turn a post into a PDF that looks close to how it appears on screen. Among browser extension APIs, the only way to do this is Page.printToPDF through chrome.debugger. We considered three approaches that need weaker permissions and rejected each after confirming it could not meet the requirements:

  1. Drawing the PDF with a JavaScript library — embedding non-Latin fonts such as Japanese is difficult, and the layout breaks
  2. Saving self-contained HTML instead of PDF — the look stays the same, but the result is not a PDF
  3. Using window.print() — the system save dialog opens for every file. With up to 50 posts per run, that means 50 manual steps, which defeats batch processing

What it does not do: Attach the debugger to x.com pages or to any other tab you have open (it attaches only to the extension's own rendering tab, and detaches when the run ends), collect browsing history, or send what it reads anywhere.

What you will see: While PDFs are being created, the browser shows a bar at the top saying the extension is debugging the browser. This is how the browser tells you the permission is in use, and it disappears when the run ends.

3-2. tabs

Why it is needed: To open the extension's own rendering tab (an extension page) in the background for PDF creation and close it when finished. It is also used to clean up leftover rendering tabs, to check that the X tab that started a run is still open, and to open the browser's download settings from the setup guide.

What it does not do: The warning for this permission reads “Read your browsing history,” but the extension does not read your browsing history. The browser shows the same warning for every extension that asks for this permission. The extension only works with its own rendering tab and the X tab that started the run.

3-3. downloads

Why it is needed: To save the PDFs to your device. Files are saved only inside the download folder set in your browser.

Why downloads.ui is needed: When you choose a save folder, the extension places a tiny file there to confirm the location and deletes it right away. For that moment only, it hides the download indicator in the toolbar, and then restores it immediately.

What it does not do: Read your past download history, or touch any file other than those it created.

3-4. storage

Why it is needed: To keep settings (save folder, display language) and records (IDs of processed posts, run log, a local copy of your run count and subscription status) on your device. These values never leave your device (what is sent to the ledger server is described in 2-2).

3-5. Host permissions (3)

DomainPurpose
https://x.com/*To show the panel, read your own bookmark list, and remove the posts that were saved from your bookmarks
https://pbs.twimg.com/*To fetch images attached to posts and embed them in the PDF
https://abs.twimg.com/*To read a configuration value needed to remove bookmarks

These three domains, all operated by X Corp., are the only pages the extension interacts with. It also talks to our ledger server (api.hokanko.app), but without using a host permission (the server itself allows requests from the extension). It also reads hokanko.app/status.json to check service status.

4. Service status

The extension depends on how X works, and changes on X's side may temporarily stop it without notice. We provide the extension with this in mind.

Machine-readable status: https://hokanko.app/status.json

5. Contact

For bug reports, questions or inquiries about how your data is handled, please email:

support@hokanko.app

When reporting a bug, it helps a lot if you attach the text created by “Report a problem (export diagnostics)” in the panel when something goes wrong. This diagnostic file is created only when you press the button, and you can review its contents yourself before sending it.

Payments and cancellation Payments, receipts and cancellation for the paid plan are handled on the screens of Stripe's service (Link). You can also open cancellation from “Settings” → “Cancel” in the extension. Even if the extension is not working, you can sign in at link.com and cancel there.