Squarespace → Astro
Export Squarespace as one WordPress XML file, turn posts into Markdown, and serve them from an Astro content collection. Styles, extra blogs, store pages, and drafts stay behind.
Should you make this move?
Both platforms have a case. Compare what you gain with what you give up before scheduling the cutover.
Squarespace
- Beautiful templates and integrated hosting let small teams publish without technical operations
- Editors get a purpose-built publishing workflow instead of raw files
- Structured content, code control, and complex integrations are restricted
- Themes, extensions, and content models add maintenance and portability constraints
Astro
- Content-focused sites ship very little client JavaScript by default
- Managed deployments reduce infrastructure and release-management work
- Repository-based publishing and custom integrations require engineering ownership
- Runtime assumptions, platform services, and pricing models shape the architecture
Astro: Content-focused sites ship very little client JavaScript by default. This removes a major source-side concern: Structured content, code control, and complex integrations are restricted.
What you lose: Beautiful templates and integrated hosting let small teams publish without technical operations. What you inherit: Repository-based publishing and custom integrations require engineering ownership.
Jump to a section
Know the shape of the move.
This timeline assumes
- The Squarespace site is published and public. Squarespace says you cannot export a trial site.
- The destination is a static Astro site with content collections, deployed wherever you already host Astro.
- You can keep Squarespace online until redirects and the domain both work.
- The site already documents Squarespace → WordPress, Squarespace → Webflow, and Squarespace → Framer if the site should stay in a hosted builder.
What survives the move.
“Partial” and “manual” are not footnotes. They are work that must be scheduled and verified.
| Item | Outcome | Impact | What happens | Mitigation |
|---|---|---|---|---|
| Export format | partial | critical | Squarespace exports an XML file in WordPress format. The help page says to click the WordPress icon even when the destination is not WordPress. You cannot import that file into another Squarespace site. | Download the XML while the site is public. Keep the file hashed. |
| Pages and text | partial | critical | The export includes layout pages, text blocks, and image blocks. Text from blocks such as embed and Instagram comes with minimum structure. Gallery pages export, including York project pages on version 7.0. | Open the XML and count pages before you cancel. |
| Blogs | partial | critical | One blog page exports, with its posts and up to 1,000 comments per post. If you have more than one blog, Squarespace asks you to pick a primary blog. A second blog is not in that file. | Export again for any blog you did not select, if the panel lets you pick it. Do not assume one file has every post. |
| Page types that do not export | lost | high | Squarespace's does-not-export list includes album, cover, index, info, calendar, portfolio, and store pages, plus headers, footers, sidebars, dropdowns, audio blocks, product blocks, video blocks, drafts, style settings, and custom CSS. | Rebuild those pages or copy the CSS from the panel before you leave. |
| Commerce | lost | critical | Store pages and product blocks are on the does-not-export list. Astro content collections are not a cart. | If you sell, this guide is only the content move. Keep commerce on a store you have already migrated. |
| Images | partial | high | Image blocks are in the export. The files can still be hosted by Squarespace. They disappear when the site comes down if you never saved them. | Download images while the site is public and rewrite links to files in the repo. |
| Comments | manual | medium | Up to 1,000 comments per post can be in the XML. An Astro static site has no comment database. One site moved discussion to Giscus, which asks commenters for a GitHub account. | Import comments into a host you choose, or archive them. Say so on the new post. |
| Design | lost | high | Style settings and custom CSS do not export. The new site is an Astro layout you build. | Copy CSS you still need. Do not expect the Squarespace template to appear in the repo. |
| URLs | manual | critical | Squarespace paths do not become Astro routes on their own. A content collection serves the routes you define. | Keep the path or add a redirect on the host. John Liu's rule on his own move was that every old path is kept or redirected. |
| Drafts | lost | medium | Squarespace says drafts do not export. | Publish or copy any draft you still want before you export. |
| Analytics continuity | manual | medium | The XML has no analytics. The new host starts at zero unless you add a tag and compare it with the old baseline. | Save a top-pages report and check those URLs after launch. |
Where each thing goes.
| Source | Destination | Method | Notes |
|---|---|---|---|
| Layout page | Astro page or content entry | transform | Parse the XML into Markdown or a page file. |
| Blog post | Content collection entry | transform | Astro collections use a loader and an optional schema. Local Markdown is a build-time loader. |
| Post title, date, tags | Frontmatter | transform | Define the schema so a missing date fails the build. |
| Image block | File in the repo | manual | Download it while Squarespace is public. |
| Comment | Comment host or an archive | manual | Cap in the export is 1,000 per post. |
| Second blog | Another export | manual | One XML includes one blog. |
| Custom CSS | Astro stylesheet | manual | Copy from the panel. It is not in the XML. |
| Old path | Same route or a host redirect | manual | Test on the host you will actually use. |
| Store page | No destination | unsupported | Not in the content export. Do not point this playbook at a cart. |
Make the move recoverable.
Create the source-of-truth backup
Keep the XML, the images, and the CSS that Squarespace will not put in the file.
- Confirm the site is public and not a trial.
- Export the WordPress XML and hash it.
- If you have another blog, run a separate export for it.
- Download images and copy custom CSS.
- Save a top-pages report and the current DNS records.
Proof to capture: The XML opens, the post count matches the blog you selected, and images exist as files.
XML to Markdown
Turn the Squarespace export into collection entries.
- Parse layout pages and the selected blog out of the XML.
- Write one Markdown file per post with title, description, date, and tags.
- Point a content collection loader at that folder and add a schema.
- Fail the build when a required field is missing.
Proof to capture: Save the input, output, command or tool settings, warnings, and final item counts.
Redirect map
Keep every old URL that still gets traffic.
- List Squarespace paths from the XML and from the top-pages report.
- Keep the path or add one redirect. Do not send the list to the home page.
- Deploy the map to a preview URL and request the top paths.
- Switch DNS only after that preview matches.
Proof to capture: Save the input, output, command or tool settings, warnings, and final item counts.
The things most likely to hurt.
These are operating limits. Treat every “Stop if” condition as a blocked migration, not a suggestion.
One blog was left in Squarespace
The site has two blogs and the export asked for a primary.
- Consequence
- The second blog never lands in Git.
- Mitigation
- Count posts per blog against the XML before you cancel.
Stop if: A live blog is missing from every export you downloaded.
Images still point at Squarespace
Markdown still has Squarespace CDN URLs.
- Consequence
- The posts go blank when the subscription ends.
- Mitigation
- Download files and rewrite links. Request them from the preview host.
Stop if: A sample of posts still references Squarespace.
The domain moves before redirects
DNS changes while the redirect file is still a draft.
- Consequence
- Search and bookmarks 404.
- Mitigation
- Preview the redirect list on the real host first.
Stop if: A top URL has neither the same path nor a redirect.
Do the work in this order.
- Days 1 to 2 · inventory
Count blogs and page types
2 to 4 hours active1 to 2 days elapsedOwner list of pages to drop waiting- List blogs, stores, and page types Squarespace will not export.
- Save the top-pages report.
Depends on: Squarespace admin
Stop / go checkpointExport?
Go when: You know which single blog the first XML will contain.
Stop when: The site is still a trial, or a store has no other home.
- Days 2 to 3 · backup
XML and images
2 to 5 hours active1 day elapsedExport processing waiting- Download the XML.
- Save images and CSS.
Depends on: Public site
Stop / go checkpointParse?
Go when: Post count matches the blog you selected.
Stop when: The file is missing a blog you need.
- Days 3 to 7 · pilot
Collection and preview
6 to 12 hours active2 to 4 days elapsedPreview deploy waiting- Generate Markdown.
- Add the collection schema.
- Deploy redirects to a preview host.
Depends on: XML
Stop / go checkpointMove DNS?
Go when: Top URLs and a sample of images work on the preview host.
Stop when: The build fails schema checks or images still use Squarespace.
- Days 7 to 8 · cutover
Domain
1 to 3 hours active1 day elapsedDNS waiting- Point the domain, including www if you use it.
- Request the top URLs on the new host.
Depends on: Preview passed
Stop / go checkpointAstro is canonical?
Go when: The domain serves the Astro build and redirects match the map.
Stop when: www or the apex still hits Squarespace by mistake.
- Days 8 to 15 · observe
Keep Squarespace up
1 to 3 hours active7 days elapsedSearch traffic waiting- Watch 404s.
- Leave Squarespace published until you accept the map.
Depends on: DNS
Stop / go checkpointCancel Squarespace?
Go when: A week of top URLs still resolve and images are local.
Stop when: A blog or image set is still only on Squarespace.
Cut over with a way back.
Cutover
The domain serves Astro, and every old path is either unchanged or redirected.
- Deploy the build that passed the preview checks.
- Lower DNS TTL if you can.
- Point apex and www at the new host.
- Request the top-pages list against production.
- Leave the Squarespace subscription on until that list is clean.
Proof to capture: Production URLs match the redirect map and image requests do not hit Squarespace.
Rollback
Point the domain back at Squarespace, which you have not unpublished.
- Restore the previous DNS records.
- Confirm Squarespace still answers.
- Keep the Astro repo and the XML.
- Fix the redirect or image gap on a preview URL.
- Try the domain move again only after the preview list passes.
Proof to capture: Squarespace serves the domain and the Git repo still has the export.
- A second blog is missing
- Images still use Squarespace URLs
- A top path 404s
- www and the apex disagree
- The content collection build fails
Prove the migration worked.
Every blocking check must pass. Capture the evidence before cleanup begins.
| Pass | ID | Check | Method | Expected result | Evidence |
|---|---|---|---|---|---|
V-01Blocking | Post count | Count posts in the XML and in the Squarespace blog you selected. | The counts match, up to the 1,000-comment cap you checked. | Count note. | |
V-02Blocking | Every live blog | List blog pages in Squarespace against export files. | Each blog you are keeping has an export. | Blog list. | |
V-03Blocking | Collection build | Run the Astro build. | The schema accepts every entry you intend to publish. | Build log. | |
V-04Blocking | Local files | Request 15 post images from the preview host. | None of the responses come from Squarespace. | Image log. | |
V-05Blocking | Top pages | Request the analytics top-pages list. | Each path is kept or redirected once. | Redirect log. | |
V-06Blocking | Store and portfolio | Confirm store, portfolio, and draft pages are either rebuilt or explicitly dropped. | The inventory says which. | Page inventory. | |
V-07Blocking | Apex and www | Resolve both names. | Both reach the Astro host. | DNS lookup. | |
V-08Blocking | Squarespace still public | Open the Squarespace URL after DNS, using the old host if you kept one. | You can still export or read the site until you cancel. | Squarespace screenshot. |
Remove the scaffolding safely.
Safe after: A week of clean top URLs and images served from the repo or the new host.
- Commit the XML somewhere private if it has comments you do not want in public Git.
- Remove Squarespace secrets from any parser script.
- Cancel Squarespace only after the rollback deadline.
- Delete preview deploys you do not need.
- Note the comment host you picked.
- Re-check redirects after the next content import.
When the plan met reality.
First-hand accounts are preferred. Vendor case studies are labeled, and every note below is an editorial paraphrase—follow the link for the full context.
The author of johnliu.net moved the site off Squarespace onto Astro and Azure Static Web Apps, and published the account on 10 April 2026. Squarespace's export was a WordPress XML file. A parser turned it into 625 Markdown files with frontmatter. Old paths stayed where they could, category pages mapped to tags, and everything else got an explicit redirect. Comments moved to Giscus, so commenters need a GitHub account, and comments that did not map stayed in an archive. The write-up puts a human-only version of this work at three to six weeks, and the agent-assisted version at one day and two evenings alongside a job.
- Write the URL rule before you polish the theme. Keep the path, map the category to a tag, or add a redirect.
- Move comments as their own job. Giscus kept discussion in GitHub, and commenters needed a GitHub account.
- The Squarespace export was WordPress XML, and one parse produced 625 Markdown files.
- The domain moved only after redirects, content, and analytics had all been checked.
Re-build ripplet.orgUndated
Tomomi Sasaki rebuilt ripplet.org on Astro after 12 years on Squarespace. The project log starts in March 2026. Squarespace provided one XML file, which became Markdown for the blogs. DNS at Cloudflare sent /weeknotes to Astro while the rest of the site stayed on Squarespace, and that split took a few hours. Later the rest of the DNS moved, Squarespace was cancelled, and the log records $1,920 paid since 2014. Phone photos in HEIC were converted during deploy, which the log says a hosted CMS would not let you script.
- Export the XML and turn posts into Markdown before you rebuild the visual design.
- If you cut over one section at a time, budget time for DNS. The /weeknotes split took a few hours.
- A hybrid DNS setup let the Astro blog go live while the rest of the site stayed on Squarespace.
- The recorded Squarespace spend was $1,920 since 2014, paid before the account was cancelled.
Verify against the primary material.
Platform behavior changes. Check these sources and the review dates above before executing a production migration.
- Squarespace: export your site contentAccessed 2026-11-03
- Astro: content collectionsAccessed 2026-11-03