Ages 16–30 months · simple yes/no items · instant score & next steps
⏰ Early support matters: if you have concerns, screening now can help you act sooner.
Important: This is an educational tool inspired by M-CHAT-R™ and not a medical diagnosis. For the official questionnaire, scoring rules, and Follow-Up Interview, visit mchatscreen.com.
M-CHAT-R™ is a trademark of Diana Robins, Deborah Fein, & Marianne Barton. This page does not host the official questionnaire; it provides a simplified educational experience.
Keyboard: press Y for Yes, N for No
Results ready
M-CHAT-R score (educational)
Based on 20 concern prompts
Is this autism test accurate for toddlers?
M-CHAT-R™ is a validated screening tool for 16–30 months. This page provides an educational experience; discuss any positive result with your healthcare provider.
How long does it take?
About 5 minutes to answer brief yes/no questions about typical behavior.
What happens after I complete it?
You’ll see an instant score with clear next steps and links to the official Follow-Up Interview information.
M-CHAT-R™ © 2009 Diana Robins, Deborah Fein & Marianne Barton. For the official questionnaire, scoring rules, translations, and Follow-Up Interview, visit mchatscreen.com.
const el = id => document.getElementById(id); const welcome = el('welcome-screen'); const qScreen = el('question-screen'); const rScreen = el('results-screen'); const pWrap = el('progress-wrap'); const pBar = el('progress-bar'); const pTxt = el('progress-text'); const qCounter = el('q-counter'); const qText = el('q-text'); const finalScore = el('final-score'); const riskLevel = el('risk-level'); const riskExplain = el('risk-explain'); const startBtn = el('start-btn'); const yesBtn = el('yes-btn'); const noBtn = el('no-btn'); const restartBtn = el('restart-btn'); const printBtn = el('print-btn');
let i = 0, score = 0;
function showOnly(which){ welcome.style.display = (which==='welcome')?'block':'none'; qScreen.style.display = (which==='q')?'block':'none'; rScreen.style.display = (which==='r')?'block':'none'; pWrap.style.display = (which==='q')?'block':'none'; }
function updateProgress(){ const done = Math.min(i, QUESTIONS.length); const pct = (done/QUESTIONS.length)*100; pBar.style.width = pct + '%'; pTxt.textContent = done + '/' + QUESTIONS.length; qCounter.textContent = 'Question ' + (done+1) + ' of ' + QUESTIONS.length; }
function renderQuestion(){ if(i >= QUESTIONS.length){ return showResults(); } qText.textContent = QUESTIONS[i].id + '. ' + QUESTIONS[i].text; updateProgress(); }
function answer(isYes){ const q = QUESTIONS[i]; if(q.riskIfYes && isYes) score++; i++; if(i { reset(); showOnly('q'); renderQuestion(); if(typeof gtag!=='undefined'){gtag('event','mchatr_start');} }); yesBtn.addEventListener('click', ()=>answer(true)); noBtn.addEventListener('click', ()=>answer(false)); restartBtn.addEventListener('click', reset); printBtn.addEventListener('click', ()=>window.print());
document.addEventListener('keydown', e=>{ if(qScreen.style.display!=='block') return; if(e.key==='y' || e.key==='Y') answer(true); if(e.key==='n' || e.key==='N') answer(false); });
showOnly('welcome');