The definitive heatmap

16 Aug

The final HeatmapAfter the interest shown about the clickmaps / heatmaps articles, I’ve decided to gather all the information into an easy to use system. What we are going to make is a complete solution that allows collecting, analyzing and showing the click information our users give us. Now, it works in web pages not center aligned and is quite a bit more robust. Read on…


If you are a webmaster, you had probably thought about what do users do in your website. Beyond usual statistics, clickmaps allow you to find where your users are clicking. This is quite useful to find areas in needing of change, layouts that don’t work as intended or anchors that aren’t being understood as you would like.

You’re going to be able to find every single click your users make in your website, being over a link or even in blank areas. We are going to do it the following way:

The proccess

We need to divide the full proccess into some manageable steps that use some open source tools. Since I work both in windows and linux systems, I’ll be OS agnostic and use only tools available in most systems, including Mac OSX.
The main steps and the tools they use are the following:

  1. The collecting (javascript and apache)
  2. The processing (ruby and imageMagick)
  3. The showing (javascript)

The collecting

We are going to use a small snippet of unobtrusive javascript to allow the client to tell our server the click positions. Just place this small javascript file at the very end of your template, right before the closing <body> tag:


The code adds a onMouseDown handler to the document, executes a function for every click and returns true, since we want the user to follow the normal navigation. Then, when the user clicks any part of the page, a tiny request is going to get sent on the background to our server. The script has to calculate the offsett of the first element inside the <body> tag, because most pages arent aligned to the top-right corner. In liquid layouts the system is not going to work at all

The request is sent via a HttpRequest object that calls a file in the server. In last version, I used a small GCI written in perl to log the request and return an empty document, but since we want to serve so many request, there’s a better method to apply. Using a perl CGI, in a modern server, we get the following results benchmarking with apache bench (100 requests, 10 concurrent ones):

Concurrency Level: 10
Time taken for tests: 6.537187 seconds
Complete requests: 100
Failed requests: 0
Write errors: 0
Total transferred: 17100 bytes
HTML transferred: 0 bytes
Requests per second: 15.30 [#/sec] (mean)
Time per request: 653.719 [ms] (mean)
Time per request: 65.372 [ms] (mean, across ...)
Transfer rate: 2.45 [Kbytes/sec] received


Apache has some modules that work the following way:
You define a handler and what you want to do with it. Some of them are well known, like mod_perl or mod_cgi, but a lesser known one, called mod_imap, does exactly what we want. It’s a module meant to return server-side image maps, but if we use an empty map file, all we get is a 204 status (no data) and a logged transaction. The difference is quite significative. Using Apache Bench with the same configuration, this is what we get:

Concurrency Level: 10
Time taken for tests: 0.106316 seconds
Complete requests: 100
Failed requests: 0
Write errors: 0
Total transferred: 36464 bytes
HTML transferred: 20246 bytes
Requests per second: 940.59 [#/sec] (mean)
Time per request: 10.632 [ms] (mean)
Time per request: 1.063 [ms] (mean, across ...)
Transfer rate: 329.21 [Kbytes/sec] received

That’s 950 requests per second vs 15 with the CGI method!!! We are almost a hundred times faster with this approach!The only thing we have to do to use this mod_imap is to touch a little bit the apache configuration file. Do it carefully because it can hurt your entire server. In the relevant section add the following lines:

AddHandler mod_imap .map
CustomLog /tmp/clicklog clicklog #or modify according to your system

And define a custom log in the same file adding this:

LogFormat "%q,%{Referer}i" clicklog

This way, everything ending in .map is going to be treated as a server-side map, and since the map is empty, it’s not taking your user anywhere. But it logs it, in file /tmp/clicklog (YMMV).

The log analysis

Since we used a logFormat apache directive to write our log, the format should be easy to parse. The query string is written in the log as it comes, and the full lines should be in the following format:


I decided to write a Ruby script to parse the file and generate the final images, because I hadn’t used ruby before and thought it would be a good way to approach the problem. Last time I had written an structured perl script, but I think that object-oriented is the way to go in this particular situation, since the objects should be well-defined and dividing the program among several coders should be easier too.

Update:Thanks to Jerret, this part has been enhanced using RMagick. Part of the code below can be updated and works some 50 times faster. On top of that, a new sourceforge project has been started at under a GPL license. Of course, if you don’t want to install/use RMagick you can still download the original version at the end of this post.

I´ll try to explain the model. It uses five classes:

Sets some configuration variables and returns them as a hash. This way, every configuration variable is set in this class and it’s easy to get them later on


Reads and parses the file defined as logfile in the conf object. For each log line, it stores it into a click object and append it to an array. There are two methods that return all the URLs in the log file (geturls) and all the information for a single URL as a Log object


Stores the data in each log line, including X, Y and URL. Provides a method (xy) that returns an string like “x100y200″ to compare the exact coordinates, useful to extract the maximum number of times a single click is repeated


Stores all the values pertinent to a single URL and gives accesors to them. There’s also a “next” method that returns next click within the same URL


Receives a log object and the conf object. There are three methods to normalize the spot we’re going to use as a click indicator (normalizespot), compose every click as a dot (iterate) and colorize the final image (colorize)


Then, the main program is only eight lines long. It leverages the objects’ methods to be as compact as possible. In fact, the only thing it does is to iterate over each url to create a different image.

conf =
file =['logfile'])
file.geturls.each do |url|
    image =,conf)

