tòmò

web analytics software

Curious who your website visitors are?
Concerned about Google Analytics’ data privacy?
Annoyed with Piwik’s limited analytic capabilities?
Then tòmò is for you!
Sweet and simple, it will tell you anything you want to know.

Current version is 5mg1 dated 2016-09-21, latest location databases of 2017-02, see download below.


Latest news

Updated design, lots of bug fixes

2013-10-25 — After a longer break, I’ve been very productive the last few days. Many of the smaller work items have been finished. The tracker works more reliable and recognises the most current versions of browsers and systems and has a better search crawler detection. The UI design is refreshed and the visitor log filter a lot easier to use. There are a few fixes and enhancements in the query view, but the long-planned visual designer isn’t there yet. For those interested, there’s the full change log with all the details.

First public preview release

2012-11-26 — Today, the first public version of tòmò is available. See downloads below. It’s merely a public preview at this time. While the tracker code is quite good already, the query interface lacks most of the cool features that allow all the wonderful analyses described here. But since they need lots of data anyway, I thought this order of implementation should be okay. The plans are done and current tracking should be sufficient for them.


About tòmò

Something about the name

“tò mò” [tɔ mɔ] is Vietnamese for “curious”. It’s called like that because tòmò is curious about your visitors, and for webmasters who are too.

What it is and does

tòmò is an embedded web analytics software. That means that you do not need to set up a separate server or configure sites and accounts. Just put it somewhere on your webspace, add a bit of HTML (or PHP/Python/…) code to your existing page and you’re done. tòmò will automatically track all visits and follow your visitors around, recording what they look at and do.

Through its intuitive query interface, you get real-time information about your visitors just the way you need. What pages are most popular? What languages do your visitors prefer? What browser window space and plug-ins can you design with? What countries or regions do your visitors come from and who sends them to you? How is your latest advertising campaign going and how long does it keep visitors on your site? How quickly loads your page and how many visitors use IPv6? From these questions, you can continue with individual queries to get all the statistics you can think of.

What it’s not

tòmò is not a simple web counter like those you know from the 90s. It’s a lot more intelligent than that.

And tòmò is not an enterprise solution. It cannot handle multiple domains well and it does not support multiple sites or accounts at all. The analytics interface is just for a single user. You will not be able to run a public tòmò server and offer its services to other web sites.

tòmò is also no complete usability study tool. It may give you hints about what your visitors do on your site and how well they can do it, but there are other solutions for in-depth web usability analysis.

tòmò does not come with a guarantee for 100% exact results. But so does no other web analytics solution. That is simply due to the highly heterogeneous landscape of browsers, devices and users. Visits may be missed, countries may be detected wrong and sessions or clicks may contain faulty requests. But the large majority of results is quite precise of course. In extensive comparing tests, I found tòmò to be more accurate than Piwik 1.6 which sometimes missed or made up visitors or did not know as much. Especially country detection is not perfect in both, but still better in tòmò. And you know, statistics only works for large numbers.

Why it was created

Once I started using Google Analytics as part of a Google AdWords campaign, paid by a voucher. This was my first experience with real web analytics beyond the usual web server access log viewers. Its feature richness was overwhelming and at times confusing, too. Then increasingly data privacy issues became public, and sending all your visitors’ data right to another country somewhere around the world isn’t exactly what you could think of privacy control. This is what Piwik is for: it runs a decentralised service you can easily host yourself. But Piwik is very limited in the questions it will answer you. That’s because it does pre-calculation of certain statistical data and you can only query on that, not on the full actions log.

tòmò was created to allow full control over the queries you run, at any time. It works on the raw (well, minimally pre-interpreted) sessions and actions log, which may cause queries to be slower for medium- to higher-traffic sites but at least you get the information you need. Also, tòmò is very compact. It consists of only a small set of files that you can just drop anywhere on your webspace. No database setup required. No third-party cookies, it’s all on the same domain. tòmò also aims at providing an intuitive user interface that won’t leave you lost in data.

Actually, this thing started off as a week-end project. It took a few more evenings to make the tracker work very well. And a few more days to invent the analytics query interface. It wasn’t especially hard to do it. It took some JavaScript/browsers learning to get the tiny details. I could use some of my UNB2 components for the server-side basics and coati for some JavaScript functions. Only in the beginning, I occasionally peeked into Piwik’s JavaScript tracker a bit.

Performance

So how fast is it? As already stated, tòmò is best suited for lower-traffic websites. I have generated some (unrealistic) test data for one year of 50 visits per day and 8 pages per visit on average. My development computer was a Core 2 Duo 1.8 GHz (the smallest model in its family from 2007). Statistic queries over the entire time span take something between 0.4 and 2.5 seconds, depending on the query complexity. Reducing the statistics time frame to three months by a regular filter makes it very fast again. So for the common use case of analysing parts of your website for a defined time span it should be reasonably fast. For comparison, my entire software development website currently has 30 visits per day with only 2 pages per visit.

