Documentation

How your portfolio gets onto the internet — hosted by us or downloaded and hosted by you — plus sizes, the model library, and pricing.

Two ways to publish

A free account can publish one site to you.xrfolio.page — we host it, with a small “Built with XRfolio” credit in the corner. Pro raises that to 3 sites, your own domain, and no credit. Either way you can also download the compiled site and host it yourself instead; see deploying your site. Both routes produce the same folder of files — the difference is who runs the web server.

Publishing a hosted site

In the builder, press Publish. Publishing saves first — the site is assembled on our servers from the copy in your account, so what goes live is exactly what you saved. The first time, you pick the address: 3 to 63 lowercase letters, digits and hyphens. After that, Publish republishes the saved version in one click, and the live site updates within seconds.

You can rename a site once every 30 days; the old address redirects to the new one for 90 days and is then held out of use so nobody can take it over. Unpublish takes the site down (the address answers “gone”) without deleting anything; publish again to bring it back. Deleting a portfolio that has a published site requires unpublishing it first.

On Pro, attach your own domain from the dashboard: enter the hostname, add the two DNS records we show you, and HTTPS is issued automatically once they resolve. A subdomain (portfolio.example.com) is a plain CNAME everywhere; the dashboard explains what to do about a bare domain at your registrar.

The credit, and what it tells you

On a free hosted site and on any downloaded site that was not bought, the “Built with XRfolio” credit links back here through an address that identifies your portfolio. Clicks are counted on your dashboard, with the websites they came from, so you can see how many visitors your site sent us. Purchasing the download or subscribing to Pro removes the credit; the removal is a signed entitlement in the site, not a setting, which is why it survives being hosted anywhere.

Folder contents (downloads)

The download produces a single directory. Inside: index.html, the _app/ directory holding the 3D engine, content.json with your configuration, and an assets/ directory containing your models, images, and video files. This forms a complete static website. Deploy to any web host without build steps, servers, databases, or third-party accounts.

The folder also includes README.md and CLAUDE.md with deployment instructions for people and for coding assistants, and LICENSE.md, the short licence the engine ships under — your content is yours; the engine is ours and licensed to you for that site.

Editor architecture

The downloaded website contains zero editor code. This keeps total download sizes small, removes exposed administrative endpoints, and keeps the published product secure.

To update a downloaded site, return to XRfolio, load your project file, make changes, and download the updated package, then upload it to your host again. On a hosted site this loop is one click: edit, save, publish, and the live site updates immediately — no re-download and no re-upload.

Payload size and performance

Monitor storage limits and initial load size independently.

Storage

Account storage holds assets between edits: 32 MB on Free, 256 MB on Pro. Limits apply only to processed assets. A 65 MB source model compressed down to 400 KB uses 400 KB of your account limit. A hosted site may be as large as the plan lets you store — there is no separate hosting ceiling, and the hosted copy does not count against the quota twice.

Initial load

Initial load size determines visitor page speed. Visitors fetch project images and videos only when clicking specific projects. The initial payload includes the 3D engine, the environment room, lighting configurations, and project models.

A sample portfolio containing 25 projects and 33 MB of total assets transfers 9.3 MB on initial load. This requires approximately 9 seconds on typical mobile cellular connections. 3D models account for 8 MB of this initial payload.

High-resolution videos and photographs do not slow initial room loading. In contrast, 3D room models increase initial download duration. The editor warns you when model assets exceed 12 MB.

Asset compression

The browser converts and compresses models locally on your computer. Your computer simplifies meshes, converts textures to WebP format, and decreases total file size without degrading visual appearance.

Retain original files on your computer. Download packages contain only optimized files unsuitable for 3D modeling work in Blender. XRfolio does not provide raw file backup storage.

Bring what you have, up to 150 MB per file on Free and 400 MB on Pro; what matters for your visitors is the ~10 MB that loads first, which the builder measures for you. Very large source files need more browser memory to convert — pre-process on a desktop if a phone refuses one.

Choosing models