Is it better?

You can find another program (this time written in perl) in an older post that does a similar job of making heatmaps. But there has been some modifications that makes this an usable system instead of a proof of concept:

Flexible configuration
Over the harcoded last version, in this one is quite simple to modify the images used in the heatmap generation, or the log name. You only have to modify the Conf definition. It would be so easy to use an external conf file, but doing it this way is quicker for me
Multiple URL support
While last version only let you extract one image, this one makes a heatmap for every URL in your log.
Much faster execution time
Instead of composing the full image everytime, now we create a single ImageMagick sentence to do al the composition for us. That gives us a couple of orders speed advantage. Last version lasted about fifteen minutes for a couple hundred clicks, and now it’s about five seconds. Please note that, for many clicks, the program uses quite a bit of memory. Probably for a production environment it would be neccesary to divide the compose sentence into manageable chuncks, and iterate at the end with them to create the final heatmap.
Manual capture is not needed anymore
Since the last step is to decrement the opacity of the map, we can use a little bit of javascript to overlay the PNG image over the original page. So, the stakeholders can review it without someone manually capturing the screen. This way we don’t need to set an XServer in the production environment
Easier to maintain and extend
The object oriented paradigm doesn’t give us faster code, but much more manageable one. You can extend it as you want

What you get

Now, you’ll have several images. Most of them are OK to delete, but there’s one ending in final.png that’s your heatmap. We’re going to overlay it on top of your web page. That image should be a semi-transparent PNG like this one:

The overlay

This is the final part of the proccess. We already have the overlay image and all we need is a javascript snippet that can be called anytime and that creates a layer on top of your website with the click information. Just like the first step, we’re going to position it over the very first item in the page.
The best way to do that is via a bookmarklet, that is, an small javascript snippet saved as a bookmark. This way, you can have it in your browser and ask for the overlay image when you feel like. The javascript recalculates the offsets of the first element inside the <body> tag and writes the heatmap image on top of it.


The result

We got a beautiful heatmap on top of our web page. We can call the overlay from wherever we want and show it to the project stakeholders. Look at the result:

The code

I made a ready to download package with all the code. It’s released under a MIT license that means that you can do whatever you want with it. Probably in the future it’ll be part of an open source release; if you feel like, start it yourself or contact me for more information.

Download code. Tar.gz file

What else?

The sky is the limit. If you want a hosted service, contact us. Our company can give you bespoke solutions to all your web intelligence needs, being it log analysis, path tracking and so on. If you’re a developer, feel free to use all the code as you wish, and please write me to tell your experiences. Stay tuned!

By the way, there has been a post in remysharp blog explaining how to record the clicks in a different server. Thanks.

Would like to share? These icons link to social bookmarking sites where readers can share and discover new web pages.
  • Digg
  • Reddit
  • Facebook
  • Google Bookmarks
  • Ma.gnolia
  • TwitThis
  • LinkedIn

93 Responses to The definitive heatmap


Corunet. El blog >> How to make heat maps

