Skip to the article
3dCMS Knowledge Base
Contact Open the editor
Publishing & Hosting

Publishing to the web

Turn your scene into a public, crawlable page with a shareable link, and understand exactly what gets built.

Open in the interactive manual →

The interactive version has full-text search, a table of contents, and light/dark themes.


Publishing turns your scene into a live, public page anyone can visit, no login required to view it.

How to publish

  1. Press Publish

    It's a button on the menu bar itself, at the right-hand end beside Save, and it's the only accent-coloured control in the editor, on purpose. Ctrl+Shift+P does the same thing, as does File ▸ Publish…. On a phone the button rides the viewport pill row rather than hiding in the Menu drawer. A dialog asks for a Published name: it defaults to your scene's name, and under it shows the address that name will produce plus a live scene-weight meter, so the URL and the cost are both visible before you commit rather than after.

  2. Give it a real name

    If the field still holds a name the editor supplied ("New Site", "Untitled", "My scene" and the like), a line appears under it saying so. That matters because the published name does not stay in the editor: it becomes the page's title, its heading, the sentence in its meta description, the slug in its URL, and the line a stranger reads in a search result or in every shared link. It is a nudge and never a block: if a name that looks like a placeholder is genuinely the one you want, publish anyway.

  3. Click Publish

    3dCMS builds the page and opens a Share dialog: the link is already copied to your clipboard, and the popup stays put with Copy, Open ↗, and one-click share targets (the native share sheet where the device offers one, plus X, Bluesky, Reddit, WhatsApp, Telegram, Facebook, LinkedIn, and Email). Click Done to dismiss it: it never vanishes out from under you mid-copy. To see it again later without publishing again, use File ▸ Share link…; it is live whenever the open scene has a published site.

A scene you never saved is saved to your account on its way out: Publish stores the editable copy first, then puts it live, so the scene and its site stay paired and the next publish updates the same address without asking.

The Share dialog also shows two extras: a preview of the social card people will see when the link is shared (see below), and a scannable QR code of the link. Right-click it to Save image as… and keep the code to print or drop on a flyer.

Short links

Handle-based URLs are memorable but not exactly short. Click Get a short link in the Share dialog and 3dCMS mints a tidy one for this scene:

https://3dcms.info/s/<code>

Visiting it redirects to the scene's normal published URL. A few things worth knowing:

  • It's on request only. Nothing is created until you ask, so scenes you never share don't accumulate codes.
  • One code per scene, forever. Ask again and you get the same link back, safe to print, and it keeps working across re-publishes.
  • It only ever points at your scene. The destination is worked out on the server from a site you own, never sent up from the browser, so a /s/ link can't be bent into pointing somewhere else.
  • The QR code follows it. Once a short link exists, the QR in the dialog re-encodes to it: a shorter URL makes a coarser, easier-to-scan code, which matters on a printed flyer or a slide.
  • Publish first. A scene needs to be published to have a canonical URL to redirect to, so the button lives in the post-publish Share dialog.

Listed, or a private review link

The publish dialog carries a Show on Explore and my profile checkbox. For a new site it starts ticked; for a republish it starts from the site's current state, so a private link stays private unless you tick it. Leave it ticked and the site is discoverable on the public Explore gallery and your creator page, and search engines are told the address exists. Untick it to publish a private review link from the very first publish: it works for anyone you send it to, but it is not on Explore or your profile, its pages are marked noindex, and no search engine is notified. That is the right choice for a client review or a draft you only want a few people to see. You can list it later from the Published tab of your Account page, where Take down lives too.

What else the Share dialog offers

  • Show on Explore & your profile: a checkbox that lists (or hides) this site in the public Explore gallery and on your creator profile. It's on by default and reflects the site's real state, so re-publishing a site you'd previously hidden keeps it hidden.
  • Views so far: once your published site has any traffic, its view count shows here too.
  • First-publish celebration: the very first time you ever publish, the dialog greets you with a one-time celebration and a nudge to share your new link (a first site published as a private link is not nudged onto Explore). You'll only ever see it once.
  • The scene-weight meter: how expensive your scene is to render, scored and broken down by category. See scene weight.

Your scene goes live at a memorable, handle-based URL:

https://3dcms.info/<your-handle>/sites/<slug>/

