1. Create a project
- Log in to app.meshless.io.
- Click New project.
- Drag your
.glbor.stlfile into the upload zone. - Set a display name.
- Click Encode — the browser renders the frame set and uploads it to the CDN.
Encoding runs in your browser. The source model file is never sent to Meshless servers.
2. Copy the embed snippet
Once encoding is complete, open the project and click Embed. Copy the snippet for the integration method you want.
3. Add the viewer to your page
Choose the method that fits your stack.
Plain HTML
Load the embed script once and place a div where the viewer should appear.
<script src="https://cdn.meshless.io/embed/v1/embed.js" async></script>
<div
class="meshless-viewer"
data-project-id="YOUR_PROJECT_ID"
style="width:100%;aspect-ratio:1"
></div>
The script can be added to <head> or anywhere before the </body> tag. Multiple viewers on the same page each get their own div.
Web Component
If you prefer a custom HTML element, use <meshless-viewer> — same script, no extra setup:
<script src="https://cdn.meshless.io/embed/v1/embed.js" async></script>
<meshless-viewer
data-project-id="YOUR_PROJECT_ID"
style="width:100%;aspect-ratio:1"
></meshless-viewer>
The web component works in Vue, Svelte, Angular, and any framework that renders to the DOM.
React / Next.js
Install the React wrapper:
npm install @meshless/react
import { MeshlessViewer } from '@meshless/react';
export default function ProductPage() {
return (
<MeshlessViewer
projectId="YOUR_PROJECT_ID"
style={{ width: '100%', aspectRatio: '1' }}
/>
);
}
The component is a thin wrapper that injects the embed script and renders a div. No 3D code runs at the Next.js server — the viewer mounts client-side only.
What's next?
- Uploading Models — file requirements, plan limits, and encoding details
- Embed Options — all
data-*attributes for autoplay, sensitivity, and display settings - Hotspots — place interactive callouts on the 360 viewer
- Variants — publish alternate renders for colors, finishes, and product states