August 16th, 2006 at 20:44

[...] NOTE: This post has been improved at The definitive heatmap There is not much documentation about creating heat maps. I haven’t been able to find an open source solution that, giving the coordinates, creates a heat map like those shown in Etre blog In the last post (part 1, part 2) we got a list of click positions in a web page, but the result is easy to improve. [...]


Build a "click heat map" system using Ruby and JavaScript

August 16th, 2006 at 21:47

[...] Heat maps allow you to see where people are clicking on your Web page(s) and while some pay-for, professional systems offer this feature, David Pardo has put together a guide, including Ruby and JavaScript source, of how to create your own from scratch! [...]



August 16th, 2006 at 23:34

The definitive heatmap…

What we are going to make is a complete solution that allows collecting, analyzing and showing the click information our users give us. Now, it works in web pages not center aligned and is quite a bit more robust. Read on…


Heat Maps and Usability...

August 17th, 2006 at 01:23

[...] Posted by Steve Longdo Wed, 16 Aug 2006 21:44:00 GMT I must confess I’d heard the term “heat map” in conjunction with user interaction a while ago, but never bothered to look into them in more detail. Usability pioneer Jakob Nielsen has examples in this article. Nielsen’s heat maps track human eye movement across a web page. Today I ran across this magnificent posting. It demonstrates a “heat map”, and also provides MIT licensed open source code to generate them. These “heat map” are actually “click maps”, but in some ways these are even more relevant than where a web site visitor looks. [...]


Bloggitation &#187; links for 2006-08-18

August 18th, 2006 at 03:48

[...] The definitive heatmap Heat maps allow you to see where people are clicking on your Web page(s) and while some pay-for, professional systems offer this feature, David Pardo has put together a guide, including Ruby and JavaScript source, of how to create your own from scratch! (tags: programming ruby web apache design) [...]



August 18th, 2006 at 07:25

Can you explain how the mod_imap works? Which script exactly calls the .map file? I see no reference to it in the downloadable files.



August 18th, 2006 at 11:49

Hi, Daniel

You have to replace in registerclick.js the line:

var url=’’+tempX+’&y=’+tempY;


var url=’’+tempX+’&y=’+tempY;

where is the empty .map file in your system. The sources are already updated. Sorry

About mod_imap, you can find all the documentation at

We are using it in a twisted way, but as it’s one of the core apache modules, it’s not going to dissapear soon.


Deep Jive Interests &#187; Recommended Reads for August 18, 2006

August 18th, 2006 at 14:32

[...] The definitive heatmap Want to roll your own heat map so you can see where your visitors are heading? Check this article out &#8212; but you&#8217;ll need to know Javascript and Ruby to pull it off. (tags: javascript ruby cool heatmap development code) [...]


WEB2.0 на Руси &#187; Горячие точки сайта, часть 2

August 18th, 2006 at 15:20

[...] И вот первые попытки реализовать систему горячих точек (или карт кликов) на собственных мощностях. [...]


Brain Lint &#187; Blog Archive &#187; Click data as heatmaps

August 18th, 2006 at 19:40

[...] A colleague pointed out this open source project that allows users to visualize the mouse movements of users as a heatmap – the hotter the area, the more the mouse has been used there. Its a neat idea and a great effort to share the code, but I wonder about the utility of the resulting data. [...]


Duncan Beevers &#187; History &#187; RubyInsides

August 19th, 2006 at 01:10

[...] Case-in-point, they link to this amazing heat map, which provides detailed feedback in an incredibly intuitive format. [...]



August 19th, 2006 at 21:31

let me know if a repo is going to get setup for this , i’ve some ideas ;]



August 20th, 2006 at 01:01

Very good! All worked on my server fine. Good point to keep private data at my server=).



August 21st, 2006 at 10:19

Hi jerrett,

Right now the project is being reviewed at sourceforge for inclussion. Can you contact me at to keep you informed via mail?

Avatar &#187; Blog Archive &#187; Heatmaps homemade and free!

August 21st, 2006 at 22:21

[...] The solution is completely free and is released under a MIT license. That means that you can do whatever you want with it. If you are interested read their blog and download the heatmap solutions here Posted by webmeasurement Filed in Webanalytics general [...]


