Download index.html from getreadystack/dsar-deadline-clock-2026: direct link, hf CLI and curl.
- Browser
- Download file 37.1 kB
-
https://huggingface.co/spaces/getreadystack/dsar-deadline-clock-2026/resolve/main/index.html
- Command line
-
hf download hf://spaces/getreadystack/dsar-deadline-clock-2026/index.html
-
curl -L -o index.html https://huggingface.co/spaces/getreadystack/dsar-deadline-clock-2026/resolve/main/index.html
37.1 kB
| <html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>DSAR Deadline Clock - 9 US State Privacy Laws (2026)</title><meta name="description" content="Type the state and the date the request landed. Get the statutory due date, the extension date, the cure period and the penalty exposure."><style>*{box-sizing:border-box} | |
| :root{color-scheme:light dark} | |
| body{font:14px/1.5 system-ui,-apple-system,"Segoe UI",sans-serif;margin:0;padding:14px;min-width:320px} | |
| h1{font-size:1.05rem;margin:0 0 .2rem} | |
| .sub{opacity:.75;margin:0 0 .9rem;font-size:.86rem} | |
| label{display:block;margin:.55rem 0 .2rem;font-weight:600;font-size:.86rem} | |
| .u{font-weight:400;opacity:.65} | |
| input,select{width:100%;padding:.4rem .5rem;border:1px solid #8886;border-radius:7px; | |
| background:transparent;color:inherit;font:inherit} | |
| input[type=checkbox]{width:auto} | |
| table{border-collapse:collapse;width:100%;margin-top:.9rem;font-size:.9rem} | |
| th,td{border:1px solid #8884;padding:.36rem .5rem;text-align:left} | |
| td.v{font-variant-numeric:tabular-nums;font-weight:600} | |
| .f{border:1px solid #8884;border-radius:9px;padding:9px 11px;margin:.5rem 0;font-size:.87rem} | |
| .buy{margin-top:18px;border:1px solid #8884;border-radius:10px;padding:13px} | |
| .buy a{display:inline-block;margin-top:.5rem;padding:.45rem .9rem;border:1px solid currentColor; | |
| border-radius:8px;text-decoration:none;color:inherit;font-weight:600} | |
| body{max-width:720px;margin-inline:auto;padding:22px}</style><script data-grow-initializer="">!(function(){window.growMe||((window.growMe=function(e){window.growMe._.push(e);}),(window.growMe._=[]));var e=document.createElement("script");(e.type="text/javascript"),(e.src="https://faves.grow.me/main.js"),(e.defer=!0),e.setAttribute("data-grow-faves-site-id","U2l0ZTphZjljMzgyMC0yMmU5LTRhYjgtYTIxNS03OTRhMGY1N2ExYzM=");var t=document.getElementsByTagName("script")[0];t.parentNode.insertBefore(e,t);})();</script> | |
| <!--yj-canon-s101--><link rel="canonical" href="https://getreadystack.com/tools/dsar-deadline-clock-2026"></head><body> | |
| <h1>Consumer data request - statutory deadline</h1> | |
| <p class="sub">Type the state and the date the request landed. Get the statutory due date, the extension date, the cure period and the penalty exposure.</p> | |
| <label for="state">State whose law applies</label><select id="state" data-k="state"><option value="California">California</option><option value="Colorado">Colorado</option><option value="Connecticut">Connecticut</option><option value="Indiana">Indiana</option><option value="Iowa">Iowa</option><option value="Kentucky">Kentucky</option><option value="Texas" selected>Texas</option><option value="Utah">Utah</option><option value="Virginia">Virginia</option></select> | |
| <label for="received_date">Date the request was received</label><input type="date" id="received_date" data-k="received_date" value="2026-07-06"> | |
| <label for="request_type">Request type</label><select id="request_type" data-k="request_type"><option value="Access request" selected>Access request</option><option value="Deletion request">Deletion request</option><option value="Correction request">Correction request</option><option value="Opt-out of sale or targeted advertising">Opt-out of sale or targeted advertising</option><option value="Appeal of a denial">Appeal of a denial</option></select> | |
| <label for="extension_notified">We notified the consumer of an extension</label><input type="checkbox" id="extension_notified" data-k="extension_notified"> | |
| <label for="today">Today</label><input type="date" id="today" data-k="today" value="2026-09-14"> | |
| <label for="open_requests">Open requests you hold from this state <span class="u">requests</span></label><input type="number" id="open_requests" data-k="open_requests" value="34" step="any"> | |
| <label for="intentional_or_minor">Violation would be intentional or involve a minor</label><input type="checkbox" id="intentional_or_minor" data-k="intentional_or_minor"> | |
| <table><tr><th>Respond by</th><td class="v" data-o="respond_by">—</td></tr><tr><th>Days left</th><td class="v" data-o="days_left">—</td><td>days</td></tr><tr><th>Status</th><td class="v" data-o="status">—</td></tr><tr><th>Acknowledge receipt by</th><td class="v" data-o="acknowledge_by">—</td></tr><tr><th>Latest date if you notify of an extension</th><td class="v" data-o="extension_to">—</td></tr><tr><th>Appeal window</th><td class="v" data-o="appeal_window">—</td></tr><tr><th>Cure period</th><td class="v" data-o="cure_period">—</td></tr><tr><th>Statutory maximum</th><td class="v" data-o="penalty_each">—</td></tr><tr><th>Exposure across your open queue</th><td class="v" data-o="exposure_max">—</td></tr></table> | |
| <div class="buy"><b>Overdue in a state where the cure period is gone?</b><br> | |
| A $60 key adds .csv export of your calculated request log and browser reminders that fire before each statutory due date.<br> | |
| $60 once · one licence key per person or team seat · Outside privacy counsel intake review of a single consumer rights request is commonly quoted as a four-figure engagement per matter. | |
| <a href="https://getreadystack.com/api/buy/cl/polar_cl_wbCCEDnBXIpIm6YY7txYhY5ONxhldE2ziCxlZ1QS6ec">Get the full version — $60</a></div> | |
| <div class="f"><b>Per-state response clock</b><br>Iowa gives 90 calendar days, the other eight states give 45 - the tool applies the right window instead of the 45-day rule everyone assumes.</div><div class="f"><b>Request type changes the clock</b><br>A California opt-out of sale or sharing runs on 15 business days, not 45 calendar days, and an appeal of a denial runs its own 45 or 60 day window.</div><div class="f"><b>Cure period status for 2026</b><br>Colorado and Connecticut cure periods have expired and California has none, so in those states the first missed deadline is directly enforceable.</div><div class="f"><b>Per-violation exposure across your queue</b><br>Multiplies the state's statutory maximum per violation by the number of open requests you are holding from that state.</div><div class="f"><b>Deadline reminders and CSV export</b><br>The paid key exports your calculated request log as .csv and schedules a browser reminder ahead of each statutory due date.</div> | |
| <script> | |
| function compute(v){ | |
| var T = { | |
| 'California': {base:45, ext:45, ap:0, cure:0, pen:2663, penx:7988, ack:10, opt:15, eff:'2020-01-01', law:'CCPA/CPRA (Cal. Civ. Code 1798.130)', rule:'45 calendar days plus one 45-day extension; acknowledge within 10 business days; an opt-out of sale or sharing is honored within 15 business days; no cure period'}, | |
| 'Colorado': {base:45, ext:45, ap:45, cure:0, pen:20000, penx:20000,ack:0, opt:0, eff:'2023-07-01', law:'Colorado Privacy Act', rule:'45 calendar days plus one 45-day extension; 45-day appeal window; the 60-day cure period sunsetted on 1 January 2025'}, | |
| 'Connecticut': {base:45, ext:45, ap:60, cure:0, pen:5000, penx:5000, ack:0, opt:0, eff:'2023-07-01', law:'Connecticut Data Privacy Act', rule:'45 calendar days plus one 45-day extension; 60-day appeal window; the mandatory cure period expired on 1 January 2025'}, | |
| 'Indiana': {base:45, ext:45, ap:60, cure:30, pen:7500, penx:7500, ack:0, opt:0, eff:'2026-01-01', law:'Indiana Consumer Data Protection Act', rule:'45 calendar days plus one 45-day extension; 60-day appeal window; permanent 30-day cure period'}, | |
| 'Iowa': {base:90, ext:45, ap:60, cure:90, pen:7500, penx:7500, ack:0, opt:0, eff:'2025-01-01', law:'Iowa Consumer Data Protection Act', rule:'90 calendar days plus one 45-day extension, the longest response window in the country; permanent 90-day cure period'}, | |
| 'Kentucky': {base:45, ext:45, ap:60, cure:30, pen:7500, penx:7500, ack:0, opt:0, eff:'2026-01-01', law:'Kentucky Consumer Data Protection Act', rule:'45 calendar days plus one 45-day extension; 60-day appeal window; permanent 30-day cure period'}, | |
| 'Texas': {base:45, ext:45, ap:60, cure:30, pen:7500, penx:7500, ack:0, opt:0, eff:'2024-07-01', law:'Texas Data Privacy and Security Act', rule:'45 calendar days plus one 45-day extension; 60-day appeal window; permanent 30-day cure period'}, | |
| 'Utah': {base:45, ext:45, ap:0, cure:30, pen:7500, penx:7500, ack:0, opt:0, eff:'2023-12-31', law:'Utah Consumer Privacy Act', rule:'45 calendar days plus one 45-day extension; no appeal process is required; permanent 30-day cure period'}, | |
| 'Virginia': {base:45, ext:45, ap:60, cure:30, pen:7500, penx:7500, ack:0, opt:0, eff:'2023-01-01', law:'Virginia Consumer Data Protection Act', rule:'45 calendar days plus one 45-day extension; 60-day appeal window; permanent 30-day cure period'} | |
| }; | |
| function P(s){ var a = String(s || '').split('-'); | |
| return Date.UTC(parseInt(a[0],10)||2026, (parseInt(a[1],10)||1)-1, parseInt(a[2],10)||1); } | |
| function F(ms){ var d = new Date(ms), m = d.getUTCMonth()+1, y = d.getUTCDate(); | |
| return d.getUTCFullYear() + '-' + (m<10?'0':'') + m + '-' + (y<10?'0':'') + y; } | |
| function ADD(ms, n){ return ms + n*86400000; } | |
| function BIZ(ms, n){ var c = 0, t = ms, w; | |
| while (c < n) { t += 86400000; w = new Date(t).getUTCDay(); if (w !== 0 && w !== 6) c++; } | |
| return t; } | |
| function USD(n){ var s = String(Math.round(n)), o = '', i, k = 0; | |
| for (i = s.length-1; i >= 0; i--) { o = s.charAt(i) + o; k++; if (k%3 === 0 && i > 0) o = ',' + o; } | |
| return '$' + o; } | |
| var st = T[v.state] || T['Texas']; | |
| var rec = P(v.received_date), now = P(v.today); | |
| var type = String(v.request_type || 'Access request'); | |
| var isAppeal = type.indexOf('Appeal') === 0; | |
| var isOptOut = type.indexOf('Opt-out') === 0; | |
| var q = Math.max(1, Math.round(Number(v.open_requests) || 1)); | |
| var dueMs, extAllowed = true, window_txt; | |
| if (isAppeal) { | |
| extAllowed = false; | |
| if (st.ap === 0) { dueMs = null; window_txt = 'no appeal process required'; } | |
| else { dueMs = ADD(rec, st.ap); window_txt = st.ap + ' calendar days (appeal)'; } | |
| } else if (isOptOut && st.opt > 0) { | |
| extAllowed = false; | |
| dueMs = BIZ(rec, st.opt); | |
| window_txt = st.opt + ' business days (opt-out)'; | |
| } else { | |
| dueMs = ADD(rec, st.base); | |
| window_txt = st.base + ' calendar days'; | |
| } | |
| var extMs = (dueMs !== null && extAllowed) ? ADD(dueMs, st.ext) : null; | |
| var useExt = extAllowed && extMs !== null && (v.extension_notified ? true : false); | |
| var eff = (dueMs === null) ? null : (useExt ? extMs : dueMs); | |
| var left = (eff === null) ? 0 : Math.round((eff - now)/86400000); | |
| var status, respond_by; | |
| if (eff === null) { status = 'No statutory clock - ' + v.state + ' requires no appeal process'; | |
| respond_by = 'Not applicable in ' + v.state; } | |
| else { respond_by = F(eff) + ' (' + window_txt + (useExt ? ' + ' + st.ext + '-day extension' : '') + ')'; | |
| status = (left >= 0) ? ('ON TIME - ' + left + ' days left') | |
| : ('OVERDUE by ' + (-left) + ' days'); } | |
| var pen = (v.intentional_or_minor ? st.penx : st.pen); | |
| return { | |
| respond_by: respond_by, | |
| days_left: left, | |
| status: status, | |
| acknowledge_by: (st.ack > 0) ? (F(BIZ(rec, st.ack)) + ' (' + st.ack + ' business days)') | |
| : ('Not required in ' + v.state), | |
| extension_to: (extMs === null) ? 'No extension available for this request type' : F(extMs), | |
| appeal_window: (st.ap > 0) ? (st.ap + ' days to answer an appeal of a denial') | |
| : ('No appeal process required in ' + v.state), | |
| cure_period: (st.cure > 0) ? (st.cure + '-day cure period - you can still fix it') | |
| : 'No cure period - the first miss is enforceable', | |
| penalty_each: USD(pen) + ' per violation', | |
| exposure_max: USD(pen * q) + ' across ' + q + ' open request' + (q === 1 ? '' : 's'), | |
| basis: st.law + ', effective ' + st.eff + '. ' + st.rule + '.' | |
| }; | |
| } | |
| </script><script>(function(){ | |
| function read(){var v={};document.querySelectorAll('[data-k]').forEach(function(el){ | |
| var k=el.dataset.k;v[k]=el.type==='checkbox'?el.checked:(el.type==='number'?parseFloat(el.value):el.value);}); | |
| return v;} | |
| function paint(){var r={};try{r=compute(read())||{};}catch(e){r={};} | |
| document.querySelectorAll('[data-o]').forEach(function(el){ | |
| var x=r[el.dataset.o];el.textContent=(x===undefined||x===null)?'\u2014':String(x);});} | |
| document.addEventListener('input',paint);document.addEventListener('change',paint);paint(); | |
| })();</script> | |
| <section data-yj-install="free" style="margin:2rem auto 1rem;max-width:46rem;padding:1.25rem 1.25rem;border:1px solid #cfe3d6;border-radius:12px;background:#f6fbf8;font:16px/1.6 system-ui,-apple-system,Segoe UI,sans-serif"><h2 style="margin:0 0 .4rem;font-size:1.2rem">Install free</h2><p style="margin:0 0 .8rem;color:#41505f">Free for the file open in your editor - no key, no limit. The workspace sweep and the report ask for a key.</p><a href="https://addons.mozilla.org/firefox/addon/dsar-deadline-clock-9-us-state/" rel="noopener" data-yj-install-door="firefox" onclick="try{navigator.sendBeacon('/api/ev',new Blob([JSON.stringify({t:'install',slug:'dsar-deadline-clock-2026',src:'firefox',path:location.pathname})],{type:'application/json'}))}catch(e){}" style="display:inline-block;margin:0 .5rem .5rem 0;padding:.6rem 1rem;border-radius:8px;background:#0f7b3f;color:#fff;text-decoration:none;font-weight:600">Firefox Add-ons</a></section> | |
| <section data-yj-alert="rule" style="margin:1rem auto 1.5rem;max-width:46rem;padding:1.1rem 1.25rem;border:1px solid #d9dee6;border-radius:12px;background:#fbfcfd;font:15px/1.55 system-ui,-apple-system,Segoe UI,sans-serif"><b style="font-size:1.05rem">Get one email when this rule changes</b><div style="opacity:.78;margin:.35rem 0 .8rem">We watch the regulation and vendor sources behind DSAR Deadline Clock - 9 US State Privacy Laws (2026) every day. When a rule changes, you get a single email with what changed and the updated check. No newsletter.</div><div style="display:flex;gap:8px;flex-wrap:wrap"><input id="yjae" type="email" placeholder="you@example.com" style="flex:1;min-width:210px;padding:11px 13px;border:1px solid rgba(140,150,165,.34);border-radius:8px;background:#fff;color:inherit"><button id="yjab" style="padding:11px 18px;border-radius:8px;border:0;cursor:pointer;background:#0f7b3f;color:#fff;font:600 15px system-ui,sans-serif">Notify me</button></div><div id="yjao" hidden style="margin-top:.6rem;color:#0f7b3f">You're on the list. One email when it changes.</div><script>(function(){var b=document.getElementById("yjab"),e=document.getElementById("yjae");if(!b||!e)return;b.addEventListener("click",function(){var v=e.value.trim();if(!/.+@.+\..+/.test(v))return;try{localStorage.setItem("yj_em","1");}catch(_){}fetch(location.origin+"/api/subscribe",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({email:v,slug:"dsar-deadline-clock-2026",lang:"en",source:"rule_alert"+((b.closest&&b.closest("section")&&b.closest("section").getAttribute("data-yj-moved"))?"_at_result":"")})}).then(function(r){var o=document.getElementById("yjao");o.hidden=false;if(!r.ok){o.textContent="Could not save - please try again.";}}).catch(function(){var o=document.getElementById("yjao");o.hidden=false;o.textContent="Could not save - please try again.";});});})();</script><script>(function(){var e=document.getElementById("yjae"),s=e&&e.closest?e.closest("section"):null,o=document.getElementById("out");if(!s||!o)return;var d=false;function mv(ev){if(d)return;if(ev&&ev.target&&s.contains(ev.target))return;d=true;var b=o;while(b.parentNode&&b.parentNode!==document.body&&b.parentNode.tagName!=="MAIN"&&b.parentNode.tagName!=="ARTICLE")b=b.parentNode;if(!b.parentNode||b===s||b.contains(s))return;try{b.parentNode.insertBefore(s,b.nextSibling);s.setAttribute("data-yj-moved","1");}catch(_){}}document.addEventListener("input",mv,true);document.addEventListener("change",mv,true);})();</script></section> | |
| <section data-yj-cta="paid" style="margin:3rem auto;max-width:46rem;padding:1.5rem 1.25rem;border:1px solid #d8dee9;border-radius:12px;background:#fbfcfe;font:16px/1.6 system-ui,-apple-system,Segoe UI,sans-serif"><h2 style="margin:0 0 .5rem;font-size:1.25rem">Get the complete version <span class="yj-price">$60</span></h2><p style="margin:.25rem 0 1rem;color:#41505f">This page is the working piece. The full pack has everything below.</p><p style="margin:0 0 1rem;color:#41505f">Type the state and the date the request landed. Get the statutory due date, the extension date, the cure period and the penalty exposure.</p><p style="margin:0 0 1rem;color:#5b6b7c;font-size:.94rem">Outside privacy counsel intake review of a single consumer rights request is commonly quoted as a four-figure engagement per matter.</p><a href="https://getreadystack.com/api/buy/cl/polar_cl_wbCCEDnBXIpIm6YY7txYhY5ONxhldE2ziCxlZ1QS6ec" rel="nofollow" style="display:inline-block;padding:.7rem 1.3rem;border-radius:8px;background:#1b64f2;color:#fff;text-decoration:none;font-weight:600">Buy the full version — $60</a></section> | |
| <!--yj-share-s101--><div style="margin:28px 0 8px;text-align:center"><button id="yjcp" type="button" style="font:inherit;padding:10px 18px;border:1px solid #8884;border-radius:10px;background:transparent;cursor:pointer">Copy link</button></div><script>(function(){var b=document.getElementById("yjcp");if(!b)return;var t=b.textContent;b.addEventListener("click",function(){var u=location.href.split("#")[0];function d(){b.textContent="Link copied";setTimeout(function(){b.textContent=t;},1800);}if(navigator.clipboard&&navigator.clipboard.writeText){navigator.clipboard.writeText(u).then(d,function(){prompt("",u);});}else{prompt("",u);}});})();</script><div class="yj-home-find"><div class="yj-lgbar"><a href="/" class="yj-lg on">EN</a><a href="/de/" class="yj-lg">DE</a><a href="/ja/" class="yj-lg">JA</a><a href="/es/" class="yj-lg">ES</a><a href="/pt/" class="yj-lg">PT</a></div><section class="yj-find"><h2>Find a tool</h2><input id="yjq" type="search" autocomplete="off" placeholder="Type a product name, format or task"><div id="yjr"></div></section><style>.yj-lgbar{position:absolute;top:14px;right:18px;display:flex;gap:6px;z-index:60}.yj-lg{font:600 12px/1 system-ui,sans-serif;padding:6px 9px;border-radius:4px;text-decoration:none;color:#8b96a3;border:1px solid rgba(140,150,165,.28)}.yj-lg:hover{color:#e8eaed;border-color:rgba(160,175,195,.6)}.yj-lg.on{color:#0e1116;background:#cfd6de;border-color:#cfd6de}.yj-find{max-width:760px;margin:34px auto 8px;padding:0 20px}.yj-find h2{font:600 20px/1.3 system-ui,sans-serif;margin:0 0 10px}#yjq{width:100%;box-sizing:border-box;padding:13px 15px;font:400 15.5px system-ui,sans-serif;border:1px solid rgba(140,150,165,.34);border-radius:8px;background:rgba(255,255,255,.04);color:inherit}#yjq:focus{outline:none;border-color:#7FD1C4}#yjr{margin-top:10px;display:flex;flex-direction:column;gap:6px}#yjr a{display:flex;justify-content:space-between;gap:12px;padding:11px 14px;border:1px solid rgba(140,150,165,.22);border-radius:6px;text-decoration:none;font:400 14.5px/1.4 system-ui,sans-serif;color:inherit}#yjr a:hover{border-color:#7FD1C4}#yjr .pr{font:600 13px system-ui,sans-serif;color:#5fbf9a;white-space:nowrap}</style><script>(function(){var q=document.getElementById("yjq"),r=document.getElementById("yjr"),D=null;function load(){if(D)return Promise.resolve(D);return fetch("/search-index.json").then(function(x){return x.json();}).then(function(j){D=j;return j;}).catch(function(){D=[];return D;});}function esc(t){return String(t).replace(/[&<>"]/g,function(c){return {"&":"&","<":"<",">":">",'"':"""}[c];});}function run(){var v=q.value.trim().toLowerCase();if(v.length<2){r.innerHTML="";return;}load().then(function(j){var w=v.split(/\s+/),o=[];for(var i=0;i<j.length&&o.length<12;i++){var t=j[i].t.toLowerCase();var ok=true;for(var k=0;k<w.length;k++){if(t.indexOf(w[k])<0){ok=false;break;}}if(ok)o.push(j[i]);}r.innerHTML=o.length?o.map(function(x){return "<a href=\""+esc(x.u)+"\">"+"<span>"+esc(x.t)+"</span>"+(x.p?"<span class=\"pr\">$"+x.p+"</span>":"")+"</a>";}).join(""):"";});}q.addEventListener("input",run);q.addEventListener("focus",load);})();</script></div> | |
| <script data-yj="yj-view-beacon">(function(){try{var p=location.pathname;var k='yjv:'+p;if(sessionStorage.getItem(k))return;sessionStorage.setItem(k,'1');fetch('/api/ev',{method:'POST',keepalive:true,headers:{'Content-Type':'application/json'},body:JSON.stringify({path:p,lang:"en",ref:(document.referrer||''),src:(function(){try{return (new URLSearchParams(location.search).get('ref')||'').replace(/[^a-z_]/g,'').slice(0,12)}catch(e){return ''}})()})}).catch(function(){});}catch(e){}})();</script> | |
| <script data-yj="yj-use-beacon v2">(function(){try{var r=document.querySelector('main')||document.body;var p=location.pathname,k='yju:'+p,sent=false,armed=false;function ours(el){return !!(el&&el.closest&&el.closest('[data-yj],[data-yj-cta],.yj-email-gate,.yj-find,.yj-related,#yj-ask,#yjgo,#yjr'));}function fire(){if(sent||!armed||sessionStorage.getItem(k))return;sent=true;sessionStorage.setItem(k,'1');fetch('/api/ev',{method:'POST',keepalive:true,headers:{'Content-Type':'application/json'},body:JSON.stringify({path:p,lang:"en",t:'use',src:(function(){try{return (new URLSearchParams(location.search).get('ref')||'').replace(/[^a-z_]/g,'').slice(0,12)}catch(e){return ''}})()})}).catch(function(){});}r.addEventListener('click',function(e){var b=e.target&&e.target.closest?e.target.closest('button,input[type=submit],[role=button]'):null;if(!b||ours(b))return;armed=true;setTimeout(fire,400);},true);r.addEventListener('input',function(e){if(!ours(e.target))armed=true;},true);var mo=new MutationObserver(function(){if(armed){fire();if(sent)mo.disconnect();}});mo.observe(r,{childList:true,characterData:true,subtree:true});}catch(e){}})();</script> | |
| <section data-yj="yj-facts-v1" style="max-width:920px;margin:48px auto 0;padding:0 20px;font-family:system-ui,sans-serif"><style>.yj-article p{font:400 15.5px/1.7 system-ui,sans-serif;color:#26313b;margin:0 0 12px;max-width:72ch}.yj-article h2,.yj-article h3,.yj-article h4{font:600 17px/1.35 system-ui,sans-serif;color:#1b1f24;margin:22px 0 8px}.yj-article table{border-collapse:collapse;margin:10px 0 16px;font:14px/1.45 system-ui,sans-serif}.yj-article th,.yj-article td{border:1px solid #e2e6ea;padding:6px 10px;text-align:left}.yj-article th{background:#f4f6f8}.yj-article pre{background:#0f1720;color:#e6edf3;padding:12px 14px;border-radius:8px;overflow:auto;font:13px/1.5 ui-monospace,Menlo,monospace}.yj-article code{font:13px ui-monospace,Menlo,monospace;background:#f1f3f5;padding:1px 4px;border-radius:3px}.yj-article pre code{background:none;padding:0}.yj-article ul,.yj-article ol{font:15px/1.6 system-ui,sans-serif;color:#26313b}</style><p style="font:400 13px/1.5 system-ui,sans-serif;color:#6b7680;margin:0 0 14px"><time datetime="2026-09-17">Updated 2026-09-17</time> · ReadyStack</p><script type="application/ld+json">{"@context":"https://schema.org","@type":"WebPage","dateModified":"2026-09-17","author":{"@type":"Organization","name":"ReadyStack"}}</script><h2 style="font:600 21px/1.3 system-ui,sans-serif;margin:0 0 6px;color:#1b1f24">Worked example</h2><p style="font:400 14.5px/1.5 system-ui,sans-serif;margin:0 0 16px;color:#5b6570">Real numbers from this tool, line by line.</p><div class="yj-article"><p><img src="https://getreadystack.com/img/promo/sku63067_result_card.jpg" alt="DSAR Deadline Clock - 9 US State Privacy Laws (2026)" loading="lazy" style="max-width:100%;border-radius:6px"></p> | |
| <p>255000 dollars of statutory exposure is sitting in one Texas queue - US privacy ops managers and in-house counsel, 25 days past the deadline. This is the tool's own output for a Texas access request received 6 July, read on 14 September, with 34 open Texas requests:</p> | |
| <p>Respond by: 2026-08-20 (45 calendar days) Days left: -25 Status: OVERDUE by 25 days Acknowledge receipt by: Not required in Texas Latest date if you notify of an extension: 2026-10-04 Appeal window: 60 days to answer an appeal of a denial Cure period: 30-day cure period - you can still fix it Statutory maximum: 7500 dollars per violation Exposure across your open queue: 255000 dollars across 34 open requests</p> | |
| <p>Change one field - the state - to Iowa, and the same request on the same date reads ON TIME, 20 days left, respond by 2026-10-04. Same consumer, same postmark, same privacy team, a 45-day gap between the two answers. If you log consumer data requests in a spreadsheet, that gap is the whole job.</p> | |
| <p>Nine US state privacy laws are live in this tool: California, Colorado, Connecticut, Indiana, Iowa, Kentucky, Texas, Utah and Virginia. Eight give 45 calendar days to respond, extendable once by 45 more when you notify the consumer. Iowa gives 90 calendar days plus the same 45-day extension - the longest response window in the country. Indiana and Kentucky took effect 1 January 2026; Iowa allows 90 days to respond where Texas allows 45.</p> | |
| <p>The request type moves the clock too, and this is where a general-purpose chatbot is confidently wrong. A California opt-out of sale or targeted advertising does not run on 45 calendar days. It runs on 15 business days, so the 6 July request above was due on 27 July, not in mid-August. California is also the only one of the nine that makes you acknowledge receipt inside 10 business days. And an appeal of a denial is not a continuation of the original clock: it starts a fresh window, 45 days in Colorado and 60 days in the Virginia-model states.</p> | |
| <p>The third variable is the one privacy teams lean on when they are late: the cure period. Texas, Virginia, Indiana, Kentucky and Utah keep a permanent 30-day cure period. Iowa has the longest anywhere at 90 days. But the Colorado cure period sunsetted on 1 January 2025, the Connecticut mandatory cure expired at the same time, and California has had no cure period since the CPRA removed it. In those three states the first missed deadline is directly enforceable.</p> | |
| <p>Then the money. Each state carries its own statutory maximum per violation: 7500 dollars in Texas, Virginia, Indiana, Iowa, Kentucky and Utah; 20000 dollars in Colorado; 5000 dollars in Connecticut; and in California 2663 dollars, rising to 7988 dollars where the violation is intentional or involves a minor. The tool multiplies that maximum by the open requests you hold from that state. 34 open Texas requests at 7500 dollars each is the 255000 dollar ceiling in the block above - one number, from two fields you already know.</p> | |
| <p>Seven inputs produce the nine outputs printed above, with no account and no upload: state, date received, request type, extension notified, today, open requests from that state, and whether the violation would be intentional or involve a minor. Nothing you type leaves the browser - the only outbound call the extension ever makes is licence key validation.</p> | |
| <p>All of that is free forever - nine states, five request types, no key, no cap, no watermark, no locked answer. The $60 key sits on a different axis: it exports your calculated request log as a .csv you own, and schedules browser reminders ahead of each due date, so the clock chases you instead of you chasing it. Outside privacy counsel intake review of a single consumer rights request is commonly quoted as a four-figure engagement per matter. Seven-day full refund.</p></div><h2 style="font:600 21px/1.3 system-ui,sans-serif;margin:34px 0 6px;color:#1b1f24">Questions people ask</h2><details style="border-bottom:1px solid #e6e9ed;padding:10px 0"><summary style="cursor:pointer;font:600 15px/1.4 system-ui,sans-serif;color:#1b1f24">What does the DSAR Deadline Clock actually do?</summary><p style="margin:8px 0 2px;font:400 14.5px/1.6 system-ui,sans-serif;color:#33404b">You enter the state, the date the request arrived and the request type. It returns the statutory response date, the acknowledgement date where one is required, the latest date an extension can buy you, the appeal window, whether a cure period still exists in that state, and the statutory maximum per violation across your open queue.</p></details><details style="border-bottom:1px solid #e6e9ed;padding:10px 0"><summary style="cursor:pointer;font:600 15px/1.4 system-ui,sans-serif;color:#1b1f24">Who is this for?</summary><p style="margin:8px 0 2px;font:400 14.5px/1.6 system-ui,sans-serif;color:#33404b">Privacy ops staff, compliance managers and in-house counsel at US companies that receive consumer data requests and track them in a spreadsheet rather than a six-figure privacy platform. It is built for the person who has to answer a Texas request and an Iowa request in the same week and cannot mix up the two clocks.</p></details><details style="border-bottom:1px solid #e6e9ed;padding:10px 0"><summary style="cursor:pointer;font:600 15px/1.4 system-ui,sans-serif;color:#1b1f24">Why not just ask a chatbot or use a free deadline table?</summary><p style="margin:8px 0 2px;font:400 14.5px/1.6 system-ui,sans-serif;color:#33404b">Because the windows moved and the tables did not. Indiana and Kentucky took effect 1 January 2026; Iowa allows 90 days to respond where Texas allows 45. A general model answers 45 days for every state and misses that California opt-outs run on 15 business days, that Colorado and Connecticut cure periods have expired, and that appeals start their own clock.</p></details><details style="border-bottom:1px solid #e6e9ed;padding:10px 0"><summary style="cursor:pointer;font:600 15px/1.4 system-ui,sans-serif;color:#1b1f24">What is free and what does the key add?</summary><p style="margin:8px 0 2px;font:400 14.5px/1.6 system-ui,sans-serif;color:#33404b">Every calculation is free forever: all 9 states, all 5 request types, extension dates, cure status and exposure, with no key, no cap and no watermark. The $60 key adds two things on a different axis: .csv export of your calculated request log, and browser reminders scheduled ahead of each statutory due date.</p></details><details style="border-bottom:1px solid #e6e9ed;padding:10px 0"><summary style="cursor:pointer;font:600 15px/1.4 system-ui,sans-serif;color:#1b1f24">What would this cost done by a person?</summary><p style="margin:8px 0 2px;font:400 14.5px/1.6 system-ui,sans-serif;color:#33404b">Outside privacy counsel intake review of a single consumer rights request is commonly quoted as a four-figure engagement per matter, and privacy request management platforms are sold as annual seats. This is a one-time twenty-nine dollar key on top of a calculator that stays free.</p></details><script type="application/ld+json" data-yj="yj-faq-ld">{"@context": "https://schema.org", "@type": "FAQPage", "mainEntity": [{"@type": "Question", "name": "What does the DSAR Deadline Clock actually do?", "acceptedAnswer": {"@type": "Answer", "text": "You enter the state, the date the request arrived and the request type. It returns the statutory response date, the acknowledgement date where one is required, the latest date an extension can buy you, the appeal window, whether a cure period still exists in that state, and the statutory maximum per violation across your open queue."}}, {"@type": "Question", "name": "Who is this for?", "acceptedAnswer": {"@type": "Answer", "text": "Privacy ops staff, compliance managers and in-house counsel at US companies that receive consumer data requests and track them in a spreadsheet rather than a six-figure privacy platform. It is built for the person who has to answer a Texas request and an Iowa request in the same week and cannot mix up the two clocks."}}, {"@type": "Question", "name": "Why not just ask a chatbot or use a free deadline table?", "acceptedAnswer": {"@type": "Answer", "text": "Because the windows moved and the tables did not. Indiana and Kentucky took effect 1 January 2026; Iowa allows 90 days to respond where Texas allows 45. A general model answers 45 days for every state and misses that California opt-outs run on 15 business days, that Colorado and Connecticut cure periods have expired, and that appeals start their own clock."}}, {"@type": "Question", "name": "What is free and what does the key add?", "acceptedAnswer": {"@type": "Answer", "text": "Every calculation is free forever: all 9 states, all 5 request types, extension dates, cure status and exposure, with no key, no cap and no watermark. The $60 key adds two things on a different axis: .csv export of your calculated request log, and browser reminders scheduled ahead of each statutory due date."}}, {"@type": "Question", "name": "What would this cost done by a person?", "acceptedAnswer": {"@type": "Answer", "text": "Outside privacy counsel intake review of a single consumer rights request is commonly quoted as a four-figure engagement per matter, and privacy request management platforms are sold as annual seats. This is a one-time twenty-nine dollar key on top of a calculator that stays free."}}]}</script><div id="yj-ask" style="margin:36px 0 0;padding:18px 18px 16px;border:1px solid #e2e6ea;border-radius:10px;background:#fbfbfc"><h2 style="font:600 19px/1.3 system-ui,sans-serif;margin:0 0 4px;color:#1b1f24">Ask about this tool</h2><p style="font:400 13.5px/1.5 system-ui,sans-serif;margin:0 0 12px;color:#5b6570">One question, answered by the person who built it. Your email only if you want the answer sent.</p><form onsubmit="return yjAsk(event)" style="display:grid;gap:8px"><textarea name="question" required minlength="10" maxlength="2000" rows="3" placeholder="Your question" style="font:14px/1.5 system-ui,sans-serif;padding:10px;border:1px solid #cfd6dd;border-radius:6px"></textarea><div style="display:flex;gap:8px;flex-wrap:wrap"><input type="email" name="email" placeholder="Email (optional)" style="flex:1;min-width:200px;font:14px system-ui,sans-serif;padding:9px 10px;border:1px solid #cfd6dd;border-radius:6px"><button type="submit" style="font:600 14px system-ui,sans-serif;padding:9px 18px;border:0;border-radius:6px;background:#1b1f24;color:#fff;cursor:pointer">Send</button></div><p id="yj-ask-msg" style="font:13px system-ui,sans-serif;margin:2px 0 0;color:#0a6238;min-height:1em"></p></form><script>function yjAsk(e){e.preventDefault();var f=e.target,m=document.getElementById("yj-ask-msg");m.style.color="#0a6238";fetch(location.origin+"/api/ask",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({sku:63067,slug:"dsar-deadline-clock-2026",lang:"en",question:f.question.value,email:f.email.value,page:location.pathname})}).then(function(r){if(!r.ok)throw 0;m.textContent="Thanks \u2014 noted. Answers land on this page and, if you left an email, in your inbox.";f.question.value="";}).catch(function(){m.style.color="#a8551f";m.textContent="Could not send. Please try again in a minute.";});return false;}</script></div></section><section class="yj-related" style="max-width:920px;margin:56px auto 40px;padding:0 20px"><h2 style="font:600 21px/1.3 system-ui,sans-serif;margin:0 0 6px;color:#1b1f24">Same job, next tool</h2><p style="font:400 14.5px/1.5 system-ui,sans-serif;margin:0 0 20px;color:#5b6570">Free in the browser. The full version is a one-time licence.</p><div style="display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:14px"><a class="yj-rel-c" href="https://getreadystack.com/tools/us-state-privacy-scope-2026"><span class="yj-rel-t">US State Privacy Scope & Cure Clock 2026</span><span class="yj-rel-p">$60</span></a><a class="yj-rel-c" href="https://getreadystack.com/tools/companies-house-idv-deadline-2026"><span class="yj-rel-t">Companies House ID Verification Deadline Checker (UK, 2026)</span><span class="yj-rel-p">$60</span></a><a class="yj-rel-c" href="https://getreadystack.com/tools/dac7-deadline-penalty-clock"><span class="yj-rel-t">DAC7 Deadline & Penalty Clock 2026</span><span class="yj-rel-p">$60</span></a><a class="yj-rel-c" href="https://getreadystack.com/tools/membership-wordpress-plugin"><span class="yj-rel-t">Membership Plugin for WordPress: 20-Type Member & Data-Request Desk for Clubs,</span><span class="yj-rel-p">$60</span></a><a class="yj-rel-c" href="https://getreadystack.com/tools/optout-signal-lint"><span class="yj-rel-t">Opt-Out Signal Lint for US State Privacy Laws</span><span class="yj-rel-p">$29</span></a><a class="yj-rel-c" href="https://getreadystack.com/tools/personal-data-map-dsar-audit"><span class="yj-rel-t">Personal Data Map: find every column a GDPR subject access request has to reac</span><span class="yj-rel-p">$29</span></a></div><style>.yj-rel-c{display:flex;flex-direction:column;gap:8px;padding:15px 16px;border:1px solid #e2e6ea;border-radius:6px;text-decoration:none;background:#fff}.yj-rel-c:hover{border-color:#b9c2cb;background:#fafbfc}.yj-rel-t{font:500 14.5px/1.42 system-ui,sans-serif;color:#1b1f24}.yj-rel-p{font:600 13px system-ui,sans-serif;color:#0a6238}</style></section> | |
| <script src="/assets/pro.js" defer></script> | |
| </body></html> |