The slug is derived from the name automatically: you don't hand-pick it. Accents fold to plain letters before anything else is stripped, so "Über uns" publishes at uber-uns and "Kraków" at krakow rather than losing the letter.

Where visitors land (spawn pose)

Publishing captures your current editor camera as the pose visitors open the scene at. Frame the shot you want, then publish. A scene with an Entry camera (every starter and every scene built over MCP has one) used to open wherever that camera had been put, whatever you were looking at when you pressed Publish. Now the publish dialog has Start visitors at my current view, ticked by default: the Entry camera moves to what you see, in the open scene as well as the published copy (it is one undo step), so the editor, your account copy and the live site agree. Untick it and visitors start at the Entry camera where it is. The box only appears when there is a camera to move: not with a pinned spawn, and not for a camera that rides a curve. To lock a spawn that survives future publishes, open Settings ▸ Visitor Spawn, line up the view, and click Set spawn to current view (a pinned spawn overrides both the auto-capture and any Entry camera or page). Clear it there to fall back to capture-at-publish.

The social card (link preview)

The same publish also snaps a thumbnail of your scene from where visitors arrive and uses it as the site's social card, the image that appears when the link is pasted into a chat, a post, or a message. It becomes the page's Open Graph and Twitter image (a hero image, if set, is the fallback when no shot is captured). The shot follows the same rules as a visitor's first view: an Entry camera, if the scene has one, framed for the 1200 × 630 card (so a camera set to fit a width keeps that width in the card); otherwise the captured spawn. Your own editor view is put back afterwards. A scene whose visitors open on an auto-framed entry page keeps the old behaviour and shoots your editor view. Either way, framing a good spawn shot doubles as framing a good link preview.

A multi-page site no longer unfurls every room with the entry room's shot. A page that carries a picture of its own (its hero image, else its first gallery image, else its first image block) leads with that one; the home page and image-less pages keep the captured thumbnail. And the links the Share dialog hands out are plain page addresses with no preview flag on them, so they unfurl with a card on X and LinkedIn too, UTM tags and all.

What publishing builds

Behind that one click, the server generates, at publish time:

  • A static HTML page for every page in your scene: fast, cacheable, no runtime needed.
  • A web app manifest for the site: a visitor who adds it to their phone's home screen gets an icon carrying your site's name that opens your site, not the 3dCMS home page.
  • A plain-text mirror of each page (clean reading for AI crawlers).
  • A sitemap, robots.txt, llms.txt, and scene.json for the site.
  • An instant search-engine ping (IndexNow) so new and changed pages get noticed quickly.

It's all covered in SEO & AI-readability.

When a publish is refused

One thing can stop a publish: a scene that's far too heavy to render. Over the scene-weight red line you get a warning and the publish goes through anyway; only past the hard cap is it blocked, and then a dialog names the heaviest categories so you can trim them and publish again.

There's a second, separate limit on the same screen: a scene holding more than about 1,400 MB of estimated texture memory is refused even when its points total looks fine, because that much texture reliably kills a phone's browser tab rather than merely slowing it. The message says so, and the fix is usually to reuse one model in place of several near-identical ones: texture memory is charged per unique model, not per copy.

What a publish warns you about

Separate from a refusal, a publish that succeeds can still come back with an advisory warning. It appears in the Share dialog, just above the scene-weight meter, in amber rather than error red: the publish worked, and this is the one thing worth fixing before you send anyone the link. Three things produce one, and they are joined rather than one hiding the other.

  • A scene over the weight red line: heavy enough to be worth trimming, not heavy enough to block.
  • An image hot-linked from another website: worth knowing about because it has no visible edge. Those pictures are fetched through a signed-in-only proxy, so they render perfectly for you and show as an empty plane for every visitor. The warning names the offending nodes; the fix is to upload the file to your asset library and point the block at that copy.
  • A page that gives a search engine almost no text: under about 60 words of readable body copy, counted from the page that actually ships. See how much text your page really gives a crawler.

The check runs on every publish, which is the point: the scene lint alone only reaches edits made through Claude or the Assistant, and pasting an address into Properties by hand is exactly how the mistake gets made. An image slot that a template personalizes is exempt: its address is a placeholder your clone replaces with your own picture, so there is nothing to fix.

