Sunday, September 4, 2011

DropboxDiff Chrome Extension

2014-01-05 update (version - Inline diff implemented.
2014-01-04 update (version - Account for "sjid" parameter in any position.  Distinguish Diff button better.
2013-06-23 update (version - Switch from background page to event page.
2013-01-05 update (version - Fixed to support 64-bit linux.  Added a Test button to the options page.

I've written DropboxDiff, a Chrome extension which allows you to compare different versions of text files you have on Dropbox.  It basically triggers a diff tool you have installed on your local machine already, which you must configure.
  1. On the Dropbox website, browse to the "Previous versions" page of any text file.
  2. A "Diff" column has been added where you can select which two versions to compare.
  3. Click the "Diff" button.
    1. If a diff tool is not yet configured, the options page opens where you can specify one. If you don't have one installed already, I recommend kdiff3. The setting is accessible from Tools > Extensions > DropboxDiff > Options.
    2. Otherwise, your diff tool should open.
This should run on Windows, Mac, and Linux.  Please let me know if any issues come up.


Robbie said...

Cool tool dude. Would be cool to see it as a firefox extension :p

Vic said...

@Robbie - will make a note of it; thanks for the comment.

will said...

Really nice work on the DropboxDiff Chrome Extension - it's so cool and a real time saver. I can't tell you how many times I've been downloading files from the dropbox website into a temporary folder, then running diffmerge on them. (btw this works great with diffmerge too). So thanks for an excellent extension!

Anonymous said...


Anonymous said...

It's broken on the new site... :(

Vic said...

@Anonymous - I was afraid of that. I'm still waiting for my Dropbox account to be upgraded; I'm still seeing the old version. I'll get a fix out as soon as I can.

Unknown said...

Hey Vic, awesome little tool. Eagerly awaiting the fix for the new site...


Anonymous said...

@Vic - try replacing the with I know that since the upgrade this is the url i'm redirected to.

Vic said...

@Anonymous, yes I tried that but it still redirects.

I contacted Dropbox Support, and this is what they told me:

"We are currently rolling out the new redesign of the Dropbox gradually and don't offer the ability to upgrade user accounts to the new version. We should be upgrading most accounts in the very near future."

If you want to help me out, could you send me the HTML source of one of your "previous versions" pages with DropboxDiff turned off? Then I'd know how to fix it.

Vic said...

Well it looks like my account finally updated to the latest version of the website. But the weird thing is, DropboxDiff still seems to work for me.

Let me know if you are still seeing issues or not. If so, please email me the source of one of your "Previous versions" pages and I'll take a look.

Anonymous said...

Sounds awesome — but do you have any plans for a Safari version?

Vic said...

Re: Safari, no immediate plans, but I will look into it at some point. There is a chance it will be a better platform than Firefox, if its sandboxing is similar to Chrome's.

Anonymous said...

The Chinese characters become Garbled when I use dropboxdiff. but when I use kdiff3 along with the same files downloaded from dropbox, it works.

please email me if you know the reason. Thank you in advance.

Unknown said...
This comment has been removed by the author.
Nathan @Questor said...

Does this work on the lastest site?

because I'm getting an error

"Uncaught TypeError: Cannot read property 'cellIndex' of undefined chrome-extension://aefdkgcdokdiaoppobphjogcilaaakka/content.js:143
(anonymous function) chrome-extension://aefdkgcdokdiaoppobphjogcilaaakka/content.js:143
(anonymous function) chrome-extension://aefdkgcdokdiaoppobphjogcilaaakka/content.js:189

I can provide the full HTML of the page if you wish?

Vic said...

@Nathan - thanks for the heads up. Version should fix this. Please let me know if it doesn't work for you.

Victor Shih said...

@Nathan, whoops, forget Version should work on Windows.

Nathan @Questor said...

It's working brilliantly, thank you soo much.


Jon said...

have you considered integrating it with an in-browser diff tool like this?

Victor Shih said...

@Jon, yes, it's in the queue. So far I was considering but I'll take a look at Pretty-Diff too; thanks for the input.

Sven said...

Victor, great tool, I've used it for a few weeks now and it's been very helpful. I've now got windows 8 however and "This application is not supported on this computer. Installation has been disabled" at the chrome web store.
Search reveals something about using Tincr and it no longer available from win8?

Anyway, just a heads up.

Victor Shih said...

@Sven, thanks! Yes, it appears this type of extension is not allowed in Windows 8, but supposedly you can work around it by running Chrome in compatibility mode for Windows 7. Something like: right-click the Chrome shortcut > Properties > Compatibility > "Run this program in compatibility mode for:". Reference is here (which you probably already saw).

An in-browser diff tool is on my list of things to do, but I haven't been able to get around to it...

bruha said...

Test run from extension options page is ok. But got error when press Diff button on Dropbox site:

Victor Shih said...

@bruha, I'll look into it when I get the chance, probably this weekend.

Victor Shih said...

@bruha, I do get that error once in a while; it seems that the event page gets deactivated after a period of inactivity. But if I try clicking Diff a second time, it usually works.

I assume you are on the latest version of Chrome; what OS are you on? I tested on the latest version of Chrome on Windows 7, Mac 10.6, and Ubuntu 12.04.1.

bruha said...

I tried today and it works just fine. Maybe quistion was in browser restart. My OS is Win7x64 and Chrome 29.0.1547.57 m

Victor Shih said...

Glad to hear, and thanks for the follow-up!

Rüdiger Plantiko said...


thank you - a great and useful tool!

The more I am unhappy that it ceases to work after my latest system, Chrome and dropbox update (this morning) in ubuntu 12.04.

The "Diff" button disappeared completely.

I am not 100% sure whether the following console error is the cause of the problem, but it looks like a good hit:

The JavaScript content.js breaks at line 121

var sjid = REV_RE.exec(content)[2]

Here, REV_RE is the expression


to be applied to the HTML of the cells of the current line, containing the hyperlink to the version with the href


As you see, this doesn't match, since the sjid now is the first query parameter, but the regex asks for a preceding &.

Suggestion: Simplify REV_RE to

REV_RE = /sjid=([0-9]+)/

(and grab the first submatch then, of course:

var sjid = REV_RE.exec(content)[1]

I have no idea why the order of the arguments in the version URL changed. But clearly it is allowed to change the order of query parameters in any way.


Victor Shih said...

@Rüdiger, thanks for the detailed bug report! I just published version which should address this issue; please let me know if it doesn't.

Rüdiger Plantiko said...

Victor, thanks for the quick update. Yes, it works again for me! (You were more "cautious" with the RegExp than I suggested... OK, it's your code after all :-) ). Regards, Rüdiger

Anonymous said...

Hi Victor, thanks for making this extension. It has been very helpful. Lately I have been getting an error:

DropboxDiff failed with
The JavaScript console of DropboxDiff's "background.html" page may have more information.

I am wondering if you can take a look at this. Thanks!

Victor Shih said...

@Anonymous, it looks like NPAPI has finally been completely deprecated by Chrome as of September 2015: I will need to look into the alternatives available at some point. Sorry!