.glb·.gltf·.stlUpload any .glb, .gltf, or .stl — Meshless encodes it into WebP image sequences server-side. Shoppers see a 360° spin. Competitors get 404.
No build server. No WebGL on the page. Just a tight encoder that runs inside Meshless cloud infrastructure.
Your file is AES-256 encrypted before it touches our storage. The unwrap key is split: half stays with you, half with the embed token. Either side alone is useless.
POST /v1/models Content-Type: application/octet-stream # returns: { "id": "9KQa3p", "wrap_key": "..." }
The encoder runs entirely in Meshless infrastructure. No client-side JavaScript processes the mesh. The visitor's tab never sees the geometry — only the output frames.
// embed.meshless.io runtime const enc = new Meshless.Encoder({ frames: 36, size: 1024, format: 'webp', }); await enc.run(); // ~240ms
Each frame is content-addressable. After the first viewer, your CDN serves plain images — no encoder runs. PageSpeed sees an image carousel; competitors see no geometry at all.
# what the CDN serves GET /v/9KQa3p/01.webp · 11.4 KB200 GET /v/9KQa3p/02.webp · 11.2 KB200 GET /v/9KQa3p/03.webp · 11.6 KB200 # ...
Security without the WebGL tax. Ship 360° product viewers that load faster than a JPEG while keeping your geometry completely off the wire.
Your .glb is AES-256 encrypted at rest with per-account wrap keys. The file is server-side rendered to WebP — it never transits the network. Competitors get pixels, not geometry.
The output is a plain image sequence. Any browser, any device — even SEO crawlers see real image content.
Frames are content-addressed. After the first encode, your CDN serves pure images — zero encoder overhead on every subsequent load.
POST /v1/models Authorization: Bearer sk_live_... Content-Type: application/octet-stream ← 200 { "id": "9KQa3p" } ← frames ready in 240ms
Real screenshot mock of the Network panel on a live Meshless embed. Every byte that leaves is a static image. The mesh is unrecoverable.
37 requests · 412 KB total · 0 ms blocked by client.
Every successful response is a static image or a vendored player script.
No .glb. No .gltf. No vertex buffers. No textures.
The encoder ran in a worker, dumped its canvas, and exited. Nothing it touched is reachable from window.
Engineers ask how this actually works. Here's the full pipeline — where the mesh lives, where rendering happens, and what crosses the wire.
The .glb file never crosses the network boundary. Visitors receive only WebP pixels. Your geometry is unrecoverable from DevTools, curl, or any client-side tool.
Honest matrix. We're great at four things and we're upfront about the fifth.
| Meshless | WebGL viewer(model-viewer, three.js) | Hosted 3D(Sketchfab embed) | Server-side render(your own GPU farm) | |
|---|---|---|---|---|
| Mesh exposed to client | Never | Yes — full .glb downloaded | Yes — proprietary but rippable | Never |
| Initial JS payload | 8 KB player | ~150 KB minified | ~400 KB iframe boot | 0 KB |
| Median LCP impact | +0.1s | +1.4s | +0.6s (iframe) | +0.1s |
| Works without WebGL | Yes | No | No | Yes |
| Server cost per spin | $0 (CDN only) | $0 | Bundled | $0.003 — $0.02 |
| Real-time lighting / AR | No | Yes | Yes | Yes |
| Time to first spin | ~120ms | ~800ms | ~1.6s | ~400ms |
We hear from PR teams about awards. We hear from engineering teams about LCP. Here's what the engineers said.
We've shipped Sketchfab embeds, model-viewer, and our own Three.js wrapper. Meshless is the first one our perf team didn't ask us to remove. LCP went from 2.1s to 0.8s.
Our designer's biggest fear was a competitor screenshotting the .glb out of DevTools. Six months in, we've had zero IP incidents. We sleep better.
The dashboard is the rare 3D tool that respects keyboard shortcuts. I encoded 84 SKUs in an afternoon without ever leaving ⌘K.
We are opening access gradually for teams that want secure 360-degree product viewers without exposing source models.