{"id":394006,"date":"2026-10-28T13:16:31","date_gmt":"2026-10-28T13:16:31","guid":{"rendered":"https:\/\/ja.wordpress.org\/plugins\/fstyle-static-html-export\/"},"modified":"2026-10-31T03:22:53","modified_gmt":"2026-10-31T03:22:53","slug":"fstyle-static-export","status":"publish","type":"plugin","link":"https:\/\/az.wordpress.org\/plugins\/fstyle-static-export\/","author":23498923,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"0.3.3","stable_tag":"0.3.3","tested":"7.1.4","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"Fstyle Static HTML Export","header_author":"fstyle","header_description":"Exports your WordPress site as static HTML files. Fetches pages concurrently, retries on 429 (Too Many Requests), and lists broken links.","assets_banners_color":"","last_updated":"2026-10-31 03:22:53","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":109,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"0.3.2":{"tag":"0.3.2","author":"fstylegear09543","date":"2026-10-28 13:16:14","revision":3770758},"0.3.3":{"tag":"0.3.3","author":"fstylegear09543","date":"2026-10-31 03:22:53","revision":3776308}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3771810,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3771810,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":[],"assets_blueprints":{},"all_blocks":[],"tagged_versions":["0.3.2","0.3.3"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3771810,"resolution":"1","location":"assets","locale":"","width":1519,"height":690},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3771810,"resolution":"2","location":"assets","locale":"","width":1519,"height":300},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3771810,"resolution":"3","location":"assets","locale":"","width":1519,"height":495},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3771810,"resolution":"4","location":"assets","locale":"","width":1519,"height":410}},"screenshots":{"1":"The export screen under Tools, with the settings and the export buttons.","2":"Progress during an export, including retries after 429 responses.","3":"The result: pages, files, broken links and URLs that could not be fetched.","4":"The pre-export check listing forms and other parts that do not work on a static site."}},"plugin_section":[],"plugin_tags":[14279,1859,246,17693,250566],"plugin_category":[59],"plugin_contributors":[263348],"plugin_business_model":[],"class_list":["post-394006","plugin","type-plugin","status-publish","hentry","plugin_tags-broken-links","plugin_tags-export","plugin_tags-html","plugin_tags-static","plugin_tags-static-site","plugin_category-utilities-and-tools","plugin_contributors-fstylegear09543","plugin_committers-fstylegear09543"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/fstyle-static-export\/assets\/icon-128x128.png?rev=3771810","icon_2x":"https:\/\/ps.w.org\/fstyle-static-export\/assets\/icon-256x256.png?rev=3771810","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/fstyle-static-export\/assets\/screenshot-1.png?rev=3771810","caption":"The export screen under Tools, with the settings and the export buttons."},{"src":"https:\/\/ps.w.org\/fstyle-static-export\/assets\/screenshot-2.png?rev=3771810","caption":"Progress during an export, including retries after 429 responses."},{"src":"https:\/\/ps.w.org\/fstyle-static-export\/assets\/screenshot-3.png?rev=3771810","caption":"The result: pages, files, broken links and URLs that could not be fetched."},{"src":"https:\/\/ps.w.org\/fstyle-static-export\/assets\/screenshot-4.png?rev=3771810","caption":"The pre-export check listing forms and other parts that do not work on a static site."}],"raw_content":"<!--section=description-->\n<p>Fstyle Static HTML Export crawls your own site and saves every page, together with the CSS, JavaScript, images and other files it uses, as plain HTML files. You can upload the result to any web server or open it locally.<\/p>\n\n<p><strong>Features<\/strong><\/p>\n\n<ul>\n<li><strong>Fast, concurrent fetching.<\/strong> Several pages are fetched at the same time (configurable). Static files under wp-content and wp-includes are copied straight from disk instead of over HTTP.<\/li>\n<li><strong>Automatic retries on 429 and 503.<\/strong> When the server answers \"Too Many Requests\" or \"Service Unavailable\" (or a request times out), the page is not skipped. The plugin waits (it honors Retry-After), lowers the number of concurrent requests, and tries again. Once requests succeed again, the concurrency is raised step by step.<\/li>\n<li><strong>Broken link report.<\/strong> After the export, every internal link and file reference in the exported HTML and CSS is checked. Missing files are listed, separately from links that are also broken on the original site, pages that could not be fetched, and links to dynamic WordPress URLs.<\/li>\n<li><strong>Relative or absolute URLs.<\/strong> Export with relative URLs, so the folder works from any location, or rewrite all URLs to the domain where the static site will be published. Optionally add index.html to relative links, so the folder can be browsed directly from disk.<\/li>\n<li><strong>Pre-export check.<\/strong> Finds parts that will stop working on a static site, such as comment forms, search forms, contact forms, admin-ajax.php and REST API calls, and nonces.<\/li>\n<li><strong>Resumable.<\/strong> Progress is saved continuously. If the browser is closed or a request fails, the export can be resumed where it stopped.<\/li>\n<li><strong>Updated posts only.<\/strong> Re-export only the posts that changed since the previous export, reusing the rest.<\/li>\n<li><strong>Zip download<\/strong> of the finished export.<\/li>\n<li><strong>WP-CLI support.<\/strong> Run <code>wp fsse export<\/code> to export without the time limits of a web request.<\/li>\n<\/ul>\n\n<p>The exported files are saved in <code>wp-content\/uploads\/fsse-export\/{date-time}\/<\/code>. The plugin places <code>.htaccess<\/code> and an empty <code>index.html<\/code> in that folder so that the files cannot be accessed from outside. On nginx, <code>.htaccess<\/code> is not used: configure the server so that this folder cannot be accessed from outside.<\/p>\n\n<p><strong>WP-CLI<\/strong><\/p>\n\n<pre><code>wp fsse export [--concurrency=&lt;n&gt;] [--url-mode=&lt;relative|absolute&gt;] [--target=&lt;url&gt;] [--alias=&lt;hosts&gt;] [--exclude=&lt;prefixes&gt;] [--changed] [--resume=&lt;id&gt;] [--dir-index] [--skip-ssl-verify] [--zip] [--json]\n\nwp fsse report &lt;id&gt; prints the result of an export as JSON.\n<\/code><\/pre>\n\n<h3>External services<\/h3>\n\n<p>This plugin does not connect to any third-party or external service. It only sends HTTP requests to your own site (the home URL and the domains you list as \"Domains treated as this site\") to fetch the pages it exports. No data is sent to the plugin author or anyone else.<\/p>\n\n<p>The plugin removes some WordPress head links from the exported HTML, such as <code>&lt;link rel=\"https:\/\/api.w.org\/\"&gt;<\/code>. This only matches the text of that link in your own pages; the plugin never sends a request to api.w.org.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>fstyle-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>Go to <strong>Tools &gt; Static HTML Export<\/strong>.<\/li>\n<li>Optionally click <strong>Check before export<\/strong> to see which parts of your site will not work as static HTML.<\/li>\n<li>Click <strong>Export everything<\/strong>. Keep the page open until the export has finished, then download the zip or copy the folder.<\/li>\n<\/ol>\n\n<p>On shared hosting, start with 2 to 3 concurrent requests. On a local copy of the site you can use more (WP-CLI uses 12 by default).<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20the%20plugin%20send%20any%20data%20to%20external%20services%3F\"><h3>Does the plugin send any data to external services?<\/h3><\/dt>\n<dd><p>No. The plugin only sends HTTP requests to your own site (the home URL and the domains you list as \"Domains treated as this site\"). Nothing is sent to the plugin author or any third party, and no tracking is included.<\/p><\/dd>\n<dt id=\"what%20does%20not%20work%20on%20a%20static%20site%3F\"><h3>What does not work on a static site?<\/h3><\/dt>\n<dd><p>Anything that needs PHP or the database when a visitor uses it: comment forms, the built-in search, contact forms, login, admin-ajax.php and REST API calls (likes, view counters, infinite scroll, etc.), and nonces (they keep the value from the export time and are rejected after a few days). The pre-export check and the result screen list the pages where these were found, so you can replace them (for example with an external form service) or exclude those URLs.<\/p><\/dd>\n<dt id=\"where%20are%20the%20files%20saved%3F%20are%20they%20deleted%20when%20i%20uninstall%20the%20plugin%3F\"><h3>Where are the files saved? Are they deleted when I uninstall the plugin?<\/h3><\/dt>\n<dd><p>In <code>wp-content\/uploads\/fsse-export\/<\/code>. The plugin adds <code>.htaccess<\/code> (Apache) and an empty <code>index.html<\/code> to this folder so that the exported files and zip files cannot be opened directly from outside; download the zip from the plugin screen. On nginx, configure the server so that this folder cannot be accessed from outside. Uninstalling the plugin deletes only its settings. The exported files are kept; delete the folder yourself if you no longer need it.<\/p><\/dd>\n<dt id=\"the%20export%20stopped%20in%20the%20middle.\"><h3>The export stopped in the middle.<\/h3><\/dt>\n<dd><p>Click <strong>Resume<\/strong>. Progress is saved after every step. If your server limits requests, lower the number of concurrent requests in the settings. With WP-CLI, use <code>wp fsse export --resume=&lt;id&gt;<\/code>.<\/p><\/dd>\n<dt id=\"my%20site%20uses%20a%20self-signed%20certificate%20in%20a%20local%20environment.\"><h3>My site uses a self-signed certificate in a local environment.<\/h3><\/dt>\n<dd><p>SSL certificates are verified by default. If your local copy of the site uses a self-signed certificate, the requests to your own site will fail. In that case, check <strong>Do not verify SSL certificates<\/strong> in the settings (it is off by default), use <code>wp fsse export --skip-ssl-verify<\/code>, or add this filter: <code>add_filter( 'fsse_verify_ssl', '__return_false' );<\/code>. Do not turn verification off on a public site.<\/p><\/dd>\n<dt id=\"is%20the%20plugin%20translated%3F\"><h3>Is the plugin translated?<\/h3><\/dt>\n<dd><p>The plugin is translation-ready (text domain <code>fstyle-static-export<\/code>). Translations are provided through translate.wordpress.org.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>0.3.3<\/h4>\n\n<ul>\n<li>The export folder (wp-content\/uploads\/fsse-export) is now protected from direct access: <code>.htaccess<\/code> and an empty <code>index.html<\/code> are added if they do not exist yet (existing files are not overwritten), and an empty <code>index.html<\/code> is added to each export folder. A notice is shown when they cannot be written. On nginx, block access to the folder in the server settings.<\/li>\n<li>The examples of \"Remaining URLs of this site\" in the result are shorter: about 40 characters around the match, at most 3 per row.<\/li>\n<\/ul>\n\n<h4>0.3.2<\/h4>\n\n<ul>\n<li>Translation files are no longer bundled. Translations are provided through translate.wordpress.org.<\/li>\n<li>Removed an unnecessary include of wp-admin\/includes\/file.php.<\/li>\n<li>Added the \"External services\" section to the readme.<\/li>\n<\/ul>\n\n<h4>0.3.1<\/h4>\n\n<ul>\n<li>Requests to your own site now use the Requests library bundled with WordPress instead of calling cURL directly.<\/li>\n<li>The URL entered for \"Absolute URLs\" is sanitized before it is saved.<\/li>\n<\/ul>\n\n<h4>0.3.0<\/h4>\n\n<ul>\n<li>All text is now in English and translatable. A Japanese translation is included.<\/li>\n<li>SSL certificates are verified by default. For local environments with a self-signed certificate, verification can be turned off in the settings, with <code>--skip-ssl-verify<\/code>, or with the new <code>fsse_verify_ssl<\/code> filter.<\/li>\n<li>Files are written with WP_Filesystem.<\/li>\n<li>Settings are deleted when the plugin is uninstalled.<\/li>\n<li>Added readme.txt.<\/li>\n<\/ul>\n\n<h4>0.2.0<\/h4>\n\n<ul>\n<li>Faster recovery after 429 responses: concurrency is lowered at most once per second and raised by 1.5 times after a series of successful requests.<\/li>\n<li>New option to add index.html to relative links (settings screen and <code>wp fsse export --dir-index<\/code>).<\/li>\n<\/ul>\n\n<h4>0.1.0<\/h4>\n\n<ul>\n<li>First prototype: export screen, WP-CLI command, retries on 429\/503, broken link report.<\/li>\n<\/ul>","raw_excerpt":"Export your WordPress site as static HTML files. Fast concurrent fetching, automatic retries on 429, and a list of broken links.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/az.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/394006","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/az.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/az.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/az.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=394006"}],"author":[{"embeddable":true,"href":"https:\/\/az.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/fstylegear09543"}],"wp:attachment":[{"href":"https:\/\/az.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=394006"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/az.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=394006"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/az.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=394006"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/az.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=394006"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/az.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=394006"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/az.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=394006"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}