1<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/assets/styles-C_rdrsyA.css" data-precedence="default"/><title>Create your account â Unmarked</title><meta name="description" content="Inspect and clean hidden Unicode, document metadata, and AI text fingerprints with Unmarked and its open-source CLI."/><meta name="theme-color" content="oklch(0.15 0.004 80)" media="(prefers-color-scheme: dark)"/><meta name="color-scheme" content="light dark"/><meta name="robots" content="noindex, nofollow"/><link rel="modulepreload" href="/assets/index-C8-ZIQyQ.js"/><link rel="modulepreload" href="/assets/auth-client-ickpR1pV.js"/><link rel="modulepreload" href="/assets/createServerFn-CPYqd4-K.js"/><link rel="modulepreload" href="/assets/preload-helper-2h3vyDkg.js"/><link rel="modulepreload" href="/assets/account-CtI9H9SJ.js"/><link rel="modulepreload" href="/assets/auth-return-to-BUenVqoq.js"/><link rel="modulepreload" href="/assets/sign-up-DLoyyU4W.js"/><link rel="modulepreload" href="/assets/SiteHeader-22sRHYR1.js"/><link rel="modulepreload" href="/assets/AuthForm-BZxwRQMR.js"/><link rel="icon" href="/favicon-32.png" sizes="32x32" type="image/png"/><link rel="icon" href="/favicon-64.png" sizes="64x64" type="image/png"/><link rel="apple-touch-icon" href="/apple-touch-icon.png" sizes="180x180"/><link rel="manifest" href="/site.webmanifest"/>
1<script>(function () { 2 var mq = window.matchMedia('(prefers-color-scheme: dark)'); 3 var apply = function () { 4 document.documentElement.classList.toggle('dark', mq.matches); 5 }; 6 apply(); 7 mq.addEventListener('change', apply); 8})();</script>
8<script type="application/ld+json">{"@context":"https://schema.org","@type":"SoftwareApplication","name":"Unmarked","applicationCategory":"DeveloperApplication","operatingSystem":"macOS, Linux, Windows","url":"https://tryunmarked.com/","codeRepository":"https://github.com/adventuretime1/unmarked","description":"Open-source tools to inspect and clean recognized hidden Unicode, attachment metadata, and generation-time statistical patterns in AI-assisted content.","offers":{"@type":"Offer","price":"0","priceCurrency":"USD"}}</script>
8</head><body><!--$--><div style="min-height:100vh;background:var(--surface-canvas)"><header class="site-header"><div class="u-wrap site-header__inner"><a href="/" style="color:var(--text-primary)" class="wordmark"><svg class="um-mascot wordmark__mascot text-brand" width="24" height="24" viewBox="9 3 46 50" fill="none" aria-hidden="true"><defs><linearGradient id="um-body-_R_ala_" x1="0" y1="0" x2="0.35" y2="1"><stop offset="0%" stop-color="white" stop-opacity="0.28"></stop><stop offset="45%" stop-color="white" stop-opacity="0.06"></stop><stop offset="100%" stop-color="black" stop-opacity="0.12"></stop></linearGradient><radialGradient id="um-glow-_R_ala_" cx="0.5" cy="0.55" r="0.5"><stop offset="0%" stop-color="currentColor" stop-opacity="0.22"></stop><stop offset="100%" stop-color="currentColor" stop-opacity="0"></stop></radialGradient></defs><ellipse class="um-mascot__glow" cx="32" cy="28" rx="22" ry="22" fill="url(#um-glow-_R_ala_)"></ellipse><g class="um-mascot__float"><path class="um-mascot__body" d="M14 44V24a18 18 0 0 1 36 0V44Q52 48 47 47Q43.25 52 39.5 47Q35.75 52 32 47Q28.25 52 24.5 47Q20.75 52 17 47Q12 48 14 44z" fill="currentColor" stroke="var(--mascot-outline)" stroke-width="calc(var(--mascot-outline-width) * 1.35)" stroke-linejoin="round" stroke-linecap="round"></path><path d="M14 44V24a18 18 0 0 1 36 0V44Q52 48 47 47Q43.25 52 39.5 47Q35.75 52 32 47Q28.25 52 24.5 47Q20.75 52 17 47Q12 48 14 44z" fill="url(#um-body-_R_ala_)" class="um-mascot__shade"></path><g class="um-mascot__face"><circle class="um-mascot__eye" cx="25" cy="28" r="3.2" fill="var(--surface-canvas)" stroke="var(--mascot-outline)" stroke-width="calc(var(--mascot-outline-width) * 1.35)"></circle><circle class="um-mascot__eye" cx="39" cy="28" r="3.2" fill="var(--surface-canvas)" stroke="var(--mascot-outline)" stroke-width="calc(var(--mascot-outline-width) * 1.35)"></circle></g></g></svg>unmarked</a></div></header><div class="auth-shell"><div class="account-flash account-flash--ok">Unmarked Pro includes about 375,000 words every month. No card required.</div><div class="auth-card panel-frame"><div class="panel-frame__inner" style="padding:var(--space-9)"><svg class="um-mascot auth-mascot" width="40" height="40" viewBox="9 3 46 50" fill="none" aria-hidden="true"><defs><linearGradient id="um-body-_R_1kla_" x1="0" y1="0" x2="0.35" y2="1"><stop offset="0%" stop-color="white" stop-opacity="0.28"></stop><stop offset="45%" stop-color="white" stop-opacity="0.06"></stop><stop offset="100%" stop-color="black" stop-opacity="0.12"></stop></linearGradient><radialGradient id="um-glow-_R_1kla_" cx="0.5" cy="0.55" r="0.5"><stop offset="0%" stop-color="currentColor" stop-opacity="0.22"></stop><stop offset="100%" stop-color="currentColor" stop-opacity="0"></stop></radialGradient></defs><ellipse class="um-mascot__glow" cx="32" cy="28" rx="22" ry="22" fill="url(#um-glow-_R_1kla_)"></ellipse><g class="um-mascot__float"><path class="um-mascot__body" d="M14 44V24a18 18 0 0 1 36 0V44Q52 48 47 47Q43.25 52 39.5 47Q35.75 52 32 47Q28.25 52 24.5 47Q20.75 52 17 47Q12 48 14 44z" fill="currentColor" stroke="var(--mascot-outline)" stroke-width="calc(var(--mascot-outline-width) * 1)" stroke-linejoin="round" stroke-linecap="round"></path><path d="M14 44V24a18 18 0 0 1 36 0V44Q52 48 47 47Q43.25 52 39.5 47Q35.75 52 32 47Q28.25 52 24.5 47Q20.75 52 17 47Q12 48 14 44z" fill="url(#um-body-_R_1kla_)" class="um-mascot__shade"></path><g class="um-mascot__face"><circle class="um-mascot__eye" cx="25" cy="28" r="3.2" fill="var(--surface-canvas)" stroke="var(--mascot-outline)" stroke-width="calc(var(--mascot-outline-width) * 1)"></circle><circle class="um-mascot__eye" cx="39" cy="28" r="3.2" fill="var(--surface-canvas)" stroke="var(--mascot-outline)" stroke-width="calc(var(--mascot-outline-width) * 1)"></circle></g></g></svg><h1 class="auth-title">Create your account</h1><p class="auth-sub">Deep clean removes model-level fingerprints with your own model.</p><div class="auth-social"><button class="btn btn--lg btn--outline" disabled="" style="width:100%"><svg width="18" height="18" viewBox="0 0 48 48" aria-hidden="true" focusable="false" style="display:block;flex:0 0 auto"><path fill="#EA4335" d="M24 9.5c3.54 0 6.71 1.22 9.21 3.6l6.85-6.85C35.9 2.38 30.47 0 24 0 14.62 0 6.51 5.38 2.56 13.22l7.98 6.19C12.43 13.72 17.74 9.5 24 9.5z"></path><path fill="#4285F4" d="M46.98 24.55c0-1.57-.15-3.09-.38-4.55H24v9.02h12.94c-.58 2.96-2.26 5.48-4.78 7.18l7.73 6c4.51-4.18 7.09-10.36 7.09-17.65z"></path><path fill="#FBBC05" d="M10.53 28.59c-.48-1.45-.76-2.99-.76-4.59s.27-3.14.76-4.59l-7.98-6.19C.92 16.46 0 20.12 0 24c0 3.88.92 7.54 2.56 10.78l7.97-6.19z"></path><path fill="#34A853" d="M24 48c6.48 0 11.93-2.13 15.89-5.81l-7.73-6c-2.15 1.45-4.92 2.3-8.16 2.3-6.26 0-11.57-4.22-13.47-9.91l-7.98 6.19C6.51 42.62 14.62 48 24 48z"></path></svg>Continue with Google</button><div class="auth-divider"><span>or</span></div></div><form class="auth-form" noValidate=""><label class="auth-field"><span class="field__label">
8Name</span><input class="auth-input" autoComplete="name" value=""/></label><label class="auth-field"><span class="field__label">Email</span><input class="auth-input" type="email" required="" autoComplete="email" value=""/></label><label class="auth-field"><span class="field__label">Password</span><input class="auth-input" type="password" required="" minLength="8" autoComplete="new-password" value=""/></label><p class="auth-notice" id="auth-hydration-status" role="status">Loading the secure account formâ¦</p><button class="btn btn--lg btn--primary" disabled="" style="width:100%" type="submit">Create account</button></form><p class="auth-alt">Already have an account?<!-- --> <a href="/sign-in?returnTo=%2Fdeep&reauth=false">Sign in</a></p></div></div></div></div>
8<script>(function(a,f){let l;try{l=JSON.parse(sessionStorage.getItem(a)||"{}")}catch{return}const n=l?.[f||history.state?.__TSR_key];let c=!1;for(const t in n){const e=n[t],o=e?.scrollX,s=e?.scrollY;if(Number.isFinite(o)&&Number.isFinite(s)){if(t==="window")scrollTo(o,s),c=!0;else if(t)try{const r=document.querySelector(t);r&&(r.scrollLeft=o,r.scrollTop=s)}catch{}}}if(c)return;const i=location.hash.slice(1);if(i){const t=history.state?.__hashScrollIntoViewOptions??!0;if(t){const e=document.getElementById(i);e&&e.scrollIntoView(t)}return}scrollTo(0,0)})("tsr-scroll-restoration-v1_3");document.currentScript.remove()</script>
8<!--/$-->
8<script>(function () { 9 setTimeout(function () { 10 var status = document.getElementById('auth-hydration-status'); 11 if (!status) return; 12 status.className = 'auth-error auth-error--panel'; 13 status.setAttribute('role', 'alert'); 14 status.textContent = 'The account form could not load. Reload this window and try again.'; 15 }, 10000); 16})();</script>
16<script class="$tsr" id="$tsr-stream-barrier">(self.$R=self.$R||{})["tsr"]=[];self.$_TSR={h(){this.hydrated=!0,this.c()},e(){this.streamEnded=!0,this.c()},c(){this.hydrated&&this.streamEnded&&(delete self.$_TSR,delete self.$R.tsr)},p(e){this.initialized?e():this.buffer.push(e)},buffer:[]};$_TSR.router=($R=>$R[0]={manifest:$R[1]={routes:$R[2]={__root__:$R[3]={preloads:$R[4]=["/assets/index-C8-ZIQyQ.js","/assets/auth-client-ickpR1pV.js","/assets/createServerFn-CPYqd4-K.js","/assets/preload-helper-2h3vyDkg.js","/assets/account-CtI9H9SJ.js","/assets/auth-return-to-BUenVqoq.js"],scripts:$R[5]=[$R[6]={attrs:$R[7]={type:"module",async:!0,src:"/assets/index-C8-ZIQyQ.js"}}]},"/sign-up":$R[8]={preloads:$R[9]=["/assets/sign-up-DLoyyU4W.js","/assets/SiteHeader-22sRHYR1.js","/assets/AuthForm-BZxwRQMR.js"]}}},matches:$R[10]=[$R[11]={i:"__root__�",u:1790905612262,s:"success",ssr:!0},$R[12]={i:"�sign-up�sign-up{\"returnTo\":\"�deep\",\"reauth\":false}",u:1790905612263,s:"success",l:$R[13]={providers:$R[14]={google:!0,github:!1},returnTo:"/deep",reauth:!1},ssr:!0}],dehydratedData:$R[15]={queryStream:$R[16]=($R[17]=(stream) => new ReadableStream({ start(controller) { 17 stream.on({ 18 next(value) { 19 try { 20 controller.enqueue(value); 21 } catch (_error) {} 22 }, 23 throw(value) { 24 controller.error(value); 25 }, 26 return() { 27 try { 28 controller.close(); 29 } catch (_error) {} 30 } 31 }); 32} }))($R[18]=($R[19]=() => { 33 const buffer = []; 34 const listeners = []; 35 let alive = true; 36 let success = false; 37 let count = 0; 38 const internal = { 39 flush(value, mode, x) { 40 for (x = 0; x < count; x++) if (listeners[x]) listeners[x][mode](value); 41 }, 42 up(listener, x, z, current) { 43 for (x = 0, z = buffer.length; x < z; x++) { 44 current = buffer[x]; 45 if (!alive && x === z - 1) listener[success ? "return" : "throw"](current); 46 else listener.next(current); 47 } 48 }, 49 on(listener, temp) { 50 if (alive) { 51 temp = count++; 52 listeners[temp] = listener; 53 } 54 internal.up(listener); 55 return () => { 56 if (alive) { 57 listeners[temp] = listeners[count]; 58 listeners[count--] = void 0; 59 } 60 }; 61 } 62 }; 63 return { 64 __SEROVAL_STREAM__: true, 65 on(listener) { 66 return internal.on(listener); 67 }, 68 next(value) { 69 if (alive) { 70 buffer.push(value); 71 internal.flush(value, "next"); 72 } 73 }, 74 throw(value) { 75 if (alive) { 76 buffer.push(value); 77 internal.flush(value, "throw"); 78 alive = false; 79 success = false; 80 listeners.length = 0; 81 } 82 }, 83 return(value) { 84 if (alive) { 85 buffer.push(value); 86 internal.flush(value, "return"); 87 alive = false; 88 success = true; 89 listeners.length = 0; 90 } 91 } 92 }; 93})())}})($R["tsr"]);document.currentScript.remove()</script>
93<script type="module" async="" src="/assets/index-C8-ZIQyQ.js"></script>
93<script>($R=>$R[18].return(void 0))($R["tsr"]);$_TSR.e();document.currentScript.remove()</script>
93<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v31edd6df95cf4e85bb4c19e7a9bdbcba1788362987495" integrity="sha512-iIg7k2xntmwu6/uSb5tpc/hySgZc4eoL31yB29W6tJFo2akwjPWcEqnCEdJvGexCL0KEQwVYv5BlowfhVz26hg==" data-cf-beacon='{"version":"2024.11.0","token":"11c11f540f9f457b9e6dcacbb16171a9","r":1,"spa":2}' crossorigin="anonymous"></script>
93 94</body></html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.