“Save Site as Template” used to be the easy answer to “how do I spin up another site that looks like this one” — export the structure, lists, and content types to a .wsp file, apply it to a new site, done. It’s still there in SharePoint On-Premises. In SharePoint Online, it’s effectively gone for modern sites, and the replacement isn’t a UI button — it’s PnP PowerShell.
In this post: Prerequisites · On-Premises: still works · SharePoint Online: PnP PowerShell instead · Site Designs: the lighter-weight alternative · The file-content gap · Where this breaks down · When would you actually use this? · Related reading
Prerequisites
- On-Premises: Site Owner (or higher) on the source site to save the template, and rights to create sites where you’re applying it.
- SharePoint Online: SharePoint Administrator (or Global Administrator) plus PnP PowerShell installed and connected.
On-Premises: still works
- From the source site, go to Site Settings > Save site as template.
- Name it, and check Include Content if you want data preloaded, not just structure.
- Wait for it to process, then download the
.wspfile if you need it portable. - To use it: Site Collection Settings > New Subsite, select the saved template from the list, and create the new site.
Straightforward, no scripting required — this is the whole appeal, and why it’s still worth using where it’s still available.
SharePoint Online: PnP PowerShell instead
The .wsp format doesn’t fit modern SharePoint’s architecture, and the feature was never brought forward to Communication Sites, Microsoft 365 Group-connected sites, or Hub Sites. PnP PowerShell’s site template cmdlets are the direct replacement — extract a template from an existing site, apply it to a new one:
# Connect to SharePoint Online
Connect-PnPOnline -Url "https://yourtenant.sharepoint.com/sites/yoursite" -Interactive
# Extract a site template
Get-PnPSiteTemplate -Out "siteTemplate.xml"
# Create a new site, then apply the template
New-PnPSite -Type TeamSite -Title "New Project Site" -Alias "newproject" -Owner "admin@yourtenant.com"
Connect-PnPOnline -Url "https://yourtenant.sharepoint.com/sites/newproject" -Interactive
Invoke-PnPSiteTemplate -Path "siteTemplate.xml"
Note the cmdlet names: Get-PnPSiteTemplate and Invoke-PnPSiteTemplate, not the older Get-PnPProvisioningTemplate/Apply-PnPProvisioningTemplate naming from earlier PnP PowerShell versions — both were renamed as part of PnP consolidating around “site template” terminology. The old names show up in a lot of still-indexed tutorials and will error if you try them against a current install.
Site Designs: the lighter-weight alternative
PnP site templates (above) are the closer conceptual match to “Save Site as Template” — they aim to capture nearly everything about a source site. Site Designs solve a narrower, different problem: a set of declarative actions (create these lists, apply this theme, add these columns) packaged as JSON and offered directly in SharePoint’s native “Create site” flow, so anyone provisioning a new site picks a design from a dropdown — no PowerShell execution needed after the fact, and no admin has to run anything for each new site.
# Reverse-engineer a site script from an existing site's structure
Get-PnPSiteScriptFromWeb -Url "https://yourtenant.sharepoint.com/sites/sourcesite" -IncludeAll |
Add-PnPSiteScript -Title "Project Site Script" |
Add-PnPSiteDesign -Title "Project Site Design" -WebTemplate TeamSite -Description "Standard project site setup"
# Apply it manually to an existing site, or let it appear as a picker option at site creation
Invoke-PnPSiteDesign -Identity "Project Site Design" -WebUrl "https://yourtenant.sharepoint.com/sites/newproject"
The tradeoff runs the opposite direction from PnP templates: Site Designs are simpler to maintain and genuinely native to the modern provisioning flow, but they’re capped at 30 actions/subactions per manual Invoke-PnPSiteDesign run (schedule it as a background task via Add-PnPSiteDesignTask instead if a script needs to exceed that), and they were never meant to capture the full fidelity a PnP site template can. Reach for a Site Design when the goal is a consistent starting point end users can self-serve; reach for a PnP site template when the goal is replicating as much of an existing site as possible.
The file-content gap
Worth knowing this before the new site turns up empty document libraries and someone asks why: `Get-PnPSiteTemplate` by default captures the site’s schema — lists, columns, content types, navigation — not the actual files sitting in a document library. Extracting to the `.xml` format specifically never includes file content, no matter which flags are set; getting real documents into the template requires saving to the `.pnp` package format instead and explicitly including the content, which is a meaningfully heavier extraction than a quick structure-only template. Worth deciding up front whether the new site genuinely needs the source site’s files copied over, or just its structure — if it’s the latter, the lighter `.xml` extraction is both faster and the right tool, not a shortcut that’s missing a feature.
Where this breaks down
- Neither approach captures everything. Custom scripts, some workflows, and unique permission configurations often don’t survive the round trip and need manual reapplication after the new site exists.
- Large or complex lists may not deploy cleanly — anything near SharePoint’s list threshold limits, or with complex views and workflows attached, is a common failure point.
- PnP site templates need re-validation over time. A template extracted a year ago against an older site structure isn’t guaranteed to apply cleanly today — Microsoft’s own guidance is to treat Site Designs, PnP templates, and Power Automate as the modern toolkit, not a single one-size answer.
The old cmdlet names (Get-PnPProvisioningTemplate, Apply-PnPProvisioningTemplate) still show up in search results and will error against a current PnP PowerShell install — they were renamed to Get-PnPSiteTemplate and Invoke-PnPSiteTemplate.
When would you actually use this?
- You’re still running SharePoint On-Premises and need to roll out several similar departmental or project sites — the native “Save Site as Template” is still the fastest path.
- You’re on SharePoint Online and need repeatable site provisioning — PnP PowerShell’s site template cmdlets, scripted once and reused.
- You need something applied consistently going forward, not just once — pair this with Site Designs or a Power Automate flow rather than a manual template apply each time.
Related reading
- Choosing the right SharePoint Online site type — worth knowing before provisioning, since it determines what a template can and can’t do.
- A Comprehensive Guide to SharePoint Site Design — the design decisions a good template should already reflect.
Good to go. Comment if anything doesn’t line up.
App Catalog Authentication Automation Backup Compliance Content Type CSS Flows Google Javascript Limitations List Metadata MFA Microsoft Node NodeJs O365 OneDrive Permissions PnP PnPJS Policy PowerApps Power Automate PowerAutomate PowerPlatform PowerShell React ReactJs Rest API Rest Endpoint Security Send an HTTP Request to SharePoint SharePoint SharePoint List SharePoint Modern SharePoint Online SPFX SPO Sync Tags Teams Termstore Versioning