Web Analytique &#187; CrazyEgg ouvre ses portes !

August 22nd, 2006 at 00:52

[...] Tout ce passe sur le site de clickmaps. [...]



August 23rd, 2006 at 18:56

Fantastic, I can’t wait to get working on this.

Suggestion, though. To get this working on liquid layouts, couldn’t you also send the dimensions of the viewport (using innerWidth/innerHeight ) and track those dimensions as well?

I’m not sure if you can do a prompt within a bookmarklet, but you could always create multiple bookmarklets, each for different dimensions?

Just a thought, otherwise great job.



CrazyEgg Launches at

August 23rd, 2006 at 19:11

[...] Update: Make one yourself. [...]


User Interface Metrics // Troy Gilbert

August 24th, 2006 at 00:27

[...] [Update: I found the other clickmap/heatmap site I mentioned above: The definitive heatmap..] [...]


Calor, colores y preguntas - Bio XD

August 24th, 2006 at 07:58

[...] Crea tu propio heatmap con Ruby y Javascript [...]


Heat Map per il proprio sito &laquo; Mac Blog

August 28th, 2006 at 12:23

[...] Ultima opzione: se siete buoni webmaster e conoscete bene l&#8217;HTML, &#8220;Ruby on Rails&#8221; e altro createvela da voi con questo tutorial. [...]


Termomapa de uso del blog | S&oacute;lo otro blog infame

August 28th, 2006 at 15:00

[...] Si alguno queréis hacer algo más avanzado os recomiendo el artículo The definitive heatmap que me llegó a través de la recomendable lista de distribución Cadius. [...]



August 30th, 2006 at 10:48

hmmm that’s interesting but what about floating layouts dependent on screen resolution??



August 30th, 2006 at 13:56

Hi, Lain,

Don’t hold your breath. The only way I can think of would be a div-based page division, to create small heatmaps positioned relatively to the div corner.

That would probably be too difficult to develop in a general way, so, it’s not being taken into acount right now.


Pixel y Dixel &#187; Heat maps: las zonas calientes de tu web

August 30th, 2006 at 19:54

[...] Corunet ha publicado un tutorial de c


links for 2006-08-24 at willkoca

September 1st, 2006 at 08:25

[...] Corunet. El blog » The definitive heatmap (tags: javascript heatmap usability webdesign ruby rails) [...]


Mutterings &#187; Blog Archive &#187; Is your site hot?

September 11th, 2006 at 00:05

[...] Heatmap-based click analyzers are a pretty cool idea to determine how users are navigating your site. Corunet has a guide to building your own heatmaps using Javascript and Ruby and Crazy Egg has gone and built a product out of it that you can use on your own site. Nifty. [...]



September 12th, 2006 at 01:56

can you provide more documentation on how to install and use the code



September 12th, 2006 at 10:52

Hi Tazo,

I’m right back from holidays. As I have reeived so many enquiries about that, I’ll try to write an installer (fully ruby based) and make it available at sourceforge, with documentation.


Original Sin

September 12th, 2006 at 12:36

Your map seems off. Look at the heat points to the right, it’s as if whoever clicked on the links was viewing your site with a different resolution.
It’s a nice idea though, and on the question of floating backgrounds, wouldn’t it be possible to also send back the dimentions of the browser window and then interpolate the results? It would work, unless you have a *partially* floating design, where some elements have fixed widths.



September 12th, 2006 at 12:55

Hi, Original Sin,

I did some random clicks on the page to try out the system, so, that probably explains the offset data.

About the interpolation idea, you’re right. Only trouble is that liquid layouts vary the height of the columns and all the divs (or even all the tags) would have to be treated separately.



September 14th, 2006 at 17:31

Simply brilliant! I can’t wait to try it out. A sourceforge release would be excellent. This will become so popular!



September 14th, 2006 at 17:35

Hi, alinush,

It’s already in sourceforge, as the project name “clickmaps”


Corunet. El blog » The definitive heatmap &laquo; slow shaper

September 17th, 2006 at 09:29

[...] Corunet. El blog » The definitive heatmap [...]



September 18th, 2006 at 15:41


great job on this. unfort. i don’t know if i can get it working as i have no access to my shared servers httpd.conf.

