Skip to content
STL File ViewerOpen 3D file(s)

Privacy

A 3D file opened in STL File Viewer is read on the device that opened it. Nothing is uploaded, no account exists to attach it to, and no file name or piece of model data is written to a log, a database or a cookie. Page views are counted, and what that involves is set out under Measurement rather than left in a footnote.

How a file is opened

The file arrives through the browser’s own file picker or a drop on the page. Its bytes are held in the memory of the tab and parsed there; the model is drawn with WebGL, and textures reach the renderer through in-memory blob URLs that exist only while the tab does.

Clear releases the geometry, the materials and the textures. Closing the tab does the same without asking. Nothing is queued for later and nothing is written to disk by the site.

What is stored on the device

The viewer itself writes nothing: no cookie, no local-storage entry, no IndexedDB database, no service worker. That is also why a model cannot be resumed after a reload — reopening the site starts from an empty viewport.

Two things outside the viewer can leave an entry behind. A consent decision is stored in local storage under the key stlfileviewer-analytics for 180 days, written only when the banner is answered or the switch under Measurement is used. And while analytics is on, Google Analytics writes its own cookies — _ga and a second one named after the property — which is what lets it tell a returning visit from a new one.

Neither entry contains a file name, a folder path or anything about a model. Clearing site data in the browser removes both.

What the network can see

The site is a set of static files, so a request for a page goes to the same domain that served it: HTML, stylesheet, script, the WebGL decoders, and the built-in sample model. A request path looks like /obj-viewer/ and never carries the name of a file that was opened.

Two analytics endpoints are contacted in addition to that domain, both listed under Third-party requests. Whoever hosts the files sees what any web server sees — the requested path, an IP address, a user agent, a timestamp. That can identify a page someone read. It cannot identify a model, because the model never appears in a request.

Model data that is never collected

DataHandling
The model fileRead in the tab, released by Clear or by closing it.
File name and folder pathUsed only to match an OBJ to its MTL and texture files. Never sent, never logged.
Triangle count, size, materialsShown in the panels, held in memory.
Object, material and clip namesShown in the panels, held in memory.
Cookie, local storage, databaseNo model data. A consent choice and analytics cookies are the only entries, and neither describes a file.
Analytics eventsPage path, referrer, browser and device class, a coarse location derived from the IP address. No file data of any kind.
Page requestsThe host sees the page path, an IP address and a user agent.

Measurement

Two scripts report page views, and neither is given a model. Cloudflare Web Analytics counts a visit on Cloudflare’s side and stores nothing on the device: no cookie, no fingerprint, no identifier that survives the request. It reports page views, referrers, device class and country in aggregate.

Google Analytics 4 arrives through Google Tag Manager, container GTM-K2MFXTWL. It reports the page path, the referrer, the browser and operating system, the screen size, a coarse location derived from the IP address, and interaction events such as a scroll or an outbound click. It writes two first-party cookies, _ga and a second one named after the property, both of which expire after two years.

In the EEA, the UK and Switzerland

Those cookies are written only after Allow is pressed in the banner. Declining takes one click, the answer is kept in the browser for 180 days, and the switch below changes it without a reload. Until then Google Analytics runs without cookies.

Everywhere else

Analytics starts with the first page view. The same switch turns it off and deletes any cookie already written. Cloudflare’s count is unaffected either way, because it never stored anything.

What never reaches either script, in either region: a file name, a folder path, a triangle count, a set of dimensions, a material or clip name, or the contents of any panel. The viewer does not report that a file was opened at all — there is no event for it, so there is nothing to strip out later.

Analytics is on

The choice is stored in local storage for 180 days. Clearing site data resets it to the default for the region.

Third-party requests

Two, both analytics: googletagmanager.com serves the container, and cloudflareinsights.com receives the visit count. Typefaces are self-hosted files, icons are inline, and no CDN, embed or remote font is loaded.

The Content-Security-Policy served with every page names those hosts and nothing else, so a script that tried to send a model somewhere would be blocked by the browser rather than by a promise. It is the same file that blocks the request, not a sentence written about it.

Contact

Questions about this policy, a correction, or a request about the page-view data: write to [email protected]. There is no form and no account, so email is the only channel.

A deletion request is answered the same way. Nothing here is tied to a name, so the most that can be removed is a row of page views, and the reply will say so rather than promise a record that does not exist.

Changes

A change to how files are handled is written here before it ships, and the review date below moves with it. It is the same date the sitemap reports for these pages, so a cached copy and a fresh one do not disagree about when the text last changed.

Last reviewed 7 November 2026.