LinkedIn Followers Exporter

Export your LinkedIn followers list as a CSV file with names, roles, and profile links.

📥 LinkedIn Followers 📋 LinkedIn Followers

How to use

  1. Drag "📥 LinkedIn Followers" or "📋 LinkedIn Followers" to your bookmarks bar.
  2. Go to your LinkedIn followers page.
  3. Scroll down to load all the followers you want to export.
  4. Click the bookmarklet in your bookmarks bar.
  5. 📥 LinkedIn Followers saves a linkedin_followers.csv file. 📋 LinkedIn Followers copies the CSV text so you can paste it.
Note: LinkedIn only renders followers visible on the page. Keep scrolling to load more before running the bookmarklet. For best results, scroll all the way to the bottom first.

Output format

"name","role","profile_url"
"Jane Doe","Senior Engineer @ Google","https://www.linkedin.com/in/janedoe"
"John Smith","Product Manager @ Meta","https://www.linkedin.com/in/johnsmith"

Source code

These bookmarklets run entirely in your browser. Here is the full unminified source so you can verify exactly what they do.

Shared extraction logic (bookmarklet.js)
function extractFollowers(doc) {
  var links = doc.querySelectorAll(
    'a[href*="miniProfileUrn"]:not([aria-hidden])'
  );

  if (!links.length) {
    return { error: "no_cards", followers: [], skipped: 0 };
  }

  var followers = [];
  var skipped = 0;

  links.forEach(function (nameEl) {
    var name = nameEl.textContent.trim();
    if (!name) {
      skipped++;
      return;
    }

    // Walk up from the <a> to find the first ancestor whose next sibling is a <div> — that sibling is the role
    var roleEl = null;
    var node = nameEl;
    while (node && node !== doc.body) {
      var sibling = node.nextElementSibling;
      if (sibling && sibling.tagName === "DIV") {
        roleEl = sibling;
        break;
      }
      node = node.parentElement;
    }

    var role = roleEl ? roleEl.textContent.trim() : "";
    var url = nameEl.href.split("?")[0];

    followers.push({ name: name, role: role, url: url });
  });

  if (!followers.length) {
    return { error: "no_data", followers: [], skipped: skipped };
  }

  return { error: null, followers: followers, skipped: skipped };
}

function toCSV(followers) {
  var rows = ['"name","role","profile_url"'];

  followers.forEach(function (f) {
    rows.push(
      '"' +
        f.name.replace(/"/g, '""') +
        '","' +
        f.role.replace(/"/g, '""') +
        '","' +
        f.url +
        '"'
    );
  });

  return rows.join("\n");
}

if (typeof module !== "undefined" && module.exports) {
  module.exports = { extractFollowers, toCSV };
}
Download action (actions/download.js)
void (function () {
  var result = extractFollowers(document);

  if (result.error === "no_cards") {
    alert("No follower cards found on this page.\nMake sure you are on the LinkedIn followers page.");
    return;
  }

  if (result.error === "no_data") {
    alert("Found cards but could not extract any data.\nLinkedIn may have changed their page structure.");
    return;
  }

  if (result.skipped > 0) {
    alert("Exported " + result.followers.length + " follower(s).\n" + result.skipped + " card(s) were skipped (could not find a profile link).");
  }

  var csv = toCSV(result.followers);
  var blob = new Blob([csv], { type: "text/csv" });
  var a = document.createElement("a");
  a.href = URL.createObjectURL(blob);
  a.download = "linkedin_followers.csv";
  a.click();
})();
Clipboard action (actions/clipboard.js)
void (function () {
  var result = extractFollowers(document);

  if (result.error === "no_cards") {
    alert("No follower cards found on this page.\nMake sure you are on the LinkedIn followers page.");
    return;
  }

  if (result.error === "no_data") {
    alert("Found cards but could not extract any data.\nLinkedIn may have changed their page structure.");
    return;
  }

  if (result.skipped > 0) {
    alert("Exported " + result.followers.length + " follower(s).\n" + result.skipped + " card(s) were skipped (could not find a profile link).");
  }

  var csv = toCSV(result.followers);
  navigator.clipboard.writeText(csv).then(function () {
    alert("Copied " + result.followers.length + " follower(s) to clipboard.");
  });
})();