the mod_imap directives can be set in .htaccess, but from my understanding you cannot set CustomLog or LogFormat there.

any ideas on a workaround? or should i give up and try the old cgi version?

many thanks in any case for the fun thoughts…


Justin Blanton | Crazyegg = crazy expensive

September 30th, 2006 at 21:45

[...] As far as I can tell, the service offers three basic things, which are all just different presentations of the same click data: Overlay, List, and Heatmap. The &#8220;heatmap&#8221; feature is what has really set the blogosphere on fire, but is this one simple view worth $20-$100 a month? Does it really add anything to the &#8220;overlay&#8221; view, which is already available for free through Google Analytics? Does it look cool? Of course, and I&#8217;d love to use it myself, but I&#8217;ll be damned if I&#8217;m going to pay $50/mo (more than twice my actual webhosting costs) to get a pretty picture, whose ultimate significance can be derived for free from other services. Let me reiterate: save the pretty picture, this service offers nothing new. Moreover, with a little work, you can actually create a very similar picture for free, and I don&#8217;t think it&#8217;s going to be too long before someone creates a Pepper for Mint to accomplish the same. [...]



October 17th, 2006 at 17:39


It seems like a great script, but somehow I experience problems, when I try to run it in “Ruby1.85″ I get the following error:

Invalid Parameter – -fill
Invalid Parameter – 515×77
Invalid Parameter – -negate
Invalid Parameter – -type
Invalid Parameter – -channel

Even though I have tried to read into all the great documentation, I struggle to find the solution to how to get the script to work.

Should I create images, install RMagick or some third solution?

Thanks in advance.



links for 2006-11-16 at Blue Sky On Mars

November 16th, 2006 at 11:34

[...] Corunet. El blog » The definitive heatmap a tool that lets you gather a heatmap for your site/app (tags: javascript usability webdesign heatmap) [...]



November 22nd, 2006 at 19:01

Do i need to instal RMagick for create the png and the final.png file?

Best Regards.



November 22nd, 2006 at 19:08

Rmagick is needed for the last version (~30times faster) but not if you use the previous one. I’ll upload it to sourceforge as soon as possible to be ale to download the one that suits you.



November 22nd, 2006 at 20:27

Thank you for your quick response!

I´m receiving x, y and url values in the log file, but i can´t generate the png´s files.

My click log sample:

Pedro Marques.



November 22nd, 2006 at 20:27

I´m using messenger :)

my adress is



DLife &#187; AJAX资料大全

November 24th, 2006 at 04:32

[...] Generate user-click heatmaps using JS and Ruby by David el Dia [...]


130 Ajax Tutorials. -

November 24th, 2006 at 07:34

[...] Generate user-click heatmaps using JS and Ruby by David el Dia [...]


Amir&#8217;s Blog &#187; Blog Archive &#187; A Great List of Ajax Tutorials

November 25th, 2006 at 11:38

[...] Generate user-click heatmaps using JS and Ruby by David el Dia [...]


130 Ajax Tutorials. -

November 27th, 2006 at 01:51

[...] Generate user-click heatmaps using JS and Ruby [...]



November 30th, 2006 at 07:12

I think this is a little off… I ran it and everything works great but all of my clicks are off to the right too. The math is off somewhere. Other than that very nice job!



November 30th, 2006 at 07:59

I stand corrected… it’s right on.. My implementation was off. I Love it, thank you very much!



November 30th, 2006 at 13:38

hi, thanks for sharing your work

For some reason Im unable to generate any clicks to the clicklog using apache2.2

I try going directly to the and it generates nothing in the log. So it has nothing to do with the javascript. It also of course doesnt work with the javascript either.

Again, i added those lines, stoped and started apache. The clicklog is created, but it just does not log anything

Im thinking maybe something has changed in apache2.2?

In the documentation they say use:

AddHandler imap-file .map

I tried both that and

AddHandler mod_imap .map

Still no go. Just wanted to see if anyone ran into a similar problem.




December 5th, 2006 at 15:55

Great work!!
I try it and run perfectly!

Thank you very much for sharing your work!!!
Pedro Marques



December 19th, 2006 at 10:56

Wow! What excellent job putting this together.


Skylog &#187; Blog Archive &#187; links for 2006-12-24

