Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time


Export (most) of your Facebook data using Node.js and the Graph API.


Crowbarring your data out of Facebook is no easy feat — to get everything out you'll need a combination of Graph API wrangling and old-fashioned manual labor — but it's not impossible.

The purpose of this repository is to give you some tools to make the whole process a bit smoother.

Why not use Facebook's own "Download your data"

Facebook offers a way to download your data that sounds comprehensive enough, and I encourage you to first download that data and see if the amount of information and its quality are sufficient for your purposes — if so, you're in luck.

If, however, you'd like a more structured dataset and images in a better resolution, the tools below can help you. Here's what's included so far:

Data Notes
Posts Things you posted on your timeline.
Timeline photos Photos attached to timeline posts 1
Albums Your photo albums. 1
Photos you're tagged in A subset of "Pictures of you", i.e. photos in which other people / Pages have tagged you 2


  • 1 Videos are not fetched at the moment!
  • 2 Not all "Pictures of you" are accessible through the Graph API, you'll need to manually download the other photos.

A word of caution

Although I've checked against my own account for a modicum of accuracy in the exported data, these scripts are no guarantee that your content is comprehensively and accurately exported, so exercise caution if you plan to delete the content afterwards.



You'll need Node.js, NPM (it comes with Node) and, optionally, Yarn (which these instructions use throughout).

Since I wrote the scripts with ES6 syntax for its brevity, this only probably works with more recent versions of Node. (I'm currently using v8.9.0).

Setting things up

  1. Clone this repository to your computer
  2. Run yarn (or npm install) in your project's folder to install all the necessary dependencies
  3. Rename the sample.config.json file to config.json (you can do that in the terminal with mv sample.config.json config.json) and put in the access token you get from the Facebook Graph API Explorer.

(Since the token allows anyone to access your data through the API, we're not putting the actual config.json on GitHub.)

Getting an access token

  1. Go to the Facebook Graph API Explorer page.
  2. Click on Get access token and choose Get User Access token.
  3. Check all the permissions in the first set ("User Access Permissions"), and follow the approval screens to generate the token.
  4. Put the access token in your config.json.


Tool Command Notes
Export your Facebook posts node tools/posts.js This exports your Facebook posts to JSON in export/json/posts.json. You can look in the source code to see which fields are currently fetched, and add your own to suit your needs. See this page for available fields.
Export timeline photos node tools/photos.js The photos are downloaded in the export/photos folder. Note that you'll need to have run the post exporter beforehand, because the script uses the posts.json as a basis.
Generate a HTML timeline node tools/timeline.js This generates a HTML timeline based on posts.json and the downloaded photos, so you'll need to have run the two tools above for it to work.
Export your albums node tools/albums.js Fetches the images from your Facebook albums into the export/albums folder, and stores the album info in the export/json/albums.json file.


Export (most) of your Facebook data using Node.js and the Graph API.








No releases published


No packages published