Exploring Grindr's Photo Cache

Noah Petherbridge
Posted by Noah Petherbridge on Thursday, April 03 2014 @ 06:21:03 PM
A long time ago, the Grindr for Android app used to store its photo cache on your SD card, but lately they hid them away in the app's private space to make them slightly more difficult to get to. I decided to go exploring using Root Browser and see what I could find out.

When I say "photo cache" I mean the place where Grindr downloads pictures locally so that it doesn't need to keep redownloading everyone's pictures all the time and consuming a lot of unnecessary bandwidth. Grindr caches both profile pictures and pictures received over chat messages. They both go into the same place. So if you have access to that place, you can get high resolution copies of all pictures received over chat and have them on your PC. :)

First of all, you'll need a rooted Android device for this, because the Android OS normally doesn't allow apps to get into each other's private data folders. The Root Browser app is a file browser that's root-aware (so it will prompt for root permission when you attempt to open a folder that ordinarily you can't open without root).

So, without further ado, Grindr's photo cache is located at /data/data/com.grindrapp.android/cache/picasso-cache/. This folder may contain a lot of files, mine had 3,458 and so Root Browser took a while to load that folder. You can copy it somewhere under /mnt/sdcard and then get to your files from a PC that way. Make sure the files are no longer owned by "root" when put in the SD card part, or you may run into issues when accessing them from your PC.

Most of the files in this folder have hexadecimal names that appear to be hashes of some sort, and the names usually come in pairs, one with a ".0" file extension and the other with a ".1", for example one I found on my phone was 4e21d675447678d0493bc8cb41a56e8d.0.

The ".0" file is a plain text file, and most of the ".1" files are the JPEG images. I use Linux, and my file browser automatically identified the types of all the files and showed thumbnail images for all the ".1" files. So, most of the time if you rename one of the ".1" files to have a ".jpg" extension you can see the images under Windows.

Some of the .1 files aren't images though. Some are more text files, and I peeked inside one to see what it was:

$ cat c1749deee81d4fece16d836e177c5852.1
[{"messageId":16970,"title":"Calling All DJs & Bartenders","body":"Are you one of the sexiest DJs or bartenders and able to work a paid event on the afternoon of April 27th in Palm Springs? If so, send us your information and a link to your website to palmsprings@grindr.com or simply tap 'More' to email us directly. ","actionTitle":"More", "dismissTitle":null, "expirationDate":1396853940000, "url":"mailto:palmsprings@grindr.com"}]

These appear to be the broadcasted pop-up messages shown in the app sometimes.

Now, the other interesting files are the ones with the ".0" extensions. These appear to be debug information, and they're basically the full HTTP request dump used to download the ".1" file. Here's what the one looked like for my profile picture (in case the Grindr CDN link stops working and you're curious, it's this picture):

$ cat 4e21d675447678d0493bc8cb41a56e8d.0
HTTP/1.1 200 OK
Accept-Ranges: bytes
Content-Length: 72057
Content-Type: image/jpg
Date: Fri, 04 Apr 2014 20:09:05 GMT
Etag: "98af07f8697f854734874296a90c640f"
Last-Modified: Sat, 01 Mar 2014 22:05:22 GMT
Server: ECS (lax/2851)
x-amz-id-2: [REDACTED]
x-amz-request-id: [REDACTED]
X-Android-Received-Millis: 1396642144430
X-Android-Response-Source: CONDITIONAL_CACHE 200
X-Android-Selected-Transport: http/1.1
X-Android-Sent-Millis: 1396642144347
X-Cache: HIT
I edited-out the "x-amz" headers because I'm not sure how secret those are supposed to be.

When browsing through my cache folder I also saw some pictures that weren't profile pics, but were sent over chat messages. These always seem to be the full resolution of the original pic sent, i.e. not thumbnails or anything. The ".0" file looks the same as for a profile picture, except the URL downloaded begins with "http://cdns.grindr.com:80/grindr/chat/" and the server headers respond with a "Content-Type: binary/octet-stream" (which causes a web browser to download the picture to disk instead of displaying it in the browser).

Some of the ".1" files are actually empty (0 bytes), and their .0 files indicate that these are the ad banners (requesting a URL from googleads.g.doubleclick.net). So it looks like whatever system in Grindr is responsible for downloading pictures also sorta deals with downloading ad banners, except it doesn't actually save the banner into the cache folder.

The last somewhat not-very-interesting file in the cache folder is called "journal", and it's a text file. By reading the first couple lines, it appears to be part of libcore.io.DiskLruCache, a bit of Java code that provides a rotating offline cache. This probably means that, if Grindr's cache folder fills up, it will automatically remove old files to make room for new ones, so it can keep its overall disk usage under control automatically. The journal file appears to list the hash names of all the other files in the folder, along with words like "CLEAN", "DIRTY", and "REMOVE".


[ Blog ]


There are 19 comments on this page.

Posted on Sunday, April 13 2014 @ 08:03:27 AM by Josh.

So i guess there would be no way to transfer app data between devices unless both were rooted? It would be nice to transfer chat history and pics- Grindr leaves much to be desired :(

Posted on Friday, May 02 2014 @ 01:51:21 AM by Trini Cruz.

I used Root Browser on my rooted HTC Droid Incredible 2 and Droid Explorer on my Windows 8 PC and can browse to /data/data/com.grindrapp.android/cache, but this directory is empty (4K). There is, therefore, no picasso_cache directory to be found anywhere. Where else can the grindr cache be?

Posted on Tuesday, July 15 2014 @ 07:56:01 PM by justin.

You may be able to transfer among devices. I had to restore my phone (I forget why). So I did a system backup and back then I was able to find the picture files from the sim card (even some pics from users that had blocked me). I reset my phone and connected it to my computer and stopped the resync. I moved the files back over and my chat history was maintained ( I did however lose a few messages that had been sent to me in the interim. It was the single most tech savy thing I ever did but I don't think it was that demanding.

Posted on Friday, July 25 2014 @ 10:08:17 PM by Trini Cruz.

Justin, where exactly did you "find the picture files"?

Posted on Sunday, August 24 2014 @ 12:59:31 AM by Benji.

i made like Trini Cruz and then just copy that files into new folder (on SD card). then connect phone to my PC and rename .1 to .jpg and then works:)

Posted on Sunday, August 24 2014 @ 09:24:15 PM by Trini Cruz .

@Benji huh?

Posted on Sunday, September 21 2014 @ 01:36:25 PM by Rob.

If you look at the images under windows, they need to have a .jpg extension so windows knows they are images. When you copy the files from the Android device, the pics will have a name like d8dfd4eb2abd9c4d29653587cc87912b393bac97.1, you need to get rid of that .1 and change it to a .jpg like this:
d8dfd4eb2abd9c4d29653587cc87912b393bac97.jpg then you can view it under windows....

Posted on Tuesday, October 07 2014 @ 02:07:44 PM by alan.

On windows command promt you can use ren *.1 *.jpg

Posted on Saturday, November 01 2014 @ 08:04:17 PM by David.

I'm curious. What happens to EXIF data on Grindr? Is it there to be found?

Posted on Wednesday, November 26 2014 @ 12:56:48 AM by noname.

You can use TitaniumBackup (require root) or Carbon (also for non root) to backup the messages. It's a painful process though, since Grindr has like 60k+ files in its private folders.

Posted on Friday, December 19 2014 @ 01:36:14 PM by Guest.

After hours of troubleshooting and trying various methods, I'm happy to say I was able to transfer all of my 400+ Grindr chat conversations including my photos using the Helium app! So far, I am using it on my new phone with no issues, and all messages and photos are restored including the photos sent by others to me.

I brought over my Grindr .apk from my old phone using a regular app file backup program (I prefer a much older version of the app, NOT the most current one) and then I used Helium to transfer the app data only. So far no issues!

Thanks for the above information! This page was really helpful!

Posted on Monday, December 22 2014 @ 08:31:46 AM by RoooBW.

Dat Pokémon belt doe ;)

Posted on Sunday, January 25 2015 @ 12:15:12 PM by Dave.

Helium has never worked with Grindr for me, but it woks for every other app. Any version of Grindr always fails to start after a Helium restore :/

And the pictures thing detailed on this page doesn't work of me either. Strange.

Posted on Saturday, January 31 2015 @ 04:01:26 PM by Nairo.

With Android 4.0.4, CyanogenMod 9, a ROOTED galaxy S2 (GT-I9100) and Grindr 2.1.3, the folder /data/data/com.grindrapp.android/cache/ seems to be empty, even if I change the permissions and the ownership of the folder with Root Browser.

The only solution that remains is to sniff the traffic and filter every URL like http://cdns.grindr.com/images/profile/1024x1024/*

Posted on Saturday, March 21 2015 @ 11:11:42 AM by Charles.

Hey, this article is amazing. Do you know where chat logs are saved? A guy sent me some pictures and he blocked me so I lost the chat window I had with him; I want the pictures back lol

Posted on Tuesday, December 08 2015 @ 03:29:47 PM by Just Passing.

Hi, thanks for this, however, despite having over 4000 files in the cache, there only seems to only be pictures of the most recent guys that have showed up on Grindr (a large number, yes, but only the recent guys)! Pictures from past chats do not appear in the cache!

I've gone back to make sure, and I can still access the chat I had with these people, as well as can still see the pictures they sent me (so they must be SOMEWHERE). I don't care much about keeping profile pics of a bunch of guys I've never met. I just want to download the pics of the guys I've actually spoken to or met.

Any more help would be quite appreciated. Thanks!

Posted on Monday, April 04 2016 @ 11:40:42 PM by Gandel.

And apple? I need to recovery a chat very importante :(

Posted on Monday, December 26 2016 @ 06:37:03 AM by muneeb.

hi there. I am in need of some serious assistants.
chatted to a profile on grindr. once we concluded i deleted the chat , we met the sme night and upon leaving the profiler asks for his service fees. " eventually I called the Law enforcement to have him removed from the venue as i informed him and the officers that no discussion occurred of service fees. this destroyed discretion. the law enforcement requested I provide them with chat history so that he can be charged for extortion + 2 other charges.
i urgently need some assistants in this regard.

Posted on Monday, December 26 2016 @ 06:38:15 AM by muneeb.

hi there. I am in need of some serious assistants.
chatted to a profile on grindr app using android. once we concluded i deleted the chat , we met the sme night and upon leaving the profiler asks for his service fees. " eventually I called the Law enforcement to have him removed from the venue as i informed him and the officers that no discussion occurred of service fees. this destroyed discretion. the law enforcement requested I provide them with chat history so that he can be charged for extortion + 2 other charges.
i urgently need some assistants in this regard.

Add a Comment

Your name:
Your Email:
Comments can be formatted with Markdown, and you can use
emoticons in your comment.

If you can see this, don't touch the following fields.

Web Tools

Fan Club