Cookie Policy
Upscale.tools sets a few first-party cookies to remember your choices and keep you signed in, plus two Google Analytics cookies while Analytics is on. There are no advertising cookies.
Essential cookies
These make the site work as you asked. They are always on, and two of them exist only once you do the thing they remember.
ut_consent(Essential, 180 days): the choice you made in the cookie notice, so we do not ask again. It holds nothing about you beyond that choice.ut_lang(Essential, 1 year): remembers a language chosen in the menu, suggestion bar or app Settings, or carried between the public site and app. Each host stores its own preference; a temporary language-only URL parameter carries it between them and is removed on arrival. Browser display preferences stay separate on each device; when signed in, your latest choice is also saved with your account for emails.sk_nl(Essential, up to 180 days): set only if you sign up for email updates. It holds a one-way scrambled form of the address, never the address itself, so the same browser is not asked again and cannot sign up over and over. It is HTTP-only, so nothing on the page can read it.
Analytics cookies
We count visits with Plausible Analytics, which sets no cookies, and with Google Analytics 4, which sets the two cookies below, only while Analytics is on:
_ga(Analytics, up to 2 years): a random identifier that lets us tell a returning browser from a new one when counting visits._ga_NP8PLH71NV(Analytics, up to 2 years): keeps the state of the current visit.
Google signals and ad personalization are off, and we do not use Google Analytics for advertising. In the EEA, the United Kingdom and Switzerland, Google Analytics stays cookieless until you accept Analytics. If you leave the cookie notice unanswered it closes itself after about twenty seconds and records what is already running: Essential on, Analytics on, and nothing else. Nothing new starts at that moment.
With an explicit Analytics acceptance, the account and checkout flows can read these existing Google identifiers to connect confirmed billing outcomes to the visit. This creates no new production browser identifier or cookie. The consented server association lasts up to 90 days (four days for an unclaimed guest checkout). On visits our hosting provider identifies as United States visits, this association may also run by default for up to 24 hours unless Analytics is declined or Global Privacy Control is sent. It is recorded as a regional default, not explicit acceptance. Other countries and unknown locations require explicit acceptance. This adds no cookie or browser identifier; pending delivery identifiers are removed after delivery or within 48 hours. Declining Analytics clears the active association and suppresses pending deliveries. A withdrawal acknowledgement without Google identifiers is retained for up to 400 days, or until account deletion, to prevent an old saved preference from enabling the association again. The ut-ga-navigation session-storage entry can retain existing Analytics visit identifiers for up to two minutes during an automatic public-site/account-portal handoff. It is removed after use, expiry or an Analytics decline; it never grants consent or signs you in. Our private staging site uses a separate test property and host-only cookies named ut_staging_ga and ut_staging_ga_9RFCRVB21C; it never uses the production property or clears production Google cookies.
Account and sign-in cookies
Confirmed Plausible purchase reporting adds no browser cookie or persistent visitor identifier. With explicit Analytics consent, a recent paid checkout return is verified on our server. An internal payment marker, retained for up to 400 days or until account deletion, prevents duplicate sends. Your current IP address and browser type are forwarded to Plausible for that request and are not saved in this marker.
These exist only if you open the account pages or sign in.
After you choose guest Checkout, ut_guest_analytics is a same-origin, four-day boolean hint that lets this browser route an Analytics withdrawal to that guest flow. It contains no identifier and grants no access; the existing protected guest cookie is still required. The hint is removed after a successful withdrawal.
sid(Essential, up to 30 days): keeps you signed in to a free account. It is HTTP-only and only ever sent to our account API. Each host keeps its own cookie; it is never shared with every subdomain. Signing out clears the public-site and app sessions.ut-acct-sync(Essential, up to 30 days): a host-only display hint containing your email address and its update time, or a signed-out marker. The app sets it through an authenticated session exchange with the public site. It cannot authorize API access and contains no image data.- Clerk, our sign-in provider, sets its own cookies on the account pages to keep you signed in and to protect sign-in from abuse:
__client_uat(and a copy of it with a short suffix) on this site,__session, a short-lived token while you are signed in, and__clientplus short-lived security cookies on its sign-in address, clerk.upscale.tools. They last up to about a year and are covered by Clerk's privacy policy.
Payments for paid plans happen on Stripe's own checkout and billing pages, which set their own cookies under Stripe's policies. Nothing from Stripe loads on Upscale.tools itself. Turning Analytics off does not disable checkout, payment processing, fraud prevention, or access to your purchases.
The separate staff admin panel uses Clerk sign-in cookies and essential local storage for its appearance and navigation. The preference upscale.admin.theme remembers the staff member’s theme; it contains no customer media. Staff previews are temporary browser object URLs and are released when closed.
Browser storage
A few small entries in your browser's local storage help the site itself. The support browser identifier is sent with support requests as described below:
ut-consent: a copy of your cookie choice.ut-langandut-lang-dismissed: the language you last picked or carried into the app, so the app uses it and a page in another language can offer yours back, and that you closed that offer, so it stays closed.ut-theme: your light or dark appearance choice. Choosing System removes it. The choice follows links between the public site and app through a temporary URL preference, removed when the destination opens. It uses no shared-domain cookie.pu-prefer-wasm: remembers for 14 days that this device should use the CPU engine after a crash.ut-acct: while you are signed in, your email address, so the page can show that you are signed in. Signing out removes it.ca-trial-claim: after you choose guest Checkout, its session ID and the page to return to, kept for up to 30 days so interrupted account setup can resume. This hint does not grant account access.ca-railandca-lib-view: on the account pages, whether you folded the side menu and whether your images show as a grid or a list.sk-nl:doneandsk-nl:tries: only after you use the email updates form, for up to 180 days, so the form is not shown to you again and cannot be sent over and over.- A note of which version of an occasional suggestion you saw, so it does not change between visits.
st-support-device: a random browser identifier sent with support requests to limit abuse.st-support-persona-seedandsupport:upscale-tools:appearance: keep the support panel's presentation and appearance consistent. These support entries have no automatic expiry; clearing site data removes them.__clerk_environment: on the account pages, Clerk's copy of its sign-in settings.
Session storage, which your browser clears when you close the tab, keeps the current tab working: suggestions you closed for this visit, a short queue of analytics events, and a note that lets a tab the browser closed mid-upscale pick the job back up. The browser's own database (IndexedDB) keeps the image you are working on and its result on your device, so a reload or a crashed tab can carry on without asking for the image again, and keeps files and options you confirmed in the Library upload dialog or picked before creating an account in ut-pending for up to an hour, so they start when you reach the workspace or return from sign-up. Signing out clears them.
ut-trial-offer-dismissed in session storage remembers that you closed the trial offer card, so it stays closed in this tab. It contains only that choice and is cleared when the tab closes.
Cloud HD keeps this tab's job ID in ut-cloud-job, including a completed result for reloads. During an upload, ut-cloud-pending in session storage points to its input, prepared bytes, options and upload receipt in IndexedDB (ut-cloud-run). Recovery expires after 12 hours; expired files are removed when that storage is next used. The input is removed once the job is accepted or explicitly cancelled. For video comparison, a separate copy of the latest original video stays in this tab’s existing local result storage for up to 24 hours, until replaced or cleared. The job record includes a file signature to match that original after a reload. Signing out clears these records. ut-uploads remembers uploaded parts for up to 12 hours. If browser storage is unavailable, you may need to select the file again; accepted jobs still finish in your account.
Your choices
The cookie notice on your first visit lets you switch Analytics on or off, and Your privacy choices in the footer of every page reopens your preferences at any time. Turn Analytics off and neither analytics service counts your visits, and the Google Analytics cookies are removed. You can also block or delete cookies and site data in your browser's settings; if you block essential cookies, signing in and remembered choices will not work.
Changes
When the site starts or stops using a cookie, this page changes with it; the date below shows the latest change.
Questions
Upscale.tools is operated by Elowin Labs LLC. Email hello@upscale.tools. How we handle information more broadly is in the Privacy Policy, and the rules for using the site are in the Terms of Service.