Archive
Feeds Sign In
Archive Feeds Sign In
Article

Freeing Myself from Facebook

Ever since my discovery of the IndieWeb movement, I've wanted to free myself from Facebook (and Instagram) and their brand of surveillance capitalism. I want to own my own data, and be in control of how it is shared, and I don't want it to be used for advertising.

I've had this incarnation of a personal website for a few years, and have mostly been following the POSSE publishing model, publishing most forms of content on my website, and then automatically (or manually) syndicating that content to silos like Facebook and Twitter. But, much of my content still remains trapped inside of Facebook and Instagram.

Until now.

As of March 4, 2018, I've pulled the vast majority of my Facebook content into my website, and all of my Instagram photos into my website, paving the way for me to delete myself from Facebook (and potentially Instagram) by the end of 2018. What follows is a high-level overview of how I made the move.

Facebook

Exporting Data from Facebook

While Facebook does offer an export feature, its extremely limited, only includes very low resolution versions of your photos, and is generally very difficult to process programmatically. After some research, I discovered the excellent fb-export project on GitHub. Once installed, this tool will dump a huge amount (though, not quite all) of your Facebook data into machine-readable JSON files.

Since my website is compatible with the Micropub publishing standard, I then needed to convert this Facebook-native JSON data into microformats2 formatted JSON. Enter granary, an amazing swiss-army knife of IndieWeb by Ryan Barrett. Using granary, I whipped up a quick script that transforms the exported data into native microformats2 formatted JSON:

https://gist.github.com/cleverdevil/f33530706d6e8dacd13a8bd8e8c15dba

Publishing Liberated Data

At this point, I had a directory full of data ready to publish. Sort of. Unfortunately, not all of the data is easily translatable, or even desirable, to publish to my website. As a result, I created another script that let me, on a case by case basis, publish a piece of content, choose to skip it entirely, or save it to deal with later.

https://gist.github.com/cleverdevil/c857695bb2de1e46686d720cad9d124c

After running this script, I had a significant amount of my data copied from Facebook to my website. Huzzah!

Dealing with Photo Albums

Facebook has a "photo albums" feature, and I definitely wanted to get those memories onto my website. Again, I wrote a script that processes the exported data, and selectively allows me to upload all of the photos in an album to my website via Micropub, and then drops microformats2 JSON out that I could publish later.

https://gist.github.com/cleverdevil/d9c08ddc6eb2da0d060a5f6fe87ddf64

Once I finished processing and uploading all of the photos for the albums I wished to copy over, I ran a simple utility script I keep around to publish all of the albums as new posts to my website.

Here are some of the results:

Notice, one of these comes all the way back from 2009!

Almost There

There are still quite a few photos and other types of posts that I haven't yet been able to figure out how to migrate. Notably, Facebook has strange special albums such as "iOS Uploads," "Mobile Uploads," and "iPhoto Uploads" that represent how the photos were uploaded, not so much a group of related photos. Unfortunately, the data contained in the export produced by fb-export isn't quite adequate to deal with these yet.

Still, I am quite pleased with my progress so far. Time to move on to Instagram!

Instagram

Instagram has been slowly deteriorating as a service for years, so much so that I decided to completely stop publishing to Instagram earlier this year. It turns out, dealing with Instagram is a lot easier than Facebook when it comes to liberating your data.

Downloading My Data

