OxyPages

How To Put A Virtual Tour Online Yourself

How To Put A Virtual Tour Online Yourself

Your 360 tour is either a folder you own or a subscription you rent. Here is how to put a virtual tour online yourself, and what breaks when you upload it.

The OxyPages Team · · 9 min read

Someone has handed you a 360 tour of a property, a gallery or a school hall. Maybe a photographer shot it, maybe you stitched it yourself from panoramas off a Ricoh Theta.

Either way you now want it on your own website, at your own address, not on somebody else's platform behind their logo.

Whether you can do that depends on which kind of tour you were handed, and almost every guide skips that question.

Some tours are a folder of files. You can host a virtual tour like that anywhere that serves static pages, and it is no harder than putting up a normal website.

Others are not files at all. They are a subscription: a share link and an embed code, with the pixels staying on a vendor's servers whether you like it or not.

So the first job is working out which one you have. Then three practical things: the folder structure that breaks on upload, the file count that catches people out, and the phone test almost nobody runs.

TL;DR: There are two kinds of 360 tour and they behave nothing alike. A tool like Marzipano exports a self-contained folder of static files, and you host that folder exactly like any other website. A platform like Matterport hands you an iframe pointing back at their servers instead, and their own cancellation FAQ says spaces are set to private and existing links error out when a subscription ends. If you have the folder, upload it with its structure untouched, and expect thousands of small tile files rather than a few big ones.

Two Kinds Of Tour, And Only One Is Yours To Host

A 360 tour is either a folder of files you own or a service you rent, and only the first can be self-hosted.

The difference is not quality or price. It is who holds the image data. If the tour arrived as a ZIP with an index.html inside, you own it, and hosting it is ordinary static website hosting. A link plus an embed snippet means you are renting.

What you were handedWho serves the pixelsSelf-hostableWhat you control
A Marzipano export (ZIP of HTML, JS and image tiles)You, on any static hostYes, fullyThe address, the page, the styling, permanently
A Pannellum setup (one JS file plus your panoramas)YouYes, fullyEverything, but you build the page yourself
A Kuula linkKuulaNoThe page you embed it in
A Matterport spaceMatterportNoThe page you embed it in

Marzipano is the interesting one here. It is an open source viewer on Google's GitHub account, though the repository says plainly it is not an official Google product, plus a browser tool that turns panoramas into a working tour. Processing happens in your browser, so the images never leave your machine, and the Export button hands you a ZIP. The Marzipano tool

One honest note. That repository was archived in April 2026, so nobody is developing it further. It matters less than usual, because the output is plain HTML, JavaScript and JPEG files, and code that runs in the browser and calls no service keeps working.

Pannellum is the other well known open source option, lighter still, but you write the page around it yourself. Heavier routes exist, up to building a viewer with three.js.

What A Hosted Platform Like Matterport Actually Hands You

An embed code, not a tour.

Matterport's documentation tells you to set the model to Public and paste in an iframe like this:

<iframe width="853" height="480"
  src="https://my.matterport.com/show/?m=YOUR_MODEL_ID"
  frameborder="0" allowfullscreen allow="xr-spatial-tracking"></iframe>

Every pixel inside that frame is fetched from my.matterport.com. Your web server never touches it. Matterport on embedding a space

There is no export button that turns the space into files you can upload. You can buy a MatterPak bundle: a colourised point cloud, an OBJ mesh with textures, floor plan images. Useful in CAD software. Not a viewer you can put on a web server.

The dependency is real. Matterport's subscription cancellation FAQ says that at the end of a subscription your spaces are set to private, so active links return an error, and that resubscribing brings them back. I have not run that experiment myself and vendor terms change, so read their current page before you promise a client the tour will be live next year.

So what can you actually do? Own the page around it.

Build a plain HTML page with your headline, your photographs and your booking link, drop the iframe in, and put it at your own address. Hosting that page is the same job as hosting any other HTML file. The tour inside is still rented. The page is not.

How To Put A Virtual Tour Online Yourself

How To Put A Virtual Tour Online Yourself - OxyPages

Export it, keep the folder exactly as it comes out, upload the whole thing. Five steps, no terminal, no git.

  1. Export from the tool. In the Marzipano tool that is the Export button, and you get a ZIP back.
  2. Unzip it and look inside. You should find an app-files folder holding index.html, index.js, data.js, style.css, and folders named img, tiles and vendor. The tiles folder holds the sliced panoramas and dwarfs everything else.
  3. Open index.html locally first. If it works from your own disk, the export is fine and anything that breaks later is an upload problem. Some browsers restrict what a page opened from a file path may load, so if it looks blank, try the host before blaming the export.
  4. Upload the contents of app-files, so index.html sits at the top level with tiles, img and vendor beside it. Keep every folder name exactly as it was.
  5. Open the URL on a phone. Not your laptop, which still has the local copy cached and will lie to you.

Here is the shape of what you are uploading:

index.html
index.js
data.js
style.css
img/
tiles/
vendor/

The Folder Structure Is The Whole Trick

