Month: February 2014

Mojito Chrome Extension

Edit 3/21: Everything in the extension should be working fine again. Mint actually released a new version today, and the extension didn’t break. Yay!

Edit 3/19: I’m aware that the disable timeout functionality is not working at the moment. Apparently Mint didn’t like that people were circumventing their draconian timeout policies and changed the trigger for resetting the idle timer. I’m testing a workaround right now

Edit 3/17: It looks like has changed their markup. An updated extension version should be up shortly to address this.

Edit 3/16: Now with the ability to disable Mint timeout.  See the Chrome Web Store for detailed version history here

I built a Chrome extension that allows you to customize the sort order of accounts, among other tweaks.

The extension is very easy to use. Once it is running a new icon will appear next to each account section. Click on it to alternate sorting between ascending/descending/alphabetical. By default when first loads it defaults to descending order (like it used to work before Mint regression).


I appreciate your feedback!



Hide credit card accounts with zero balances

If you are like me you started using Mint because you have multiple credit card accounts.  I have more credit cards than fingers, let’s leave it at that 🙂

The majority of the time most of those cards carry a zero balance, but we do use them all from time to time (think store credit cards). I’m aware that Mint allows you to hide individual accounts, but then again this makes detecting fraudulent activity more difficult.

The following code removes accounts with zero balance from Accounts Overview. One important exception is that I don’t hide accounts in ‘error’ state, but that can be easily changed.  You can run this code from the Javascript console (F12).

YUI().use("*",function(e){e.all("li#moduleAccounts-credit li.accounts-data-li").each(function(e){if(!e.hasClass("error")){var"span.balance").get("text");if(t=="$0.00"){e.remove(true)}}})})


//copyright 2014 vandre
YUI().use('*', function (Y) {
    Y.all('li#moduleAccounts-credit li.accounts-data-li').each(
     function (n) {
         if (!n.hasClass('error')) {
             var bal ="span.balance").get('text');
             if (bal == "$0.00") { n.remove(true); }

Disable Mint timeout redirect

This is going to be a short post. One of my pet-peeves with the desktop version of Mint is that it logs you off if it doesn’t detect activity for 10 minutes or so. This is a bit ludicrous since the mobile version (iOS/Android) is always logged-in, but I digress…

Many times I’ve been copying data from Mint to Excel or matching transaction with paper statements to have Mint timeout on me. This is especially aggravating when you have applied filters to the transaction grid, as those are lost. After some more research today I found a partial solution (refer to my first post for details about how run this code).


What this bookmarlet does is reset the session timer every 30 seconds or so, effectively disabling the timeout redirect. Unfortunately there are still some session variables that expire after some time, so for example if you try switching from “Overview’ to “Transactions” after 1 hour of inactivity you will still get kicked out.

Happy Minting!

Buy me a beer if you like this :)

Order Accounts by Balance

Edit 4/8:  The steps below are now obsolete. I have created a Chrome  Extension that does the account sorting automatically and adds a lot more functionality to Mint. See this post for more details. Original post follows:

After broke the account sorting functionality for the second time in less than a year I decided to take matters into my own hands.  I wrote a small Javascript snippet that reorders accounts by balance on the fly. The neat thing is that everything is done client-side (I’m simply reordering the page markup), so your account information is safe. I developed/tested this using Chrome but it also works in Firefox. If you like this post consider making a donation .


  1. On your computer login to as you usually do.
  2. Once you are logged in your URL should be something like
  3. Press F12, this should bring up the Javascript Console.
  4. Copy and paste the following text snippet  and hit enter:
javascript:(YUI().use("*",function(e){e.all("li.moduleAccount").each(function(e,t,n){var r=[];e.all("li.accounts-data-li").each(function(e){r.push(e.cloneNode(true))});r.sort(function(e,t){var"span.balance").get("text");var"span.balance").get("text");var i=Number(n.replace(/[^-0-9\.]+/g,""));var s=Number(r.replace(/[^-0-9\.]+/g,""));var o=i-s;return o});e.all("li.accounts-data-li").each(function(e){var t=r.pop().get("innerHTML");e.set("innerHTML",t)})})}))

The account balances should be reordered now. You can close the console again by pressing F12.

For reference below are two screenshots for Chrome/Firefox showing you where you need to paste this code. (Click on the thumbnails to see a larger image)



Other option is to create a shortcut on your bookmarks bar. Give it any title and on the URL address just paste the code there. Then you would click on your bookmarklet when you want to fix the account balance order. Edit:  If you don’t like having the Bookmarks bar visible here’s a good explanation about how to create a bookmarklet in Chrome for quick access. If you are a Firefox user you could setup a smart bookmark or creating a hotkey shortcut.

I’m also looking into possibly converting this script into a Chrome Extension / GreaseMonkey user script so that changes are applied automatically every time you visit the website.

Feel free to post a comment if you have any questions or suggestions. Below is an unminified/readable version of the code.

YUI().use('*', function (Y) {
     function (node, idx, lst) {
         var arr = [];
         //For each Account Section iterate through all the different accounts. 
         node.all("li.accounts-data-li").each(function (n) { arr.push(n.cloneNode(true)) });
         arr.sort(function (a, b) {
             //locate the HTML element that holds the balance for an account
             var currencyA ="span.balance").get('text');
             var currencyB ="span.balance").get('text');
             //Convert the balance to number that javascript can understand
             var keyA = Number(currencyA.replace(/[^-0-9\.]+/g, ""));
             var keyB = Number(currencyB.replace(/[^-0-9\.]+/g, ""));
             var result = keyA - keyB;
             return result;

         //Replace markup with sorted accounts
         node.all("li.accounts-data-li").each(function (n) {
             var ordered = arr.pop().get('innerHTML');
             n.set("innerHTML", ordered);

I provide this code under a BSD License.  Now buy me a beer 😉  Buy me a beer if you like this :)