Exporting Your Site

Exporting generates a complete static HTML/CSS/JS copy of your WordPress site as a downloadable .zip archive. Most users never need this. Auto-deploy handles the same generation step internally and ships the result to your hosting target. Use this page if you want to host the static files yourself instead of using one of the supported deploy targets.

How Export Works

When you trigger an export, Stelae runs the following process:

  1. URL discovery. WP-CLI queries your WordPress database to find every published URL: pages, posts, custom post types, archives, category pages, tag pages, author pages, and the sitemap.
  2. Crawl. An ephemeral export container fetches your WordPress pages in parallel, starting from the discovered URLs. Each page is parsed once to capture its CSS, JavaScript, images, fonts, and other linked assets.
  3. Post-processing. The export pipeline fetches any assets referenced by the domain that weren’t captured during the crawl (e.g. images referenced in CSS), downloads Gravatars, and rewrites all URLs to be relative so the archive is portable.
  4. Archive creation. The result is packaged as a .zip archive and sent back to the management server.

The entire process typically takes 30 seconds to a few minutes depending on the size of your site.

Triggering an Export

From your WordPress admin panel, click the “Deploy” menu item in the sidebar (added by Stelae’s built-in mu-plugin). You have three options:

You can also trigger an export from the Stelae dashboard via the “Export & download” option in the site card overflow menu.

Rate limiting

Exports are rate-limited to prevent abuse. You can run up to 6 exports per 15 minutes and up to 900 per month. If you hit the limit, the buttons will be disabled and show how long until you can export again. The limits are generous enough for normal use, including frequent iterative publishing.

What Gets Exported

IncludedNot included
All published pages and posts Draft and private posts
Category, tag, and archive pages wp-admin/ and login pages
CSS, JavaScript, and font files PHP files
Images and media uploads Database content not rendered as HTML
Sitemaps (XML) wp-json/ REST API endpoints
RSS feeds (XML) Dynamic content loaded via AJAX
Gravatars (downloaded and localized) Server-side redirects
robots.txt, favicon.ico .htaccess rules

Export Best Practices

Preview before exporting

The export captures exactly what WordPress renders. Preview every page you care about in the WordPress admin before exporting. If something looks wrong in preview, it will look wrong in the export too.

Publish all content first

Drafts, scheduled posts, and private posts are not exported. Make sure everything you want on the live site is set to “Published” status before triggering the export.

Check for AJAX-dependent content

Right-click any page in your WordPress preview, choose “View Page Source”, and search for the content you expect to see. If the content is in the HTML source, it will be in the export. If the content only appears in the rendered page but not in the source, it’s being loaded via JavaScript/AJAX and won’t be in the export.

Keep your site lean

Export time scales with the number of pages and the amount of media. A blog with 50 posts exports in seconds. A site with 10,000 pages and thousands of images takes longer. Optimize images before uploading and remove unused media to keep exports fast.

After Export

Once the export completes, you have two options:

After export, your WordPress container becomes eligible for idle shutdown. It will go to sleep after 60 minutes of inactivity, freeing up resources.

WordPress Backup

The static export contains your published site (HTML, CSS, JS, images). If you also want a full copy of your WordPress data (the database, themes, plugins, and uploaded media), use the Backup button on your site card in the dashboard.

Backups are generated on demand. Click the button, wait for the progress indicator to complete, then download the .zip archive. The archive contains a MySQL database dump and the full wp-content directory. You can import this into any standard WordPress installation.

Restoring from a backup

To restore a site from a previously-downloaded backup, use Restore from backup in the site card overflow menu. Upload the .zip archive you downloaded earlier. Stelae stops the container, replaces the database and wp-content directory with the archive contents, and restarts.

The restore validates the archive before applying it. If the database import fails, wp-content is rolled back and the container is restarted on the previous state, so you won’t end up with a half-restored site. Restore shares the same rate limit as backup (2 per 15 minutes) and runs only on your own archives; third-party WordPress backups from other hosts are not supported.

Export vs. Backup

Export = your published static site (what visitors see).
Backup = your raw WordPress data (database + files, for migrating to another WordPress host).