What is Minno?

Minno is a free tool for creating web studies with sophisticated questionnaires and reaction time tasks. It supports all major web browsers. Minno scripts are easy to write, without previous knowledge in programming. Minno has been developed by Project Implicit for running social cognitive experiments online. On Project Implicit's website, studies developed with Minno.js collect data from thousands of participants every day.

How to cite

Zlotnick, E., Dzikiewicz, A. J., & Bar-Anan, Y. (2015). Minno.js (Version 0.3) [Computer software].

miQuest: questionnaires

miQuest builds and runs questionnaires. It runs a sequence of pages, each with a sequence of questions. miQuest supports open-ended questions, multiple-choice questions, grids, sliders (visual analog scale), and ranking. It supports various mechanisms for question randomization, and for selecting questions based on previous user response and experimental conditions. Read more.

Below is a "Minno.js playground" with a simple example for a questionnaire (you can edit the code and see what changes).

define(['questAPI'], function(Quest){ var API = new Quest(); API.addQuestionsSet('basicSelect', { type: 'selectOne', style:'multiButtons', errorMsg: { required: "Please select an answer, or click 'decline to answer'" }, answers : ['Strongly Disagree', 'Disagree', 'Agree', 'Strongly Agree'] }); API.addQuestionsSet('item', [ {inherit : 'basicSelect', name:'item1', stem : 'On the whole, I am satisfied with myself.'}, {inherit : 'basicSelect', name:'item2', stem : 'At times I think I am no good at all.'}, {inherit : 'basicSelect', name:'item3', stem : 'I feel that I have a number of good qualities.'}, {inherit : 'basicSelect', name:'item4', stem : 'I am able to do things as well as most other people.'}, {inherit : 'basicSelect', name:'item5', stem : 'I feel I do not have much to be proud of.'}, {inherit : 'basicSelect', name:'item6', stem : 'I certainly feel useless at times.'}, {inherit : 'basicSelect', name:'item7', stem : 'I wish I could have more respect for myself.'}, {inherit : 'basicSelect', name:'item8', stem : 'All in all, I am inclined to feel that I am a failure.'}, {inherit : 'basicSelect', name:'item9', stem : 'I take a positive attitude toward myself.'}, {inherit : 'basicSelect', name:'item10', stem : "I feel that I'm a person of worth, at least on an equal plane with others."} ]); API.addSequence( [ { mixer : 'repeat', times : 10, data : [ { progressBar: '<%= pagesMeta.number %> out of 10', questions : {inherit:{set:'item', type:'exRandom'}} } ] } ]); return API.script; });

miTime: reaction time tasks

miTime builds and runs tasks typical for cognitive psychology (reaction-time tasks). miTime runs a sequence of trials, and supports various mechanisms for randomization of trials and stimuli. Each trial describes a sequence of events (mostly, stimulus presentation and keyboard and mouse responses). Because Minno.js is JavaScript-based and does not require any installation on the participant's computer, time-precision is often inferior to the precision typically achieved with common tools for lab studies. From our experience, experiments with Minno-Time obtain results similar to those obtained with lab experiments. However, it is nearly impossible to guarantee that timing was 100% accurate for all participants in all trials. For example, assuring subliminal presentation of stimuli is unlikely. MiTime accepts mouse and keyboard input, supports presentation of images and text, and is compatible with all major browsers. Read more.

Below is a "Minno.js playground" with a simple example for a Stroop task (you can edit the code and see what changes).

define(['pipAPI'], function(APIconstructor) { var API = new APIconstructor(); API.addStimulusSets({ red: [ {media:'Red', css:{color:'red'}}, {media:'Blue', css:{color:'red'}} ], blue: [ {media:'Red', css:{color:'blue'}}, {media:'Blue', css:{color:'blue'}} ], error: [ {handle:'error',media:'X', css:{fontSize:'2em',color:'#FF0000'}, location:{bottom:30}} ] }); API.addTrialSets('base',[{ input: [ {handle:'red',on:'keypressed',key:'1'}, {handle:'blue',on:'keypressed',key:'2'} ], layout: [ {media:'1',location:{left:2,top:2},css:{background:'red',padding:'2%',fontSize:'1.5em'}}, {media:'2',location:{right:2,top:2},css:{background:'blue',padding:'2%',fontSize:'1.5em'}}, {media:'Press 1 for red, 2 for blue',location:{bottom:1}} ], interactions: [ { conditions:[{type:'begin'}], actions: [{type:'showStim', handle: 'target'}] }, { conditions: [ {type:'inputEqualsTrial',property:'group'} ], actions: [ {type:'setTrialAttr', setter:{score:1}}, {type:'log'}, {type:'trigger', handle:'ITI'} ] }, { conditions: [ {type:'inputEqualsTrial',property:'group',negate:true}, {type:'inputEquals',value:['red','blue']} ], actions: [ {type:'setTrialAttr', setter:{score:0}}, {type:'log'}, {type:'showStim', handle:'error'}, {type:'removeInput',handle:['red','blue','green']}, {type:'trigger', handle:'ITI', duration:500} ] }, { conditions: [{type:'inputEquals', value:'ITI'}], actions:[ {type:'hideStim',handle:'All'}, {type:'removeInput',handle:['red','blue','green']}, {type:'trigger', handle:'end',duration:500} ] }, { conditions: [{type:'inputEquals', value:'end'}], actions:[ {type:'endTrial'} ] } ] }]); API.addSequence([ { mixer: 'random', data: [ { mixer: 'repeat', times: 5, data: [ { inherit:'base', data: {group:'red'}, stimuli: [ {inherit:{set:'red',type:'exRandom'}, handle:'target'}, {inherit:'error'} ] }, { inherit:'base', data: {group:'blue'}, stimuli: [ {inherit:{set:'blue',type:'exRandom'}, handle:'target'}, {inherit:'error'} ] } ] } ] } ]); // Return script return API.script; });

miManager: studies with multiple tasks

Manager presents a sequence of tasks (mostly, questionnaires, reaction-time tasks, and instruction pages). It supports various mechanisms for randomization, and for selecting tasks based on previous user response and on experimental conditions. Read more.

Below is a "Minno.js playground" with a simple example for a miManager study (you can edit the code and see what changes).

define(['managerAPI'], function(Manager){ var API = new Manager(); API.addSettings('skin','demo'); API.addSequence([ { type:'message', template:'

Click space for examples of a self-esteem questionnaire and a Stroop task

', keys: ' ' }, { type: 'quest', name: 'rosenberg', scriptUrl: 'rosenberg.js' }, { type: 'pip', name: 'stroop', version: '0.3', scriptUrl: 'stroop.js' }, { type:'message', template:'

Click space to finish the study

', keys: ' ' } ]); return API.script; });


In order to use minnojs you need to have a server to save your data. You can of course role a server of your own, but we have a super simple server ready for your use. The code and installation instructions can be found here.

License: Apache 2. © Project Implicit. · Current version [version]