The short version: .glb, a few hundred KB, a metre or two across, under about 50k triangles. Almost anything from Sketchfab, Poly Pizza or Kenney already fits, and the optimizer will pull most things that do not into range — so err towards trying a model rather than passing on it.

Format

.glb is the one to want: a single self-contained file with its textures inside it, which is what the builder stores and what the player loads. .gltf, .fbx and .obj are converted on the way in. FBX and OBJ keep their textures as separate image files, so drag those in alongside the model or it arrives grey — the builder will tell you how many it could not find.

USD, blend, max, C4D and STEP are not accepted. Export to glTF/GLB from whatever authored them; every major tool can, and the result is smaller than the source in every case.

Size, in triangles

Budget roughly 5k–50k triangles for an object and up to 150k for a whole room. The optimizer simplifies meshes automatically, so a 500k-triangle sculpt usually arrives usable; what it cannot fix is a scene of two hundred separate high-detail objects, where the count is spread too thin to simplify without something visibly collapsing. The builder prints the triangle count after every import.

Size, in megabytes

After compression, a good object model is 100–500 KB and a room is 1–3 MB. Textures, not geometry, are almost always what makes a model large: one 4096px texture set can outweigh the mesh ten times over, and the optimizer caps textures at 1024px and re-encodes them to WebP, which is where the typical 80–95% saving comes from.

Source files can be up to 150 MB on Free and 400 MB on Pro. That limit is about how much memory the conversion needs in your browser, not about storage — what gets stored is the compressed result. Conversion happens on your machine, so a phone will refuse a file a desktop handles.

Size, in metres

Scenes are in metres. A person is 1.8, a desk 1.5, a laptop 0.35, a mug 0.1, a room 6. A model that arrives a hundred or a thousand times too large is nearly always a units mistake — exported from a tool set to centimetres or millimetres — and the builder now recognises that on import and offers to correct it, naming the likely cause rather than just the number. Accepting rewrites the file itself, so the model is the right size everywhere you use it and for anyone who takes it from the library.

Declining is a real answer. If you are putting a building or a whale in a room, keep it and place it deliberately. The offer only appears outside roughly 2 cm to 12 m.

What else to look for

Prefer models with baked or simple PBR materials and no rigging or animation — neither is rendered here, and both add weight. Check the licence before sharing anything to the library: you are asked to confirm you have the right to, and that confirmation is what the whole library rests on.

What can be uploaded

Models (.glb, .gltf, .fbx, .obj), images (.png, .jpg, .webp, .avif, .gif, .svg) and video (.mp4, .webm). That is the whole list, and it is checked against the file’s actual contents rather than its name.

Archives, executables, documents and audio are not accepted — there is no way to show them in a 3D room, so hosting them would just be file storage. Link to them wherever you already keep them instead; a project can carry as many links as you like, and they cost nothing.

Project files

Without an account, export a local .xrfolio file. This archive stores your portfolio configuration and compressed assets on your local drive. Load this file into the builder anytime to resume work. Our servers retain zero data from guest sessions.

Signed in, Save keeps the portfolio in your account, and you can still export a save file at any time.

A save file also carries a thumbnails/ directory — the small previews the Files panel shows for each asset. They are rebuilt from the originals if missing, but that means downloading and re-rendering every model and video, so carrying them means a re-opened portfolio is usable straight away.

Deployment

If you bought the files, deployment instructions ship with your download and appear on our deployment guide. Static hosts like Cloudflare Pages, Vercel, Netlify, and GitHub Pages host these files free of charge. If you would rather skip this step entirely, publish to you.xrfolio.page instead — free with the credit, or on Pro with your own domain and none.

The model library

The library is a set of rooms and objects anyone can drop into a portfolio: in the builder, open Files, choose Library, press Add. The model arrives already optimized, becomes your own copy, and carries a credit line for whoever made it.

You can share a model you uploaded from the same place: press Share on it, say where it came from, and confirm you have the right to let others use it. A person reviews every listing before it appears, and you can withdraw it whenever you like. If a model in the library is yours and you did not share it, flag it — no account needed — and it is hidden while we look.