<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Wasil</title>
    <description>The latest articles on Forem by Wasil (@dwasil).</description>
    <link>https://forem.com/dwasil</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1979820%2F2d3dea8b-6485-4790-b7b1-8ceef2233c8a.png</url>
      <title>Forem: Wasil</title>
      <link>https://forem.com/dwasil</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/dwasil"/>
    <language>en</language>
    <item>
      <title>How to Export Chrome Bookmarks as JSON — and Why I Built a One-Click Extension for It</title>
      <dc:creator>Wasil</dc:creator>
      <pubDate>Wed, 04 Feb 2026 19:20:38 +0000</pubDate>
      <link>https://forem.com/dwasil/how-to-export-chrome-bookmarks-as-json-and-why-i-built-a-one-click-extension-for-it-17b2</link>
      <guid>https://forem.com/dwasil/how-to-export-chrome-bookmarks-as-json-and-why-i-built-a-one-click-extension-for-it-17b2</guid>
      <description>&lt;p&gt;Chrome has a built-in bookmark manager, but it only exports your bookmarks as an HTML file. If you've ever tried to parse that HTML or import it into another tool, you know it's a mess.&lt;/p&gt;

&lt;p&gt;I needed a clean JSON export — something I could back up, version control, or feed into a script. Couldn't find a simple extension that did just that without asking for a ton of permissions or requiring an account. So I built one.&lt;/p&gt;

&lt;p&gt;What it does&lt;br&gt;
Click the extension icon → get a bookmarks.json file with your entire bookmark tree. That's it.&lt;/p&gt;

&lt;p&gt;No popup, no settings, no account. Works offline. The whole extension is about 5 KB.&lt;/p&gt;

&lt;p&gt;Permissions&lt;br&gt;
Only two:&lt;/p&gt;

&lt;p&gt;bookmarks — to read your bookmark tree&lt;br&gt;
downloads — to trigger the file save dialog&lt;br&gt;
Nothing else. No tabs, no history, no "read all data on all websites."&lt;/p&gt;

&lt;p&gt;The code&lt;br&gt;
The core logic is tiny:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;chrome.action.onClicked.addListener(exportBookmarks);

async function exportBookmarks() {
  const bookmarks = await chrome.bookmarks.getTree();
  const blob = new Blob([JSON.stringify(bookmarks, null, 2)], { type: 'application/json' });
  const url = URL.createObjectURL(blob);

  chrome.downloads.download({
    url,
    filename: 'bookmarks.json',
    saveAs: true
  });
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's the essence of it. Uses Manifest V3, the chrome.bookmarks API to get the tree, and chrome.downloads to save the file.&lt;/p&gt;

&lt;p&gt;When it's useful&lt;br&gt;
Backup — before a browser reset or OS reinstall&lt;br&gt;
Migration — moving from Chrome to Firefox, Brave, or another browser&lt;br&gt;
Automation — feeding your bookmarks into a script or database&lt;br&gt;
Sharing — sending your curated links to someone else&lt;br&gt;
Archiving — periodic snapshots of your saved links&lt;/p&gt;

&lt;p&gt;Try it&lt;br&gt;
&lt;a href="https://chromewebstore.google.com/detail/export-chrome-bookmarks/flamnidjmioccehiedfgaokilobcljfg" rel="noopener noreferrer"&gt;Chrome Web Store&lt;/a&gt;&lt;br&gt;
&lt;a href="https://github.com/dwasil/export_chrome_bookmarks" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>productivity</category>
      <category>opensource</category>
      <category>extensions</category>
    </item>
  </channel>
</rss>
