Skip to Content

How to Access NSFW Content on Tumblr After the "Apocalypse"

When Tumblr’s new policy on adult content went into effect last December, they announced that they would only hide, not delete pre-existing adult content. So there are still ways to access it, at least for now.

A bit of a warning: Much of this post is technical in nature. I’ll try to provide guidance if you aren’t as knowledgeable in this area, but you’ll need some prior knowledge to take full advantage of what I’m discussing here.

Information is accurate as of the time of writing, but things may change. (For example, Tumblr may actually start deleting adult content in the future.) I’ll try to keep this updated.

The first and simplest method is through the dashboard. You can still see posts from NSFW blogs you follow, and you can see your own posts in “dashboard view.” (To go there, either click the person icon in the top-right corner and find your blog under “Tumblrs,” or go to https://tumblr.com/blog/[your blog name] for [your blog name].tumblr.com.)

If you want to get to a specific post (by ID), just go to the edit page for it, which is https://tumblr.com/edit/[post ID].

The dashboard isn’t the easiest way to find previous posts from other blogs. If you want to make your blog more accessible, you can try looking into other sites that can import your Tumblr blog. I went my own way so I can’t make any specific recommendations.

Tumblr also has its own export feature that will give you a nearly complete archive of your blog. You can find it in your blog settings: At the very bottom there should be a button that says “Export [blog name].”

This is good for pictures because it gives you the original resolution, which could be even higher than the highest resolution that Tumblr provides publicly on blogs (usually 1280 pixels wide). You’ll also get a basic HTML page for each post.

Pictures and other media are in a convenient media folder, and are named [post ID]_[sequence starting at zero].[file extension]. For example, the first picture for post ID 181168162382 would be something like 181168162382_0.png. Some posts may have a media file without a sequence number (like 181168162382.gif), and I can’t figure out why.

If you use any sort of tool to transfer your blog elsewhere, double-check that any additional remarks on reblogged ask posts are present. That export feature and the API I’ll describe later do not include them. You may have to add them in manually as I did. (That edit-page trick really came in handy!)

What if you really want to get to a post on someone else’s blog, and they haven’t moved it somewhere else? Well, there’s one last thing that will work: Tumblr’s old API.

If you have the technical knowledge, you can just read the documentation and stop here. The one major caveat is that queries using the ID don’t work for NSFW blogs.

For everyone else, here’s what’s going on: An API is a way to access data in a format that programs can process easily. Sure, a Web page is HTML, which is a format that a program (your Web browser) can process, but a lot of it is still for people. A program doesn’t need buttons or fancy formatting like you might find on a Web page; it just needs the data.

The way to get to the API is by going to http://[blog name].tumblr.com/api/read. This will give you the first 20 posts in XML format. If you’ve ever worked with HTML before, the oversimplified version is that XML is like HTML except with different tags. Even if this format is completely new to you, you might be able to guess what each piece of the data means. You can use this to grab a link or a picture (image URLs still work).

Here’s what else you can do:

  • To get more posts at once, go to http://[blog name].tumblr.com/api/read?num=50 (50 is the maximum).
  • To get older posts, use http://[blog name].tumblr.com/api/read?start=20 (to skip 20 posts in this example).
  • To browse posts quickly, combine the two above, like http://[blog name].tumblr.com/api/read?num=50&start=100.
  • To find posts with a tag, go to http://[blog name].tumblr.com/api/read?tagged=some tag (combine like so: http://[blog name].tumblr.com/api/read?tagged=some tag&num=50&start=100).

There’s supposed to be a feature to get a single post using its ID, which looks like http://[blog name].tumblr.com/api/read?id=[post ID], but like I said before this doesn’t work for NSFW blogs. This would be extremely convenient if you have a regular link to a Tumblr post (because you have the post ID already), but I guess it’s too convenient so they decided to disable it.