StaticPush
A static site generator for WordPress. Export your site to plain HTML and push it to GitHub or Cloudflare Pages automatically, every time you publish.
Free, GPLv2. Coming soon to the WordPress.org plugin directory.
- StaticPush by Quintaphon
StaticPush exports your WordPress site to fast static HTML and publishes it for you. Connect GitHub, choose a repository and push once; from then on every post you publish or update goes live on its own. It handles the details a static site needs: link rewriting, search, feeds, sitemaps, the 404 page, redirects, llms.txt, media on Cloudflare R2 and a private WordPress admin.
Features
- Push to GitHub, Cloudflare Pages or a ZIPConnect GitHub in one click (no tokens to copy) and pick a repository, upload straight to Cloudflare Pages, or download the site as a ZIP. Cloudflare Pages
_redirectsand_headersare generated for you. - Automatic pushes, only what changedPublishing, editing or deleting a post pushes the affected pages within minutes. Menus, widgets and theme changes rebuild the whole site. Only changed files are sent, so most pushes are tiny.
- Fast, safe exportsSeveral pages are exported at once, directly from your own server, including custom post types and every page of posts split with page breaks. A push that would delete most of your static site is refused, and a login wall in front of WordPress stops the push instead of emptying your site.
- Static site searchA search index and an instant, typo-tolerant search overlay (Fuse.js, self-hosted) take over your theme's search forms. No external search service.
- Media offload to Cloudflare R2Mirror your media library to an R2 bucket with resumable, parallel uploads, pause and resume, and skip rules. New uploads go to R2 automatically, exported pages load images from your media domain, and sizes you skip fall back to the original image.
- Related posts, feeds, sitemaps and a real 404Related posts are built into every post at export time. Feeds become
feed.xmland sitemaps get browser stylesheets. Your theme's own 404 page is exported and marked noindex. - HTML clean-up and StealthRemove WordPress-only markup (emoji scripts, block styles, Yoast schema, speculation rules and more), add a main landmark for accessibility when your theme has none, and hide the signs of WordPress. Private WordPress mode keeps the admin site hidden from visitors and search engines.
- llms.txt for AI toolsPublish a Markdown summary of your site at
/llms.txt(llmstxt.org format) with your categories, pages and latest posts, so AI tools such as ChatGPT, Claude and Perplexity understand it. Rebuilt on every push. - Works with your SEO and redirect pluginsSitemaps from Yoast SEO, Rank Math, All in One SEO and SEOPress are exported and redirected, and rules from the Redirection plugin become Cloudflare Pages redirects.
- Scheduled posts that go out on timeOverdue scheduled posts are published and pushed automatically, even though WordPress itself gets almost no visitors once the public site is static.
Screenshots
How to use
- Download the ZIP, then in WordPress go to Plugins > Add New Plugin > Upload Plugin, choose staticpush.zip, install and activate it.
- Open Static Push > Destination, click Connect GitHub, enter the code on github.com and approve.
- Choose a repository, or click New to create a private one.
- Under Export, choose Full address and enter your public site address, then save.
- Click Push > Full site.
- In Cloudflare, create a Pages project with Connect to Git and pick the repository (no build command). Every change in WordPress now goes live automatically.
Why go static?
- Fast everywherePlain HTML served from a global edge network loads instantly, with no PHP or database work per visit.
- Nothing to hackVisitors never reach WordPress, so there is no login page, plugin or database for attackers to target on your public site.
- Free or cheap hostingGitHub and Cloudflare Pages host static sites for free on generous plans. Keep your WordPress install small and private.
FAQ
Do I still use WordPress?
Yes. You keep writing and editing in WordPress as usual. StaticPush turns the result into a static site; visitors only see the static copy.
How long does a full push take?
It depends on the number of addresses (posts, category and tag pages, pagination, feeds, files) and how fast WordPress builds a page. A site with a few thousand addresses usually takes 10 to 20 minutes. After that, automatic pushes only export the pages that changed.
Will search, forms and comments work?
Search works through the built-in static search. Forms can be sent to an external form service. WordPress comments need WordPress, so remove the comment form or use an external comments service.
Does it work with page caches?
Yes. Exports bypass page caches with a query parameter and a no-cache header, so you always export the current version of a page.
Is it on WordPress.org?
Not yet. Until it is listed in the WordPress.org plugin directory, download the ZIP from this page and install it with Plugins > Add New Plugin > Upload Plugin. Your settings carry over when you switch to the WordPress.org version later.
Is it free?
Yes. StaticPush is free and open source under the GPLv2 license, with no locked features. If it saves you time or hosting costs, you can support its development with a coffee.
How do I get help?
Read the documentation, or reach us through the support page.
What's new
- 2.15.0Posts split into several pages with the Page Break block now update every page (/slug/2/ and on) on automatic and "Pending changes" pushes. Run one Full site push after updating.
- 2.14.9First public release.