December 24th, 2006 at 08:40

[...] The definitive heatmap (tags: internet) [...]


Cubma &#187; Blog Archive &#187; Bygg din egen heatmap

January 2nd, 2007 at 23:26

[...] Bygg din egen heatmap Att visuellt kunna se vart på ens sida besökaren klickar finns det massor av användningsområden för, speciellt inom usability. Sedan tidigare finns crazyegg och clickdensity, men det är inte säkert att man har råd att betala för en sådan tjänst då det lätt blir ganska dyrt. För den sparsame finns det nu 2 alternativ. Den första är skriven i Ruby och finns att ladda hem här, den andra är skriven i php som finns för nerladdning på Share and Enjoy:These icons link to social bookmarking sites where readers can share and discover new web pages. [...]



January 10th, 2007 at 12:48

Why use imap to server the static file if you compare it to a benchmark against a .gif file there’s no optimization. Without the map_imap you can strip down apache hence it will run faster.
See tests below:

// gif
Concurrency Level: 1
Time taken for tests: 10.294763 seconds
Complete requests: 10000
Failed requests: 0
Write errors: 0
Total transferred: 3640000 bytes
HTML transferred: 430000 bytes
Requests per second: 971.37 [#/sec] (mean)
Time per request: 1.029 [ms] (mean)
Time per request: 1.029 [ms] (mean, across all concurrent requests)
Transfer rate: 345.22 [Kbytes/sec] received

// imap
Concurrency Level: 1
Time taken for tests: 10.278557 seconds
Complete requests: 10000
Failed requests: 0
Write errors: 0
Total transferred: 3540000 bytes
HTML transferred: 180000 bytes
Requests per second: 972.90 [#/sec] (mean)
Time per request: 1.028 [ms] (mean)
Time per request: 1.028 [ms] (mean, across all concurrent requests)
Transfer rate: 336.33 [Kbytes/sec] received



January 10th, 2007 at 13:07

It’s a perfect valid solution. You add some KBs to the transfer, but that should’t be a problem. Anyway, the best solution would be a handler that returns a “204: No Content” response and take no further action.



January 15th, 2007 at 01:03

this is very useful as well as informational.. Thanks for the article and scripts examples…


How I achieved cross site scripting at remy sharp&#8217;s b:log

January 18th, 2007 at 22:35

[...] Some background: Some time ago I found, and implemented this awesome heatmap click tracking for the company I work for. However, since our test machines run everything from one machine (i.e. images and code), when it came to putting it live I never thought for a second it wouldn&#8217;t work&#8230;which was the result. [...]


Carlo Robino

January 24th, 2007 at 19:10

I’m trying to realize in Java the same software in order to visualize eye-movement fixation on a web page. I have some problem to visualize the heatmap with the same graphical quality because I don’t understand what kind of graphical function has been used in Ruby…. there is someone that know how can I obtain the same graphical results by using Java?
thank you very much



January 31st, 2007 at 14:07

very cool article. I am using it with mod_log_access, which is a drop-in replacement for mod_log_config and the clickmap logs are very useful! thanks again for an informational read.


Netzwerkkommunikation &#187; Eyetracking ohne Tracking

February 9th, 2007 at 17:55

[...] – hier wird eine Heatmap algorithmisch erstellt. Und hier findet man ein Tool, das auf Grundlage von Webserver-Logs ebenfalls Heatmaps zeichnet. [...]


metaend &#187; Blog Archive &#187; / Heatmaps

February 11th, 2007 at 06:13

[...] Класиката са тези, които се слагат на готови и launched сайтове. Ето тук има напълно безплатно open source решение под MIT license. За жалост не е точно за всеки, защото човек трябва да има абсолютно всякакви права за достъп до сървъра, където се намира сайта. Има и разни платени, Crazyegg изглежда добре. [...]


Scott &#187; Blog Archive &#187; Heatmap of system

February 14th, 2007 at 03:22



February 19th, 2007 at 23:04

I’ve “ported” The definitive heat map to Java. You can now create a heat map on the fly, directly with user interaction. Code and examples at:



February 21st, 2007 at 13:28

Hi Liesen,

We’ve also developed a standalone version, written in C and using LibPNG for the output for a customer. It goes about ten thousand clicks per second!
I’m glad that the ideas presented have been useful. I’ll try to write some more next month.



March 20th, 2007 at 06:08

Do you have the “formula” by which you made bolilla.png? (Also, the C person that did the LibPNG port… Can you post your code?)



March 20th, 2007 at 14:33

The pelotilla images were created with The Gimp, using just a gray gradient. For the LibPNG version, they were exported to PGM and filtered via a perl script. The colors were exported to BMP format and read by another script to output the vector information.

The LibPNG version isn’t meant to be published, but probably used as a web service. The only people using it in their own machines right now are the original customers (TNS Galllup) and we both share the code base.



March 21st, 2007 at 12:56


I was wondering whether it\’s possible to set this up without direct access to the httpd? My host, Hostgator, apparently won\’t insert the lines in the Apache httpd file as I\’m on a shared server. I guess it might affect other customers.

Any thoughts?



March 21st, 2007 at 15:50

Hi martin,

You should be able to record easely the query string into a file. It can be done via PHP, Perl, Ruby… The easiest way would be (in perl)

open (LOG,”>>log.txt”);
close (LOG)
print “Content-type: text/html\n\n”;

And that’s all (pretty basic and not production ready, but that’re the basics)


mga/blog &#187; clic acá

April 14th, 2007 at 06:44

[...] La imagen arriba muestra el patrón de clics de este blog y otro sitio web. Estos patrones son una forma de visualización de clics que se conoce como heatmap (&#8221;mapa de calor&#8221; donde las zonas más &#8220;calientes&#8221; son aquellas que tienen muchos clics). Mirando las imágenes en grande puede encontrar patrones de clic. Aunque la imagen de la izquierda presenta solamente 65 clics y la de la derecha muestra unos 480 clics se pueden observar claros patrones. Estas imágenes fueron capturadas de CrazyEgg, un servicio que permite a dueños de sitios web grabar los clics de sus visitantes por un tiempo determinado y visualizarlos. Con esta información se pueden tomar diferentes decisiones de diseño: dónde poner la publicidad, qué tipo de fotografías son más populares, cuales links son más llamativos, qué tan visible es la navegación del sitio, y realizar los cambios pertinentes para mejorar sus resultados. CrazyEgg está basado en un software libre de rastreo de clics. [...]


Rick Dennis

May 2nd, 2007 at 18:51

anyone interested in setting this up on my website for some $$$$$?

please contact me….thanks.


a heatmap? the new webcounter for your site &laquo; hakawi-tech - تكنولوجيا حكاوى

May 16th, 2007 at 02:26

[...] Link to heatmap a new way to tell who is on your site or blog. The creators of heatmap claim that it would help webmasters &#8216;collect, analyze and show the click information our users give us.&#8217; Everytime a user clicks, even in an empty space on our webpage, it is reflected on the heatmap. I think the only problem with it is the slightly complicated download and installation process. [...]


Open Source Heat Maps

June 4th, 2007 at 01:38

[...] Corunet. El blog » The definitive heatmap After the interest shown about the clickmaps / heatmaps articles, I’ve decided to gather all the information into an easy to use system. What we are going to make is a complete solution that allows collecting, analyzing and showing the click information our users give us. Now, it works in web pages not center aligned and is quite a bit more robust. Read on… What? [...]

Avatar &#187; Heatmaps

January 9th, 2008 at 19:04

[...] Heatmaps are apparently the next thing in web site statistics – and what a clever idea. For a while I worked on a JS file that would report the mouse moving over, out, and clicking on DOM elements in a page, but to be honest, that was a bit excessive – and much harder to visualise. [...]


obzervant&#187; &#187; Using Click Heatmaps to Optimize Web Design

January 5th, 2009 at 05:43

[...] The Definitive Heatmap by Corunet [...]


mit onclick eine php funktion aufrufen - Forum - HTML f

January 15th, 2009 at 02:45

[...] Suchst du sowas: Corunet. El blog


Web Design and Google Adense Heat Maps | Mark8t: E-Marketing And Beyond

February 8th, 2009 at 03:33

[...] If you have a website already, you can install Google Analyticsand get a Heat Map overlay of your site, or you can install &#8220;The Definitive Heatmap&#8221; script &nbsp;Print This Post [...]


Codynamix &#187; Cannoli: A Ruby on Rails click heatmaps generator

April 21st, 2009 at 20:34

[...] Many thanks to David, the heatmap code is taken and modified from his blog. Without his contribution it wouldn’t have been possible. [...]


Plus de 10 outils pour connaitre le comportement des visiteurs sur son blog | Le Journal du Web 2.0

July 26th, 2009 at 01:27

[...] Voici un ensemble de scriptes pour installer son propre système d&#8217;enregistrement et de visualisation de cliques. [...]


8 Tools Per Statistiche Heatmaps | Soldi Web | Guadagnare Online - Fare Soldi Online - Guadagnare Con Internet - Web Marketing - Internet Marketing

August 16th, 2009 at 13:51

[...] Corunet. El blog [...]


Heatmaps, hot or not? |

August 26th, 2009 at 00:51

[...] The next free trackingsystem is called &#8220;The definite heatmap&#8221; by Corunet and is a &#8220;do it yourself solution&#8221;. Corunet gives you the opportunity to build your own heatmap, this way you have a better understanding how these programs work. For the lazy people among us: you can download all necessary files at the end of the tuturial. I will give this a try later on and will let you know the outcome. [...]


Heat Maps &laquo; Tech talk and my thoughts

September 30th, 2009 at 18:53


Useful Tips to Improve Bounce Rate of your Website

August 27th, 2010 at 16:13

[...] Fusestats, Corunet, ClickHeat are some of the useful services which enable you to create heat maps for your web pages [...]


Pagine interessanti visitate | boffonet

September 21st, 2010 at 16:50

[...] Struttura sito (hub di richiamo,heatmap) [...]


浅谈Heatmap | 火丁笔记

January 4th, 2011 at 08:25

[...] The definitive heatmap [...]


网站点击热图的技术实现 | 标点符

January 5th, 2011 at 12:21

[...] The definitive heatmap [...]


OSM user history heatmap « Andrew Harvey's Blog

January 16th, 2011 at 11:09

[...] this list of points I could use any heat map program. gheat which is based on looks good. The problem is I ran out of time setting it up– it wasn’t in the Debian [...]


Sizzle Up Your Webpages: 7 Ways to Draw a Heat Map for Your Site | SEO Blog of Link-Assistant.Com

March 29th, 2011 at 15:55

[...] consulting agency. In case you think it could be just the right idea for your website – here is the link [...]


How To UP YOUR GAME as a Web Designer | The Creative Noise

September 16th, 2011 at 23:26

[...] Definitive Heatmap (from Corunet, Free DIY Tool) [...]


Les 11 commandements du call-to-action | Chroniques d'un webliver

October 9th, 2011 at 11:24

[...] Il faut pouvoir mesurer vos efforts4. L’empirisme est souvent le meilleur moyen de vous améliorer. Testez des positionnements, des tournures de phrases à l’aide de tests A/B. Connaissez le comportement de vos visiteurs avec des heatmaps. Pour vos tests A/B vous pouvez utiliser Google, la mise en place de heatmap peut se faire facilement via la solution disponible là [...]


19 Things We Can Learn From Numerous Heatmap Tests - Web Marketing Daily Post | Web Marketing Daily Post

January 5th, 2013 at 17:32

[...] Corunet – You need someone who knows how to code to use this one. Similarly to Clickheat, Corunet will allow you to generate a heatmap from click data on your pages. [...]


Vad stirrar du på? | Daniel Karlsson

February 10th, 2013 at 11:58

[...] finns en mängd heatmap-tjänster på nätet, som Crazy Egg, Attention Wizard, Mouseflow eller The definitive heatmap. Den sistnämnda tjänsten är gratis, men tekniskt avancerad för [...]


19 Things We Can Learn From Numerous Heatmap Tests

March 3rd, 2014 at 21:53

[…] Corunet – You need someone who knows how to code to use this one. Similarly to Clickheat, Corunet will allow you to generate a heatmap from click data on your pages. […]


¿Cómo analizar el comportamiento de los usuarios en una página web? | SeoNico

March 23rd, 2014 at 13:26

[…] Corunet  […]