The mass data test database was about 16 MiB large. You should expect a bit larger database sizes for a year of 150 000 page requests. (As I said, my generated data is unrealistic and for one doesn’t contain diverse referrer URLs.) My software development site’s database has a size of 6.5 MiB after 15 months. The download includes the mass data generation script that you can configure to do your own benchmarks.


Samples

Here are some sample screenshots to give you an impression of the statistics output:

Screenshot image Screenshot image
Screenshot image


Download

Current version

The current version is 5mg1 dated 2016-09-21 (commit 6bb15c).

Please note that this is an early development version. It has some unfinished parts that may look weird. See also the news entry at the top of the page.

tòmò comes in multiple packages. The first one is for users, the second for developers. Please consider using a location database from below.

Release package:   7zip (258 KiB) – ZIP (318 KiB)
Contains the release code, that is the minified version of all files you need to install and use the application. You will need this one to use it on your website. Unpack all files from the archive in a new directory on your webspace.

Source code package:   7zip (629 KiB) – ZIP (838 KiB)
Everything you need to read and modify the application’s source code and lets you build your own version of tòmò. Does not contain any files that are already in the release package.

Location database

The latest databases are dated 2017-02.

City-level GeoLite database:   7zip (10.2 MiB) – ZIP (13.9 MiB)
Country-level GeoLite database:   7zip (355 KiB) – ZIP (550 KiB)
These are the GeoLite databases that are used for more accurate geolocation of your visitors. They include IPv4 and IPv6 coverage, as far as provided by MaxMind. These are optional and you only need either one, i. e. the city database includes all data from the country database. Unpack the file from the archive and save it with the other files in your tòmò directory on the webspace.

These files have been converted from the publicly available GeoLite files in CSV format with my custom GeoLite converter application. This means significantly smaller file size for the country-level file and all names stored within the data files. No more code updates when some country restructures their regions. Also, my PHP access code is much shorter, easier to understand and possibly also faster than MaxMind’s. While these downloads should be updated regularly, you can also do the conversion yourself. You should also be able to use MaxMind’s licensed GeoIP data instead.

Previous versions

You can find some previous releases in the archive directory. No guarantees for future availability.

The full change log contains any changes committed to the code repository. It may be a bit verbose and technical though for non-programmers.

Installation

See the file doc/readme.txt in the downloaded package for installation instructions.


Requirements

Web server

A recent PHP version with SQLite support and a bit of server disk space (for the internal database and supporting data that comes with tòmò) is required for the web server. Apache HTTP Server is recommended but optional. You may need to convert the few .htaccess directives for another web server.

Newer SQLite versions are recommended. I’ve observed bad query efficiency with SQLite 3.6 where the same query on the same database was much quicker (with a smarter execution plan) with SQLite 3.7.

To make use of the background database cleanup, you need to have access to cron jobs.

Disk space

tòmò itself doesn’t need much disk space. Its components are less than 1 MiB. The GeoLite database files come in two different resolutions. The country-level file is also less than 1 MiB, the city-level file usually has something around 20 MiB. Finally, the visitor log database is also stored in a local database file. This depends greatly on how many visitors your site has and can become several megabytes over the years.

Browser

For the tracking part, theoretically any recent browser should do. Cookies support is highly recommended. JavaScript support makes it a lot nicer. I have tested with the following browsers:

During development and tests, I’ve seen a lot more browsers sending plausible data. This includes Safari on Mac OS X, Chromium and Firefox on Linux and Mac OS X, SeaMonkey, and a few other versions of all browsers and of course also newer Windows versions.

To view the statistics in all their beauty, you may need to use a current browser. I regularly use a recent Firefox version.


Localisation

tòmò currently speaks the following languages with locale-specific data formatting:

You can help adding to this list by contributing a new translation. Please contact me for the details.


Licence

GPL v3

tòmò is released under the terms of the GNU General Public License (GPL, version 3). A complete version of the licence is included in the download.

GeoLite

This product includes GeoLite data created by MaxMind, available from http://maxmind.com/. A complete version of the licence is included in the download.


Alternatives

If you came here and have read so far, but found that tòmò is not for you, I’d first like to thank you for your patience and recommend some alternatives that may better suit your needs:

Dear Piwik developers, I’m sorry that I did not report some Piwik bugs I discovered while reading your code. I found it way too hard to contribute to the Piwik project and gave up on it. (Don’t ask me now, I’ve fixed them in my code and forgotten about them already… But feel free to read my code and the comments in it.)


Contact

If you have any questions, feel free to ask me (e-mail link). I speak German, English and some French.

Imprint

To all beloved German lawyers, please proceed to my software development website for those damned details.