diff --git a/assets/haarcascade_conversor.html b/assets/haarcascade_conversor.html
new file mode 100644
index 0000000..e227aff
--- /dev/null
+++ b/assets/haarcascade_conversor.html
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/assets/haarcascade_conversor.js b/assets/haarcascade_conversor.js
new file mode 100644
index 0000000..25ff036
--- /dev/null
+++ b/assets/haarcascade_conversor.js
@@ -0,0 +1,62 @@
+(function(){
+ 'use strictc';
+
+ /**
+ * Convert json to be used by tracking.js
+ * @param {Object} json as file opencv_haarcascade_eye.js
+ * @returns {Array}
+ */
+ var conversor = function(json){
+ if(!json['@type_id'] || json['@type_id'] != 'opencv-haar-classifier'){
+ return "this format is not valid!";
+ }
+ var res = [];
+
+ // Getting size
+ var parts = json.size.split(' ');
+ res.push(parseInt(parts[0]));
+ res.push(parseInt(parts[1]));
+
+ var stages = json.stages;
+
+ for(var i in stages){
+ // stage threshold
+ res.push(parseFloat(stages[i].stage_threshold));
+ // tree length
+ res.push(stages[i].trees.length)
+
+ // trees
+ for(var j in stages[i].trees){
+ var rects = stages[i].trees[j][0].feature.rects;
+ // getting tilted
+ res.push(parseInt(stages[i].trees[j][0].feature.tilted));
+ // getting rects count
+ res.push(rects.length);
+ for(var r in rects){
+ // removing dot in rects
+ rects[r] = rects[r].replace('.','');
+ parts = rects[r].split(' ');
+ for(var p in parts){
+ // getting rect itens
+ res.push(parseInt(parts[p]))
+ }
+ }
+ res.push(parseFloat(stages[i].trees[j][0].threshold))
+ res.push(parseFloat(stages[i].trees[j][0].left_val))
+ res.push(parseFloat(stages[i].trees[j][0].right_val))
+ }
+
+ }
+ return res;
+ }
+
+ // Exports to Node.js or Create reference in browser
+ if (typeof exports !== 'undefined') {
+ if (typeof module !== 'undefined' && module.exports) {
+ exports = module.exports = conversor;
+ }
+ exports.conversor = conversor;
+ } else {
+ window.conversor = conversor;
+ }
+}());
\ No newline at end of file