This work is all to do with Mozilla's abilities to handle data: URLs, these are fascinating and as Mozilla has progressed it's abilities to handle progressively longer data: URLs has increased. The 5th example below wasn't possible a few iterations ago!

I wrote a little script for Boxer to convert gifs to data: URLs, it follows:

         /*********************************************
         * This  macro  will  convert  small  gifs to * 
         * BASE64 so that they might be used in  data *  
         * urls as implemented in Mozilla.            *   
         *                                            *    
         * Instructions:                              *     
         *                                            *      
         * 1.  Find  a tiny gif image and open in Hex *
         * Mode in Boxer. Save  the resulting file as *        
         * a .txt file.                               *         
         *                                            *
         * 2. Lose all the stuff that isn't Hex       *
         *                                            *          
         * 3. Run this macro.                         *
         *                                            *
         * 4.     Paste:     "data:image/gif;base64," *
         * [without  the  quotation  marks]  at   the *
         * beginning  of  the line of text you should *
         * receive.                                   *
         *                                            *
         * 5. Copy all and paste into the address bar *
         * of Mozilla.                                *
         *                                            *
         * 6. If the Image  doesn't  work it might be *
         * that the image was too  large;  tiny  gifs *
         * remember!                                  *
         *********************************************/

         macro base64(){
           int a, b, len;
           b=LineCount;
           // Move to the start of the document
           StartOfFile;
           // Lose all the white space
           ReplaceAll(" ","");
           // Move to the start of the document
           StartOfFile;
           // Make one long line of text
           for (a = 1; a < b; a++){
             EndOfLine;
             Delete;
           }
           // Replace all the Hex with Binary
           ReplaceAll("0","0000");
           ReplaceAll("1","0001");
           ReplaceAll("2","0010");
           ReplaceAll("3","0011");
           ReplaceAll("4","0100");
           ReplaceAll("5","0101");
           ReplaceAll("6","0110");
           ReplaceAll("7","0111");
           ReplaceAll("8","1000");
           ReplaceAll("9","1001");
           ReplaceAll("A","1010");
           ReplaceAll("B","1011");
           ReplaceAll("C","1100");
           ReplaceAll("D","1101");
           ReplaceAll("E","1110");
           ReplaceAll("F","1111");
           // Move to the start of the document
           StartOfFile;
           // Split the Binary into 6 byte chunks
           for (a = 1; a <= LineCount; a++){
             len = (LineLength(a)/6);
             for (b = 1; b <= len; b++){
               Right;
               Right;
               Right;
               Right;
               Right;
               Right;
               Space;
             }
           }
           // Convert the chunks into BASE64
           ReplaceAll("000000 ","A");
           ReplaceAll("000001 ","B");
           ReplaceAll("000010 ","C");
           ReplaceAll("000011 ","D");
           ReplaceAll("000100 ","E");
           ReplaceAll("000101 ","F");
           ReplaceAll("000110 ","G");
           ReplaceAll("000111 ","H");
           ReplaceAll("001000 ","I");
           ReplaceAll("001001 ","J");
           ReplaceAll("001010 ","K");
           ReplaceAll("001011 ","L");
           ReplaceAll("001100 ","M");
           ReplaceAll("001101 ","N");
           ReplaceAll("001110 ","O");
           ReplaceAll("001111 ","P");
           ReplaceAll("010000 ","Q");
           ReplaceAll("010001 ","R");
           ReplaceAll("010010 ","S");
           ReplaceAll("010011 ","T");
           ReplaceAll("010100 ","U");
           ReplaceAll("010101 ","V");
           ReplaceAll("010110 ","W");
           ReplaceAll("010111 ","X");
           ReplaceAll("011000 ","Y");
           ReplaceAll("011001 ","Z");
           ReplaceAll("011010 ","a");
           ReplaceAll("011011 ","b");
           ReplaceAll("011100 ","c");
           ReplaceAll("011101 ","d");
           ReplaceAll("011110 ","e");
           ReplaceAll("011111 ","f");
           ReplaceAll("100000 ","g");
           ReplaceAll("100001 ","h");
           ReplaceAll("100010 ","i");
           ReplaceAll("100011 ","j");
           ReplaceAll("100100 ","k");
           ReplaceAll("100101 ","l");
           ReplaceAll("100110 ","m");
           ReplaceAll("100111 ","n");
           ReplaceAll("101000 ","o");
           ReplaceAll("101001 ","p");
           ReplaceAll("101010 ","q");
           ReplaceAll("101011 ","r");
           ReplaceAll("101100 ","s");
           ReplaceAll("101101 ","t");
           ReplaceAll("101110 ","u");
           ReplaceAll("101111 ","v");
           ReplaceAll("110000 ","w");
           ReplaceAll("110001 ","x");
           ReplaceAll("110010 ","y");
           ReplaceAll("110011 ","z");
           ReplaceAll("110100 ","0");
           ReplaceAll("110101 ","1");
           ReplaceAll("110110 ","2");
           ReplaceAll("110111 ","3");
           ReplaceAll("111000 ","4");
           ReplaceAll("111001 ","5");
           ReplaceAll("111010 ","6");
           ReplaceAll("111011 ","7");
           ReplaceAll("111100 ","8");
           ReplaceAll("111101 ","9");
           ReplaceAll("111110 ","+");
           ReplaceAll("111111 ","/");
         }
    

Unfortunately data: URLs in Opera are limited to around 4100 characters so some examples won't work...

Another cool site is this one.

1st 2nd 3rd 4th 5th 6th 7th 8th 9th

This isn't mine but it is excellent: This thing is great. However, I think I may have gotten a little carried away...