Every path inside the export is relative to index.html, so moving, renaming or flattening anything breaks the tour silently. The viewer requests hundreds of small files by path while the visitor looks around, so a missing folder produces no error message. It produces a black frame.

Four ways people break it:

  • Uploading only index.html. It is the file that looks like the website, so it is the one people grab. Alone it has nothing to show.
  • Uploading files one at a time through something that does not preserve directories. The nesting is the point.
  • Changing the case of a folder name. Your laptop treats Tiles and tiles as the same folder. Most web servers do not, and the failure only appears after upload.
  • Tidying up. Nothing is spare. vendor holds the viewer code, data.js holds the scenes and hotspots, tiles holds the imagery.

Upload the export as it came, ideally as the ZIP itself if your host unpacks archives.

Size And File Count Are The Real Constraint

Size And File Count Are The Real Constraint - OxyPages

A 360 export is not heavy because of one enormous image. It is heavy because each panorama is sliced into small tiles at several zoom levels, so even a modest tour becomes thousands of files.

That slicing is why the tour feels smooth: the viewer only downloads the pieces you are looking at, at the resolution you are zoomed to. The cost is arithmetic. Six cube faces, several levels, one room, and you have hundreds of files before the second scene exists.

This is the one kind of site where hosting limits genuinely bite, and they bite twice: total megabytes, and total number of files. Some hosts publish both numbers. Some publish the megabytes and quietly enforce the other.

So check before you upload, not after. OxyPages puts both figures on the FAQ page, where the live numbers are, and every serious host publishes theirs somewhere. I am not typing a number into a blog post that will be stale by the time you read it.

If your export is too big, in order of how much each one helps:

  • Cut scenes. A six room flat does not need eleven viewpoints. Visitors never walk the whole thing.
  • Cap the maximum zoom level, if your tool offers one. The top level is the largest by a wide margin and the least used.
  • Delete the source panoramas from the upload. The original equirectangular JPEGs often sit beside the tiles made from them. The viewer never reads them.
  • Upload the archive, not the unpacked folder. Hosting a ZIP upload beats a browser pushing four thousand small files one at a time.

Most people will open your tour on a phone, and that is where things break.

  1. On mobile data, not office wifi. A tiled tour on a weak signal is a different experience, and it is the one your visitor gets.
  2. Portrait as well as landscape. The viewer fills whatever box you give it, and a desktop-sized box can end up a letterbox two centimetres tall.
  3. The address has to be HTTPS. Browsers only expose device motion sensors on a secure origin, and every reasonable static host issues a certificate free.
  4. Fullscreen, if the tour sits in an iframe. That needs allowfullscreen on the frame. Leave it off and the expand button quietly does nothing.

One expectation to set. A Marzipano export gives you drag and pinch out of the box, not tilt to look. Gyroscope control is the customisation people most often ask about, which tells you it is not on by default.

What To Do Next

  1. Work out which kind of tour you have. A ZIP with index.html inside means you own it. A share link and an embed snippet means you rent it.
  2. If you own it, unzip it, open it locally, then upload the whole folder to a static host.
  3. If you rent it, build one plain HTML page you do control, paste the iframe in, and host that. You keep the address and everything around the tour even if the tour lapses.
  4. Check your host's size and file count limits first if the tour runs to more than two or three scenes.
  5. Open the finished thing on a phone, on mobile data, before you send it anywhere.

Drop the exported folder into OxyPages if you want it live at an HTTPS address in about a minute, ZIP included. If your export runs to several gigabytes across a dozen scenes, a host with a bigger allowance is the better home for it, and I would rather say so than have you find out at upload time.

FAQ

Can I Host A Matterport Tour On My Own Server?

No. Matterport serves the space from their own infrastructure and gives you an iframe to point at it, which is why the model has to be Public before an embed works. You can buy a MatterPak bundle of 3D assets for CAD software, but that is data, not a viewer. What you can host yourself is the page the embed sits inside.

Is Marzipano Free To Use?

Yes. The viewer is open source under the Apache 2.0 licence, and the browser tool that builds a tour from your panoramas costs nothing. The repository was archived in April 2026 and is no longer maintained, though the files it exports are ordinary HTML, JavaScript and JPEGs, and those do not stop working.

Why Is My Tour A Black Screen After Uploading?

Nearly always a broken path. The viewer requests tile files relative to index.html, so if a folder was left out, the upload flattened the directories, or a folder name changed case between your laptop and the server, nothing loads and there is no error to read.

Do I Need My Own Domain For A Virtual Tour?

Not to share one. The free subdomain a static host gives you is a real HTTPS address, fine for a client preview or a one-off open house. For an estate agency listing, or a hotel that will link to it for years, put the virtual tour on your own domain. The address gets read before the page does.

Try It Now

Still Here? Drop It In.

The whole pitch fits in one sentence: your HTML, on a link, in seconds.

Drag and drop your HTML file(s), folders, or ZIP file

or ·

No account needed. Your unclaimed website stays live for 30 minutes on a free subdomain. Claim it to your account to keep it permanently.

  • No Account Needed
  • Free SSL
  • 30-Minute Unclaimed Link, Claim To Keep It