Stepping back into the editor from your live page

Walk your published site, spot something to fix, and the viewer's Menu has Edit this scene waiting: it opens the editor on this scene, the source it was published from, rather than wherever you were last.

It's yours alone. The page asks who's reading it, and a visitor who isn't the owner simply never sees the entry: signed out or signed in as someone else, there's no editor door to knock on. (Before, everyone got it, and it led strangers to a sign-in wall or to their own unrelated scene.) An embedded scene (below) never shows it either, since an embed is a widget on someone else's page. On your own draft preview, where the surface is already yours, the same entry reads Open editor as it always has.

Embedding a scene in someone else's page

A published site can also live inside another page: a blog post, a portfolio, a client's CMS. Wherever your public URLs are listed (Settings ▸ Sites and your Account page), each site has an Embed toggle that builds a ready-to-paste <iframe> snippet for you. Pick from two dropdowns, then copy:

ChoiceOptions
StyleJust the scene (the bare iframe, the default) or Framed card, the treatment from the 3dCMS home page: the scene in a rounded frame with a caption giving its site name and its author and an Open it full-size → link.
SizeResponsive · 16:9 (the default), Responsive · 4:3, Square · 1:1, or Fixed · 800×450. The responsive presets are full-width and hold their shape; the fixed one is exact pixels.

The embedded view is chrome-free (the 3D scene and its floating controls, no editor header). The snippet asks the host page for three things only: to go fullscreen, to autoplay audio and video, and to use the device share sheet. There's no reactions bar, no guestbook, no Share button and no Report: those belong on the scene's own page, not on someone else's. A share sign you placed in the scene still works: inside an embed it opens your scene's own page in a new tab, where the visitor can share it from there.

An embed doesn't steal the host page's scroll. Until a reader clicks or taps the scene, the mouse wheel scrolls the page they're reading, as it would over a picture; once they've clicked in, the wheel zooms and moves through the scene as usual.

Pasting a link into WordPress (or another oEmbed-aware CMS) turns it into an embed on its own, with no snippet needed. WordPress puts that iframe in a strict sandbox, and the sandbox drops the fullscreen permission, so fullscreen isn't available there. If fullscreen matters, paste the Embed snippet into a Custom HTML block instead of the bare link.

It does carry two small pills on the top bar: a 3dCMS one that opens your scene full-size in a new tab, and a Build your own → one pointing at the sign-up. That's the trade for free hosting: an embed reaches an audience that isn't ours, and those two links are the only thing we ask of it. On a paid plan you can turn both off along with the rest of the 3dCMS branding, and the embed carries nothing but your scene. (An embed shows no branding at all, including your own.) (They also disappear automatically when a scene is embedded on 3dcms.info itself, where pitching 3dCMS at a reader already on it would be a loop.)

Two details make the Framed card worth the extra lines. Your social card image sits behind the frame, so the box shows your scene's own poster while the 3D loads instead of a blank rectangle. And the full-size link is an ordinary link, so it still works if the host page blocks iframes, if JavaScript is off, or when a crawler reads the page. The snippet is entirely self-contained (inline styles, no class names to collide with the host site's CSS), and the iframe inside it is identical to the plain one, so the prettier choice never costs you a capability.

Draft vs published

Preview (and the editor) show your working draft, not public. Publish produces the public copy. They're independent: editing your scene doesn't change the live site until you publish again. Re-publishing overwrites the site and tidily prunes pages you removed or renamed, so no ghost URLs linger.

Publishing from the editor also saves the scene to your account when it lives there, in the same step, so the live site and the account copy you will edit next time are the same scene. (A publish used to leave the account copy where it was, so a later republish from that copy could quietly roll the site back.) It carries the same revision check as Save: if the account copy changed since you opened the scene, you get the reload / save as copy / save over it banner instead of a publish.

Publishing over an existing site asks first 3dCMS matches a re-publish to the site it belongs to. When it can only match by name (a scene that isn't linked to one of your saved cloud scenes, published under a name a live site already uses), it stops and asks: "Publishing as X will replace your live site Y with this scene." Say yes and it replaces it; rename first and you get a new site instead. Before, a fresh scene that happened to share a name could quietly overwrite a live one.
Spotted something off, or want a topic covered? Tell us, a person reads every message.