{"id":394970,"date":"2026-11-02T09:20:03","date_gmt":"2026-11-02T09:20:03","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/static-html-export\/"},"modified":"2026-11-02T09:19:33","modified_gmt":"2026-11-02T09:19:33","slug":"innofly-static-export","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/innofly-static-export\/","author":23590828,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.0","stable_tag":"1.0.0","tested":"7.1.4","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"Innofly Static Export","header_author":"Innofly","header_description":"Export entire WordPress website to static HTML with flexible directory\/file paths, relative link rewriting, and ZIP download.","assets_banners_color":"121c31","last_updated":"2026-11-02 09:19:33","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/innofly-software.com\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":116,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"innofly","date":"2026-11-02 09:19:33","revision":3779392}},"upgrade_notice":{"1.0.0":"<p>First public release.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3779392,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3779392,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3779392,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3779392,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3779392,"resolution":"1","location":"assets","locale":"","width":1440,"height":900},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3779392,"resolution":"2","location":"assets","locale":"","width":1440,"height":900},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3779392,"resolution":"3","location":"assets","locale":"","width":1440,"height":900},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3779392,"resolution":"4","location":"assets","locale":"","width":1440,"height":900}},"screenshots":{"1":"Dashboard: choose pages and run the export with a live progress log.","2":"Settings: URL structure, link mode and deployment method.","3":"Export history with downloadable archives.","4":"Export a single post from the editor."}},"plugin_section":[],"plugin_tags":[19981,290223,229492,251091,250566],"plugin_category":[],"plugin_contributors":[290224],"plugin_business_model":[],"class_list":["post-394970","plugin","type-plugin","status-publish","hentry","plugin_tags-deploy","plugin_tags-github-pages","plugin_tags-html-export","plugin_tags-static-html","plugin_tags-static-site","plugin_contributors-innofly","plugin_committers-innofly"],"banners":{"banner":"https:\/\/ps.w.org\/innofly-static-export\/assets\/banner-772x250.png?rev=3779392","banner_2x":"https:\/\/ps.w.org\/innofly-static-export\/assets\/banner-1544x500.png?rev=3779392","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/innofly-static-export\/assets\/icon-128x128.png?rev=3779392","icon_2x":"https:\/\/ps.w.org\/innofly-static-export\/assets\/icon-256x256.png?rev=3779392","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/innofly-static-export\/assets\/screenshot-1.png?rev=3779392","caption":"Dashboard: choose pages and run the export with a live progress log."},{"src":"https:\/\/ps.w.org\/innofly-static-export\/assets\/screenshot-2.png?rev=3779392","caption":"Settings: URL structure, link mode and deployment method."},{"src":"https:\/\/ps.w.org\/innofly-static-export\/assets\/screenshot-3.png?rev=3779392","caption":"Export history with downloadable archives."},{"src":"https:\/\/ps.w.org\/innofly-static-export\/assets\/screenshot-4.png?rev=3779392","caption":"Export a single post from the editor."}],"raw_content":"<!--section=description-->\n<p>Build your site in WordPress as usual (themes, blocks, ACF, page builders), then export it to plain static HTML that runs on any web server or static host.<\/p>\n\n<h4>Export<\/h4>\n\n<ul>\n<li>Scans pages, posts, custom post types, taxonomies and archives, and follows internal links (pagination, author and date archives) so nothing is missing.<\/li>\n<li>Two URL structures: directory style (<code>\/about\/index.html<\/code>) or file style (<code>\/about.html<\/code>).<\/li>\n<li>Relative links (<code>..\/assets\/...<\/code>) so the export can be opened straight from disk, or absolute links for hosting.<\/li>\n<li>Copies theme assets and media uploads, and can download images hosted on other domains.<\/li>\n<li>Cleans the HTML: removes generator tags, emoji scripts, RSD and wlwmanifest links.<\/li>\n<li>Runs in the background in small batches with a live progress bar and log, so large sites do not hit PHP time limits.<\/li>\n<li>Export a single post from the editor, or remove its page from the static site.<\/li>\n<li>WP-CLI command for scripted exports.<\/li>\n<\/ul>\n\n<h4>Deploy<\/h4>\n\n<ul>\n<li>ZIP download, local directory, FTP, SFTP.<\/li>\n<li>GitHub Pages (pushes a commit to the branch you choose).<\/li>\n<li>Incremental deployments: only changed files are uploaded, removed pages are deleted.<\/li>\n<\/ul>\n\n<h4>Automate<\/h4>\n\n<ul>\n<li>Auto export when a post or page is published, updated or unpublished: only the affected pages are regenerated.<\/li>\n<li>Scheduled full exports (daily, weekly, monthly) with retry and e-mail notifications.<\/li>\n<li>Export history with downloadable archives.<\/li>\n<\/ul>\n\n<h4>Static site tools<\/h4>\n\n<ul>\n<li>Client-side search (a search index is generated at export time).<\/li>\n<li>Send form submissions to a form service of your choice (e.g. Formspree) instead of the WordPress site.<\/li>\n<li>Redirects, imported from Redirection, Rank Math or Yoast SEO Premium, written as static redirect pages and host rules.<\/li>\n<li>Custom text replacements, rename <code>wp-content<\/code> \/ <code>wp-includes<\/code> folders in the export.<\/li>\n<li>Minify HTML and CSS, convert JPG \/ PNG to WebP.<\/li>\n<li>Optionally block public access to the WordPress site once it is served statically (logged-in users keep access).<\/li>\n<\/ul>\n\n<p>The plugin is fully translated into Vietnamese and Japanese.<\/p>\n\n<h3>External services<\/h3>\n\n<p>The plugin does not contact any external service by default. It connects to a service only when you choose it in Settings, and only sends what is needed for that task. During an export it also requests the pages of your own site (loopback requests), which do not leave your server.<\/p>\n\n<p><strong>GitHub REST API<\/strong> (api.github.com, github.com), provided by GitHub, Inc.\n* What it is used for: the \"GitHub Pages\" deployment method pushes the exported static site to a repository you own.\n* What is sent and when: your personal access token, the repository name and branch, and the exported files (HTML, CSS, JS, images) with a commit message. This happens only when GitHub Pages is the selected deployment method, on each export \/ deployment, and when you click \"Test connection\".\n* <a href=\"https:\/\/docs.github.com\/en\/site-policy\/github-terms\/github-terms-of-service\">GitHub Terms of Service<\/a>, <a href=\"https:\/\/docs.github.com\/en\/site-policy\/privacy-policies\/github-general-privacy-statement\">GitHub Privacy Statement<\/a>.<\/p>\n\n<p><strong>Form service of your choice<\/strong> (for example Formspree)\n* What it is used for: forms on the exported static site need a backend, so you can enter the URL of a form service in Settings.\n* What is sent and when: nothing is sent from WordPress. The exported pages send the fields a visitor fills in (for example name, email, message) to the URL you entered, only when that visitor submits a form on the static site. If you leave the URL empty, forms are not changed.\n* Check the terms and privacy policy of the service you choose, e.g. <a href=\"https:\/\/formspree.io\/legal\/terms-of-service\/\">Formspree Terms of Service<\/a>, <a href=\"https:\/\/formspree.io\/legal\/privacy-policy\/\">Formspree Privacy Policy<\/a>.<\/p>\n\n<p><strong>Your own FTP \/ SFTP server<\/strong>\n* The host you enter receives your login and the exported files on each deployment, and when you click \"Test connection\". No third party is involved.<\/p>\n\n<p><strong>External images<\/strong>\n* Only with \"Download external images to static export\" enabled: images hosted on other domains that are used in your content are downloaded from those domains during the export. Only a standard HTTP request for the image is made; no site data is sent.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>innofly-static-export<\/code> folder to <code>\/wp-content\/plugins\/<\/code>, or install the plugin from the Plugins screen.<\/li>\n<li>Activate the plugin.<\/li>\n<li>Open <strong>Innofly Static Export \u2192 Settings<\/strong>, choose the URL structure, link mode and deployment method.<\/li>\n<li>Open <strong>Innofly Static Export \u2192 Dashboard<\/strong> and click <strong>Export<\/strong>.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20the%20static%20site%20still%20need%20wordpress%3F\"><h3>Does the static site still need WordPress?<\/h3><\/dt>\n<dd><p>No. The export is plain HTML, CSS, JavaScript and media files. Keep WordPress (for example on a private or local server) to edit content and export again.<\/p><\/dd>\n<dt id=\"what%20about%20forms%2C%20comments%20and%20search%3F\"><h3>What about forms, comments and search?<\/h3><\/dt>\n<dd><p>Dynamic features need a server. The plugin can point forms to an external form service and adds a client-side search. Comments and other server-side features do not work on the static site.<\/p><\/dd>\n<dt id=\"my%20site%20is%20password%20protected%20%28http%20basic%20auth%29.\"><h3>My site is password protected (HTTP Basic Auth).<\/h3><\/dt>\n<dd><p>Enter the username and password under <strong>Settings \u2192 Site Password<\/strong>, or tick <strong>Remember my browser's login<\/strong> to reuse the login your browser sends.<\/p><\/dd>\n<dt id=\"exports%20stop%20or%20are%20very%20slow.\"><h3>Exports stop or are very slow.<\/h3><\/dt>\n<dd><p>Open <strong>Diagnostics<\/strong>. The plugin needs loopback requests (the site requesting its own pages). If they are blocked, it falls back to WP-Cron.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>First public release.<\/li>\n<\/ul>","raw_excerpt":"Export your WordPress site to static HTML and deploy it to GitHub Pages, FTP, SFTP or a local folder, or download it as a ZIP.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/394970","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=394970"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/innofly"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=394970"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=394970"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=394970"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=394970"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=394970"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=394970"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}