diff --git a/.npmignore b/.npmignore
new file mode 100644
index 0000000..dcaf716
--- /dev/null
+++ b/.npmignore
@@ -0,0 +1 @@
+index.html
diff --git a/index.html b/index.html
new file mode 100644
index 0000000..c30c5cf
--- /dev/null
+++ b/index.html
@@ -0,0 +1,95 @@
+<style>
+#drop{
+	border:2px dashed #bbb;
+	-moz-border-radius:5px;
+	-webkit-border-radius:5px;
+	border-radius:5px;
+	padding:25px;
+	text-align:center;
+	font:20pt bold,"Vollkorn";color:#bbb
+}
+</style>
+<b>JS-XLSX</b><br />
+<input type="radio" name="format" value="csv" checked> CSV<br>
+<input type="radio" name="format" value="json"> JSON<br>
+
+<div id="drop">Drop an XLSX file here to see the output in CSV.</div>
+<pre id="out"></pre>
+<br />
+<script src="jszip.js"></script>
+<script src="xlsx.js"></script>
+<script>
+function get_radio_value( radioName ) {
+    var radios = document.getElementsByName( radioName );
+    for( var i = 0; i < radios.length; i++ ) {
+        if( radios[i].checked ) {
+            return radios[i].value;
+        }
+    }
+}
+
+//Row object array form:
+//Each row is an object with column headers as keys
+function to_json(workbook) {
+    var result = {};
+    workbook.SheetNames.forEach(function(sheetName) {
+        var rObjArr = XLSX.utils.sheet_to_row_object_array(workbook.Sheets[sheetName]);
+        if(rObjArr.length > 0){
+            result[sheetName] = rObjArr;
+        }
+    });
+    return result;
+}
+
+
+function to_csv(sheet) {
+    function stringify(val) {
+        switch(val.t){
+    		case 'n': return val.v;
+    		case 's': case 'str': return JSON.stringify(val.v);
+    		default: throw 'unrecognized type ' + val.t;
+    	}
+    }
+	if(sheet["!ref"]) {
+		var r = XLSX.utils.decode_range(sheet["!ref"]);
+		for(var R = r.s.r; R <= r.e.r; ++R) {
+			var row = [];
+			for(var C = r.s.c; C <= r.e.c; ++C) {
+				var val = sheet[XLSX.utils.encode_cell({c:C,r:R})];
+				row.push(val ? stringify(val) : "");
+			}
+			out.innerText += (row.join(",") + "\n");
+		}
+	}
+}
+
+var drop = document.getElementById('drop');
+function handleDrop(e) {
+	e.stopPropagation();
+	e.preventDefault();
+	var files = e.dataTransfer.files;
+	var i,f;
+	for (i = 0, f = files[i]; i != files.length; ++i) {
+		var reader = new FileReader();
+		var name = f.name;
+		reader.onload = function(e) {
+			var data = e.target.result;
+			var xlsx = XLSX.read(data, {type: 'binary'});
+            if(get_radio_value("format") === "json"){
+                out.innerText = JSON.stringify(to_json(xlsx), 2, 2);
+            } else {
+                to_csv(xlsx.Sheets[xlsx.SheetNames[0]]);
+            }
+		};
+		reader.readAsBinaryString(f);
+	}
+}
+
+function handleDragover(e) {
+	e.stopPropagation();
+	e.preventDefault();
+	e.dataTransfer.dropEffect = 'copy';
+}
+drop.addEventListener('dragover', handleDragover, false);
+drop.addEventListener('drop', handleDrop, false);
+</script>
diff --git a/package.json b/package.json
index f74f153..1a97e68 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
 {
 	"name": "xlsx",
-	"version": "0.0.4",
+	"version": "0.0.5",
 	"author": "Niggler",
 	"description": "(one day) a full-featured XLSX parser and writer.  For now, primitive parser",
 	"keywords": [