{"id":3734,"date":"2015-09-10T11:54:20","date_gmt":"2015-09-10T09:54:20","guid":{"rendered":"https:\/\/usersnap.com\/?p=3734"},"modified":"2025-08-05T17:58:22","modified_gmt":"2025-08-05T15:58:22","slug":"tracking-js-the-computer-vision-power-of-javascript","status":"publish","type":"post","link":"https:\/\/usersnap.com\/blog\/tracking-js-the-computer-vision-power-of-javascript\/","title":{"rendered":"Tracking.js &#038; the computer vision power of JavaScript"},"content":{"rendered":"\n<p>There are various frameworks, methodologies, and standards for building websites and web applications. No matter which ones you\u2019re following, you will always somehow end up in the browser and therefore with JavaScript.<\/p>\n\n\n\n<p>With tracking.js, the browser got even more powerful. Here\u2019s our&nbsp;first review of tracking.js and why JavaScript is on the winning team.<\/p>\n\n\n\n<!--more-->\n\n\n<div class=\"acf-cta\" style=\"background-image: url(https:\/\/usersnap.com\/blog\/wp-content\/uploads\/2025\/02\/Group-1000004194.svg); width: 100%;\"><h2>Try Usersnap for Product Development<\/h2><a href=\"https:\/\/usersnap.com\/signup\" class=\"cta-button\">Try Usersnap Now<\/a><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Browsers &#8211; the place to be.<\/h2>\n\n\n\n<p>Well, recently I\u2019ve shown you the concept of <a href=\"https:\/\/usersnap.com\/blog\/guide-designing-in-the-browser\/\">designing in the browser<\/a> and its advantages over traditional frameworks.<\/p>\n\n\n\n<p>As mentioned in this post there are so much more advantages when going straight into the browser. Today, I want to share another <strong>great real life example<\/strong> why the browser is the platform of the future for us developers.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Tracking.js &#8211; computer vision power to JavaScript.<\/h2>\n\n\n\n<p>Just recently we at Usersnap stumbled upon <a href=\"http:\/\/trackingjs.com\/\" rel=\"nofollow\">tracking.js<\/a>, which is a <strong>powerful JavaScript library<\/strong> bringing computer vision and therefore much more power to the browser.<\/p>\n\n\n\n<p>Tracking.js is an open source computer vision library, with different computer vision algorithms on board. These algorithms&nbsp;can be used for features like facial detection or color tracking. And all of that in the browser while having a lightweight core.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Why is this huge?<\/h2>\n\n\n\n<p>You might wonder why we are so excited about yet another JavaScript framework?<\/p>\n\n\n\n<p>With tracking.js, the days are gone where computer vision was limited to native apps and C\/C++. You use tracking.js directly in your browser to detect faces and track colors! Moreover, it\u2019s up to you, your creativity, and your browser.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">The days of OpenCV are gone.<\/h2>\n\n\n\n<p><a href=\"http:\/\/docs.opencv.org\/\" rel=\"nofollow\">OpenCV<\/a> stands for open computer vision and supports C++, C, Python and Java interfaces. It has been designed to focus on real-time application and is widely used for sophisticated use cases (for example facial recognition).<\/p>\n\n\n\n<p>With tracking.js, all those processings are happening on the client-side. In the browser. The days of server-side processing are gone.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Real-time applications on the web.<\/h2>\n\n\n\n<p>As mentioned before real-time applications (such as facial recognition) have been limited on the web. Tracking.js brings that power of computer vision to the web.<\/p>\n\n\n\n<p>With the increasing power of JavaScript engines, good results can be achieved when real-time apps are running in the browser.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Real-time face detection<\/h3>\n\n\n\n<p>So, you want to see some real life examples on what tracking.js can do? <strong>Face detection<\/strong> is one great example.<\/p>\n\n\n\n<p>According to the <a href=\"https:\/\/news.ycombinator.com\/item?id=8098238\" rel=\"nofollow\">hacker news thread<\/a> announcing tracking.js, it\u2019s implementation is based on Viola-Jones algorithm, which is one of the most used algorithms for solving the \u201cface detection problem\u201d. Fun fact this algorithm is also used by OpenCV and it allows you to track several types of objects just by changing the training data that is used as an input.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><a href=\"https:\/\/usersnap.com\/blog\/wp-content\/uploads\/2015\/09\/face-detection-trackingjs-javascript-library.png\"><img decoding=\"async\" width=\"700\" height=\"512\" src=\"https:\/\/usersnap.com\/blog\/wp-content\/uploads\/2015\/09\/face-detection-trackingjs-javascript-library.png\" alt=\"face detection tracking.js javascript library\" class=\"wp-image-3738\" srcset=\"https:\/\/usersnap.com\/blog\/wp-content\/uploads\/2015\/09\/face-detection-trackingjs-javascript-library.png 700w, https:\/\/usersnap.com\/blog\/wp-content\/uploads\/2015\/09\/face-detection-trackingjs-javascript-library-300x219.png 300w, https:\/\/usersnap.com\/blog\/wp-content\/uploads\/2015\/09\/face-detection-trackingjs-javascript-library-140x102.png 140w\" sizes=\"(max-width: 700px) 100vw, 700px\" \/><\/a><\/figure>\n<\/div>\n\n\n<p><\/p>\n\n\n\n<p>You can <a href=\"https:\/\/github.com\/eduardolundgren\/tracking.js\/blob\/master\/examples\/face_hello_world.html\" rel=\"nofollow\">view the code here<\/a> and, of course, you can try it yourself on trackingjs.com. Pretty nice, huh?<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><a href=\"https:\/\/usersnap.com\/blog\/wp-content\/uploads\/2015\/09\/real-time-face-detection-trackingjs-javascript.png\"><img decoding=\"async\" width=\"700\" height=\"407\" src=\"https:\/\/usersnap.com\/blog\/wp-content\/uploads\/2015\/09\/real-time-face-detection-trackingjs-javascript.png\" alt=\"real time face detection tracking js javascript\" class=\"wp-image-3739\" srcset=\"https:\/\/usersnap.com\/blog\/wp-content\/uploads\/2015\/09\/real-time-face-detection-trackingjs-javascript.png 700w, https:\/\/usersnap.com\/blog\/wp-content\/uploads\/2015\/09\/real-time-face-detection-trackingjs-javascript-300x174.png 300w, https:\/\/usersnap.com\/blog\/wp-content\/uploads\/2015\/09\/real-time-face-detection-trackingjs-javascript-140x81.png 140w\" sizes=\"(max-width: 700px) 100vw, 700px\" \/><\/a><\/figure>\n<\/div>\n\n\n<p><\/p>\n\n\n<div class=\"acf-cta\" style=\"background-image: url(https:\/\/usersnap.com\/blog\/wp-content\/uploads\/2025\/02\/Group-1000004194.svg); width: 100%;\"><h2>Try Usersnap for Product Development<\/h2><a href=\"https:\/\/usersnap.com\/signup\" class=\"cta-button\">Try Usersnap Now<\/a><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Color tracker<\/h3>\n\n\n\n<p>What about tracking the color of every item which appears in front of your laptop camera.&nbsp;In order to use a color tracker, you need to instantiate the constructor passing the colors to detect:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">var colors = new tracking.ColorTracker(['magenta', 'cyan', 'yellow']);<\/pre>\n\n\n\n<p>Now you need to know when something is happening &#8211; here&#8217;s the code example for that:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">colors.on('track', function(event) {\n  if (event.data.length === 0) {\n    \/\/ No colors were detected in this frame.\n  } else {\n    event.data.forEach(function(rect) {\n      \/\/ rect.x, rect.y, rect.height, rect.width, rect.color\n    });\n  }\n});\n<\/pre>\n\n\n\n<p>And you\u2019re good to go.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">tracking.track('#myVideo', colors);<\/pre>\n\n\n\n<p>The Color Tracker will now request access to your camera and track <em>magenta, cyan<\/em> and <em>yellow<\/em> colors that appear in front of your camera.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><a href=\"https:\/\/usersnap.com\/blog\/wp-content\/uploads\/2015\/09\/color-tracking-trackingjs-javascript-library.png\"><img decoding=\"async\" width=\"690\" height=\"534\" src=\"https:\/\/usersnap.com\/blog\/wp-content\/uploads\/2015\/09\/color-tracking-trackingjs-javascript-library.png\" alt=\"color tracking trackingjs javascript\" class=\"wp-image-3740\" srcset=\"https:\/\/usersnap.com\/blog\/wp-content\/uploads\/2015\/09\/color-tracking-trackingjs-javascript-library.png 690w, https:\/\/usersnap.com\/blog\/wp-content\/uploads\/2015\/09\/color-tracking-trackingjs-javascript-library-300x232.png 300w, https:\/\/usersnap.com\/blog\/wp-content\/uploads\/2015\/09\/color-tracking-trackingjs-javascript-library-140x108.png 140w\" sizes=\"(max-width: 690px) 100vw, 690px\" \/><\/a><\/figure>\n<\/div>\n\n\n<p><\/p>\n\n\n\n<p><a href=\"http:\/\/trackingjs.com\/examples\/color_camera.html\" target=\"_blank\" rel=\"nofollow noopener\">Just give it a try yourself.<\/a><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Friend tagging<\/h3>\n\n\n\n<p>Another, yet interesting use case is friend tagging. At least since Facebook introduced their tagging feature friend tagging has become a household experience. With tracking.js, it now can be implemented in the browser.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><a href=\"https:\/\/usersnap.com\/blog\/wp-content\/uploads\/2015\/09\/friend-tagging-javascript-library-trackingjs.png\"><img decoding=\"async\" width=\"700\" height=\"451\" src=\"https:\/\/usersnap.com\/blog\/wp-content\/uploads\/2015\/09\/friend-tagging-javascript-library-trackingjs.png\" alt=\"friend tagging javascript library tracking.js\" class=\"wp-image-3741\" srcset=\"https:\/\/usersnap.com\/blog\/wp-content\/uploads\/2015\/09\/friend-tagging-javascript-library-trackingjs.png 700w, https:\/\/usersnap.com\/blog\/wp-content\/uploads\/2015\/09\/friend-tagging-javascript-library-trackingjs-300x193.png 300w, https:\/\/usersnap.com\/blog\/wp-content\/uploads\/2015\/09\/friend-tagging-javascript-library-trackingjs-140x90.png 140w\" sizes=\"(max-width: 700px) 100vw, 700px\" \/><\/a><\/figure>\n<\/div>\n\n\n<p><\/p>\n\n\n\n<p>You can find the <a href=\"https:\/\/github.com\/eduardolundgren\/tracking.js\/blob\/master\/examples\/face_tag_friends.html\" rel=\"nofollow\">example source code here<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Limitations of tracking.js?<\/h2>\n\n\n\n<p>Well, as with every new library, tracking.js have some limitations, e.g. it doesn\u2019t have as many algorithms as OpenCV. Though backed by a huge JavaScript community it\u2019s only a matter of time and we\u2019re excited to see with which creative ideas other developers will come up in order to make use of<strong> tracking.js<\/strong>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Wrapping it up.<\/h2>\n\n\n\n<p>With tracking.js, the browser just got a bit more powerful. No matter if you\u2019re implementing a face detection for your web app or developing a browser game, or you&#8217;re just in search for a tagging feature, tracking.js might be your JavaScript library to go to.<\/p>\n\n\n\n<p>The browser is definitely the platform of the future. With&nbsp;tracking.js mighty things can and will happen. And they will happen in <em>your browser<\/em>.<\/p>\n\n\n\n<p><em>This article was brought to you by <a href=\"https:\/\/usersnap.com\/?utm_source=blogpost&amp;utm_medium=blog&amp;utm_campaign=blogpost_footer\" target=\"_blank\" rel=\"noopener\">Usersnap<\/a> &#8211; <strong>a<\/strong> <b>customer feedback solution<\/b>, used by software companies like <a href=\"https:\/\/usersnap.com\/success-stories?utm_source=blogpost&amp;utm_medium=blog&amp;utm_campaign=blogpost_footer\">Facebook<\/a>, <a href=\"https:\/\/usersnap.com\/success-stories?utm_source=blogpost&amp;utm_medium=blog&amp;utm_campaign=blogpost_footer\">Google<\/a>, and <a href=\"https:\/\/usersnap.com\/success-stories?utm_source=blogpost&amp;utm_medium=blog&amp;utm_campaign=blogpost_footer\">AddThis<\/a>.<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>There are various frameworks, methodologies, and standards for building websites and web applications. No matter which ones you\u2019re following, you will always somehow end up in the browser and therefore with JavaScript. With tracking.js, the browser got even more powerful. Here\u2019s our&nbsp;first review of tracking.js and why JavaScript is on the winning team.<\/p>\n","protected":false},"author":16,"featured_media":3744,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":true,"inline_featured_image":false,"ub_ctt_via":"","footnotes":""},"categories":[8],"tags":[],"class_list":["post-3734","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-web-development-blog"],"acf":[],"featured_image_src":"https:\/\/usersnap.com\/blog\/wp-content\/uploads\/2015\/09\/trackingjs-computer-vision-power-javascript-2.jpg","author_info":{"display_name":"Thomas Peham","author_link":"https:\/\/usersnap.com\/blog\/author\/thomas\/"},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.6 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Tracking.js &amp; the computer vision power of JavaScript<\/title>\n<meta name=\"description\" content=\"With tracking.js, the browser got even more powerful. Here&#039;s a first review of tracking.js and why this JavaScript library makes the browser super-powerful!\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/usersnap.com\/blog\/tracking-js-the-computer-vision-power-of-javascript\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Tracking.js &amp; the computer vision power of JavaScript\" \/>\n<meta property=\"og:description\" content=\"With tracking.js, the browser got even more powerful. Here&#039;s a first review of tracking.js and why this JavaScript library makes the browser super-powerful!\" \/>\n<meta property=\"og:url\" content=\"https:\/\/usersnap.com\/blog\/tracking-js-the-computer-vision-power-of-javascript\/\" \/>\n<meta property=\"og:site_name\" content=\"Usersnap Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/usersnap\" \/>\n<meta property=\"article:published_time\" content=\"2015-09-10T09:54:20+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-08-05T15:58:22+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/usersnap.com\/blog\/wp-content\/uploads\/2015\/09\/trackingjs-computer-vision-power-javascript-2.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"700\" \/>\n\t<meta property=\"og:image:height\" content=\"406\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Thomas Peham\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@tompeham\" \/>\n<meta name=\"twitter:site\" content=\"@usersnap\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Thomas Peham\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/usersnap.com\/blog\/tracking-js-the-computer-vision-power-of-javascript\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/usersnap.com\/blog\/tracking-js-the-computer-vision-power-of-javascript\/\"},\"author\":{\"name\":\"Thomas Peham\",\"@id\":\"https:\/\/usersnap.com\/blog\/#\/schema\/person\/85bd1168f7e7c005c6cd2a4045e3d59b\"},\"headline\":\"Tracking.js &#038; the computer vision power of JavaScript\",\"datePublished\":\"2015-09-10T09:54:20+00:00\",\"dateModified\":\"2025-08-05T15:58:22+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/usersnap.com\/blog\/tracking-js-the-computer-vision-power-of-javascript\/\"},\"wordCount\":785,\"publisher\":{\"@id\":\"https:\/\/usersnap.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/usersnap.com\/blog\/tracking-js-the-computer-vision-power-of-javascript\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/usersnap.com\/blog\/wp-content\/uploads\/2015\/09\/trackingjs-computer-vision-power-javascript-2.jpg\",\"articleSection\":[\"Web Development\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/usersnap.com\/blog\/tracking-js-the-computer-vision-power-of-javascript\/\",\"url\":\"https:\/\/usersnap.com\/blog\/tracking-js-the-computer-vision-power-of-javascript\/\",\"name\":\"Tracking.js & the computer vision power of JavaScript\",\"isPartOf\":{\"@id\":\"https:\/\/usersnap.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/usersnap.com\/blog\/tracking-js-the-computer-vision-power-of-javascript\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/usersnap.com\/blog\/tracking-js-the-computer-vision-power-of-javascript\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/usersnap.com\/blog\/wp-content\/uploads\/2015\/09\/trackingjs-computer-vision-power-javascript-2.jpg\",\"datePublished\":\"2015-09-10T09:54:20+00:00\",\"dateModified\":\"2025-08-05T15:58:22+00:00\",\"description\":\"With tracking.js, the browser got even more powerful. Here's a first review of tracking.js and why this JavaScript library makes the browser super-powerful!\",\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/usersnap.com\/blog\/tracking-js-the-computer-vision-power-of-javascript\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/usersnap.com\/blog\/tracking-js-the-computer-vision-power-of-javascript\/#primaryimage\",\"url\":\"https:\/\/usersnap.com\/blog\/wp-content\/uploads\/2015\/09\/trackingjs-computer-vision-power-javascript-2.jpg\",\"contentUrl\":\"https:\/\/usersnap.com\/blog\/wp-content\/uploads\/2015\/09\/trackingjs-computer-vision-power-javascript-2.jpg\",\"width\":700,\"height\":406,\"caption\":\"tracking.js javascript library - computer vision power in the browser\"},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/usersnap.com\/blog\/#website\",\"url\":\"https:\/\/usersnap.com\/blog\/\",\"name\":\"Usersnap Blog\",\"description\":\"Learn more about how to collect user feedback and build better products with the magic power of feedback.\",\"publisher\":{\"@id\":\"https:\/\/usersnap.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/usersnap.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/usersnap.com\/blog\/#organization\",\"name\":\"Usersnap\",\"url\":\"https:\/\/usersnap.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/usersnap.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/usersnap.com\/wp-content\/uploads\/2020\/08\/Usersnap-Updated-Logo.png\",\"contentUrl\":\"https:\/\/usersnap.com\/wp-content\/uploads\/2020\/08\/Usersnap-Updated-Logo.png\",\"width\":136,\"height\":26,\"caption\":\"Usersnap\"},\"image\":{\"@id\":\"https:\/\/usersnap.com\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/usersnap\",\"https:\/\/x.com\/usersnap\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/usersnap.com\/blog\/#\/schema\/person\/85bd1168f7e7c005c6cd2a4045e3d59b\",\"name\":\"Thomas Peham\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/usersnap.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/c570afeda0ee367f5824a6762a0511ec7be061521c645ef29d34b976c183341d?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/c570afeda0ee367f5824a6762a0511ec7be061521c645ef29d34b976c183341d?s=96&d=mm&r=g\",\"caption\":\"Thomas Peham\"},\"sameAs\":[\"https:\/\/x.com\/tompeham\"],\"url\":\"https:\/\/usersnap.com\/blog\/author\/thomas\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Tracking.js & the computer vision power of JavaScript","description":"With tracking.js, the browser got even more powerful. Here's a first review of tracking.js and why this JavaScript library makes the browser super-powerful!","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/usersnap.com\/blog\/tracking-js-the-computer-vision-power-of-javascript\/","og_locale":"en_US","og_type":"article","og_title":"Tracking.js & the computer vision power of JavaScript","og_description":"With tracking.js, the browser got even more powerful. Here's a first review of tracking.js and why this JavaScript library makes the browser super-powerful!","og_url":"https:\/\/usersnap.com\/blog\/tracking-js-the-computer-vision-power-of-javascript\/","og_site_name":"Usersnap Blog","article_publisher":"https:\/\/www.facebook.com\/usersnap","article_published_time":"2015-09-10T09:54:20+00:00","article_modified_time":"2025-08-05T15:58:22+00:00","og_image":[{"width":700,"height":406,"url":"https:\/\/usersnap.com\/blog\/wp-content\/uploads\/2015\/09\/trackingjs-computer-vision-power-javascript-2.jpg","type":"image\/jpeg"}],"author":"Thomas Peham","twitter_card":"summary_large_image","twitter_creator":"@tompeham","twitter_site":"@usersnap","twitter_misc":{"Written by":"Thomas Peham","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/usersnap.com\/blog\/tracking-js-the-computer-vision-power-of-javascript\/#article","isPartOf":{"@id":"https:\/\/usersnap.com\/blog\/tracking-js-the-computer-vision-power-of-javascript\/"},"author":{"name":"Thomas Peham","@id":"https:\/\/usersnap.com\/blog\/#\/schema\/person\/85bd1168f7e7c005c6cd2a4045e3d59b"},"headline":"Tracking.js &#038; the computer vision power of JavaScript","datePublished":"2015-09-10T09:54:20+00:00","dateModified":"2025-08-05T15:58:22+00:00","mainEntityOfPage":{"@id":"https:\/\/usersnap.com\/blog\/tracking-js-the-computer-vision-power-of-javascript\/"},"wordCount":785,"publisher":{"@id":"https:\/\/usersnap.com\/blog\/#organization"},"image":{"@id":"https:\/\/usersnap.com\/blog\/tracking-js-the-computer-vision-power-of-javascript\/#primaryimage"},"thumbnailUrl":"https:\/\/usersnap.com\/blog\/wp-content\/uploads\/2015\/09\/trackingjs-computer-vision-power-javascript-2.jpg","articleSection":["Web Development"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/usersnap.com\/blog\/tracking-js-the-computer-vision-power-of-javascript\/","url":"https:\/\/usersnap.com\/blog\/tracking-js-the-computer-vision-power-of-javascript\/","name":"Tracking.js & the computer vision power of JavaScript","isPartOf":{"@id":"https:\/\/usersnap.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/usersnap.com\/blog\/tracking-js-the-computer-vision-power-of-javascript\/#primaryimage"},"image":{"@id":"https:\/\/usersnap.com\/blog\/tracking-js-the-computer-vision-power-of-javascript\/#primaryimage"},"thumbnailUrl":"https:\/\/usersnap.com\/blog\/wp-content\/uploads\/2015\/09\/trackingjs-computer-vision-power-javascript-2.jpg","datePublished":"2015-09-10T09:54:20+00:00","dateModified":"2025-08-05T15:58:22+00:00","description":"With tracking.js, the browser got even more powerful. Here's a first review of tracking.js and why this JavaScript library makes the browser super-powerful!","inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/usersnap.com\/blog\/tracking-js-the-computer-vision-power-of-javascript\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/usersnap.com\/blog\/tracking-js-the-computer-vision-power-of-javascript\/#primaryimage","url":"https:\/\/usersnap.com\/blog\/wp-content\/uploads\/2015\/09\/trackingjs-computer-vision-power-javascript-2.jpg","contentUrl":"https:\/\/usersnap.com\/blog\/wp-content\/uploads\/2015\/09\/trackingjs-computer-vision-power-javascript-2.jpg","width":700,"height":406,"caption":"tracking.js javascript library - computer vision power in the browser"},{"@type":"WebSite","@id":"https:\/\/usersnap.com\/blog\/#website","url":"https:\/\/usersnap.com\/blog\/","name":"Usersnap Blog","description":"Learn more about how to collect user feedback and build better products with the magic power of feedback.","publisher":{"@id":"https:\/\/usersnap.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/usersnap.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/usersnap.com\/blog\/#organization","name":"Usersnap","url":"https:\/\/usersnap.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/usersnap.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/usersnap.com\/wp-content\/uploads\/2020\/08\/Usersnap-Updated-Logo.png","contentUrl":"https:\/\/usersnap.com\/wp-content\/uploads\/2020\/08\/Usersnap-Updated-Logo.png","width":136,"height":26,"caption":"Usersnap"},"image":{"@id":"https:\/\/usersnap.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/usersnap","https:\/\/x.com\/usersnap"]},{"@type":"Person","@id":"https:\/\/usersnap.com\/blog\/#\/schema\/person\/85bd1168f7e7c005c6cd2a4045e3d59b","name":"Thomas Peham","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/usersnap.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/c570afeda0ee367f5824a6762a0511ec7be061521c645ef29d34b976c183341d?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/c570afeda0ee367f5824a6762a0511ec7be061521c645ef29d34b976c183341d?s=96&d=mm&r=g","caption":"Thomas Peham"},"sameAs":["https:\/\/x.com\/tompeham"],"url":"https:\/\/usersnap.com\/blog\/author\/thomas\/"}]}},"_links":{"self":[{"href":"https:\/\/usersnap.com\/blog\/wp-json\/wp\/v2\/posts\/3734","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/usersnap.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/usersnap.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/usersnap.com\/blog\/wp-json\/wp\/v2\/users\/16"}],"replies":[{"embeddable":true,"href":"https:\/\/usersnap.com\/blog\/wp-json\/wp\/v2\/comments?post=3734"}],"version-history":[{"count":0,"href":"https:\/\/usersnap.com\/blog\/wp-json\/wp\/v2\/posts\/3734\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/usersnap.com\/blog\/wp-json\/wp\/v2\/media\/3744"}],"wp:attachment":[{"href":"https:\/\/usersnap.com\/blog\/wp-json\/wp\/v2\/media?parent=3734"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/usersnap.com\/blog\/wp-json\/wp\/v2\/categories?post=3734"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/usersnap.com\/blog\/wp-json\/wp\/v2\/tags?post=3734"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}