After some research, I found instaLooter on GitHub, which allowed me to quickly export every single photo in its original resolution, along with nearly every bit of data I needed... except the photo captions. I ran instaLooter, and embedded the unique identifier in the filenames (which instaLooter refers to as the "code').

Getting Metadata and Publishing

I wrote a script that used granary to lookup the photo metadata and publish to my website via Micropub:

https://gist.github.com/cleverdevil/5bb767fd152de9b4c246d01086e91399

Note, I used the non-JSON form of Micropub in this case, because Known's Micropub implementation doesn't properly handle JSON for photos yet.

Conclusions

It turns out, that with a little knowhow, and a lot of persistence, you can liberate much of your data from Facebook and Instagram. I feel well on target to my goal of leaving Facebook (and maybe Instagram) entirely.

Comments (32)

alans
alans via Micro.blog

@cleverdevil Nice work! I pretty much stopped using Facebook about a year ago, but have some lingering activity on Instagram. This is a nice push to finish cutting all those cables. (Sorry, replied to the wrong post the first time... want to keep this post for reference.)

Rodney Gurdal
Rodney Gurdal via www.facebook.com

Technically impressive, but I always hate to see friends leave Facebook.

(I've never understood the point of Instagram.)

Jonathan LaCour
Jonathan LaCour via www.facebook.com

I’m hoping that it becomes easier to follow friends using something other than Facebook.

You can always follow me on my website 😀

Rodney Gurdal
Rodney Gurdal via www.facebook.com

Is there something you can envision replacing FB, with a more acceptable business model that doesn't really on advertising?

Jonathan LaCour
Jonathan LaCour via www.facebook.com

Rodney Gurdal I think it’s inevitable. I’m currently enjoying Micro.blog as an alternative, and working on a project called “Together” that gives a very nice experience similar to Facebook, Instagram, and Twitter in a decentralized way.

For people who aren’t hyper technical, we are at least a year, maybe two (three?) away from it being viable.

Al LaCour
Al LaCour via www.facebook.com

Impressive work Jonathan LaCour!

Rodney Gurdal
Rodney Gurdal via www.facebook.com

😢

Rodney Gurdal
Rodney Gurdal via www.facebook.com

What's its business model?

Jonathan LaCour
Jonathan LaCour via www.facebook.com

Rodney Gurdal content is placed on your own website. You only pay for having a website. Everything is decentralized. Together is free and open source.

Micro.blog is the same concept, except it offers people who don’t have a website an easy path to getting one, and they pay a nominal monthly fee to host their website.

Rodney Gurdal
Rodney Gurdal via www.facebook.com

Hmm. Hard to imagine paid replacing free for regular people. And you have to go browse one friend's website after another? No more just browsing a feed? Sounds exhausting.

Peter Choi
Peter Choi via www.facebook.com

I would love to do the same; just so much work and time

Jonathan LaCour
Jonathan LaCour via www.facebook.com

Rodney Gurdal in Together, you get a feed just like on Facebook. It’s just populated with content from your friend’s websites.

Katie Van Buren Glymin
Katie Van Buren Glymin via www.facebook.com

Jonathan LaCour chat books offers a great option to print your Instagram photos and keep the date/caption/location. My kids love the books we make. I only use Instagram to create my chat books. ;-)

Ruth Ann North
Ruth Ann North via www.facebook.com

We do chatbooks with Instagram too! Helps us document our life and work in the neighborhood. I pick them up with the kids and we always enjoy looking through them .

Jonathan LaCour
Jonathan LaCour via www.facebook.com

For the curious, here is a video of what our Together project looks like: https://cleverdevil.io/s/A94HmEbBLALplpcALmAc.mov

Paula Lampert Kyrios
Paula Lampert Kyrios via www.facebook.com

Oh, no!! How will I keep up w the kids??

cleverdevil
cleverdevil via Micro.blog

@alans thanks! I’m relatively pleased with the progress 😀 Hopefully, soon I’ll figure out the other bits and pieces. Oh, and I still need to backfill Twitter.

Joe Joyce
Joe Joyce via www.facebook.com

This could get me blogging again. Is together allowing new users?

Jeremy Cherfas
Jeremy Cherfas via stream.jeremycherfas.net

Jonathan LaCour has done some great work freeing himself from Facebook and Instagram, and his post is a good starting point for others who want to do the same. So far, I confess, I have not felt the need myself. There are no photographs in either of those silos that I don't have a copy of (actually, the original, not a copy) on my desktop computer. And any text I may have place on FB is also either a copy of something here or else completely insubstantial. Heck, I'm still bringing in old blog posts to my new system by hand, very slowly, and I haven't begun to bring in old posts from a previous incarnation of this stream. Maybe it is because I was an independent blogger long before either FB or IG saw the light of day, but I have never regarded those places as worthy of original material.

Elaine LaCour
Elaine LaCour via www.facebook.com

I’ll get Papa to help me! Don’t want to miss anything ❤️

Renoir Boulanger
Renoir Boulanger via www.facebook.com

Cool setup and migration scripts, Jonathan!

Jonathan LaCour
Jonathan LaCour via www.facebook.com

Just bookmark my website in your browser! I'm also thinking of setting up an email newsletter that will automatically email content from my site on a weekly basis.

Jonathan LaCour
Jonathan LaCour via www.facebook.com

Joe Joyce Together is freely available on GitHub, and we have a hosted version available at https://alltogethernow.io, but you won't be able to use it yet unless you have a compatible website, which is really not easy to do yet for mere mortals :) We're working on it, though! That said, if you're looking to start down the path, I highly recommend https://micro.blog!

Joe Joyce
Joe Joyce via www.facebook.com

Jonathan LaCour Is Micro.blog compatible with alltogether?

Paula Lampert Kyrios
Paula Lampert Kyrios via www.facebook.com

Jonathan LaCour uh oh. You lost me at bookmark. Literally. YIkes, I know I'm old school, but I usually get past the second word.

Jonathan LaCour
Jonathan LaCour via www.facebook.com

Paula Lampert Kyrios just visit this link: https://cleverdevil.io

Paula Lampert Kyrios
Paula Lampert Kyrios via www.facebook.com

Jonathan LaCour Okay. I'll do my best.

Elaine LaCour
Elaine LaCour via www.facebook.com

Glad Papa’s retiring soon so we can see your faces up close and personal! ❤️❤️❤️

Steve Kaye
Steve Kaye via www.facebook.com

Excellent. If you turn it into a WP plug-in with a free version for XXX items and a paid version above XXX I bet you could make a nice chunk of change. #IdBeHappyToBeABeta

Christian Ashlock
Christian Ashlock via www.facebook.com

I am going to physically mail you recipe videos where the video is real fast and you can see the text and please follow my page

https://secure.gravatar.com/avatar/d00e7ca24ca1b9c853da43af229c0e0e?s=125&d=default&r=g
https://secure.gravatar.com/avatar/d00e7ca24ca1b9c853da43af229c0e0e?s=125&d=default&r=g via collect.readwriterespond.com

Jonathon, there are many posts out there arguing to get off Facebook or clean up your data, however my question has always been what to do with the data. I really like Martin Hawksey’s work associated with archiving Twitter, but I have never really come upon any process for bringing Facebook content into my own domain. I am going to explore this, even if to keep a private archive. Thanks you.

RA
Ravi Sagar via www.ravisagar.in