Features How it Works Use Cases vs Others FAQ Download Free →
Upload HTML Files Upload ZIP Packages No Theme Wrapper Version History CodeMirror Editor Bulk Upload Smart Caching Per-Page SEO Meta Webhook Support CDN Integration Import & Export Shortcode Embed Upload HTML Files Upload ZIP Packages No Theme Wrapper Version History CodeMirror Editor Bulk Upload Smart Caching Per-Page SEO Meta Webhook Support CDN Integration Import & Export Shortcode Embed
v2.2.0 — Free & Open Source WordPress Plugin

Publish Raw HTML
Inside WordPress.
No Wrapper. No Limits.

Upload any HTML file or ZIP package and get a real, standalone WordPress page that renders your design exactly as built — theme-free, pixel-perfect, and instantly live.

WordPress 5.0+ PHP 7.4+ GPL v2 Licensed No coding required 100% free forever
100MB
Max ZIP Upload
5
Version Snapshots
1hr
Cache TTL
0
Theme Dependencies

Built for professionals who work with real HTML

WordPress 5.0+ Cloudflare CDN BunnyCDN CodeMirror Editor REST API Webhook Events GPL v2 Licensed PHP 7.4+

Core Features

Everything you need to publish HTML in WordPress

From single-file uploads to full multi-asset ZIP packages — HTML to Page handles it all without touching your theme.

📂

HTML & ZIP Upload

Upload a single .html file or a full ZIP package with CSS, JS, fonts, and images. Everything is stored in a protected directory and served perfectly.

Core
🚫

Theme-Free Rendering

Pages render as raw HTML with zero WordPress theme wrapper, header, footer, or sidebar. Your design appears exactly as you coded it — nothing added, nothing removed.

Core
🕐

Version History

Every upload creates an automatic snapshot. Roll back to any of the last 5 versions with one click. No data is ever lost and the full history is included in exports.

Safety
✏️

In-Browser CodeMirror Editor

Edit your HTML directly inside the WordPress admin using a full-featured CodeMirror syntax editor with highlighting, find/replace, and line numbers. No FTP required for quick edits — make changes and publish in seconds.

Productivity

Smart 1-Hour Caching

HTML output is cached server-side for 1 hour and auto-purged on update. A daily cleanup cron removes stale cache files automatically.

Performance
🔍

Full SEO Control

Set a custom SEO title, meta description, and Open Graph image per page — independently from WordPress's default post data. No Yoast required.

SEO
📦

Bulk Upload

Upload and publish multiple HTML pages or ZIP packages simultaneously. Perfect for deploying large-scale projects or migrating an entire static site in one step.

Productivity
🔗

Webhook Events

Fire real-time JSON webhook payloads to any URL when pages are published, updated, or deleted. Integrate seamlessly with Zapier, Make, n8n, or custom pipelines.

Automation
🌐

CDN Integration

Native support for Cloudflare and BunnyCDN. Configure your pull zone and the plugin auto-purges CDN cache on every page update — no manual clearing needed.

Performance
🎨

Custom CSS & JS Per Page

Inject custom CSS or JavaScript into any individual HTML page without editing the source file. Perfect for tracking scripts, analytics, or per-page design tweaks.

Developer
📤

Import & Export

Export all your HTML pages and their full version history into a single ZIP backup. Re-import them on any WordPress site instantly — complete site migration in seconds.

Workflow

How It Works

From file to live page in four steps

No complex configuration. No theme editing. No developer required.

01

Install Plugin

Search "HTML to Page" in the WordPress plugin directory or upload the ZIP directly from your admin panel.

02

Upload Your File

Create a new HTML Page entry and upload your .html file or a .zip package with all assets.

03

Set Your URL Slug

Choose a URL slug. The plugin checks for conflicts with existing WordPress content and configures routing automatically.

04

Publish & Share

Hit publish. Your HTML page is instantly live at your chosen URL, rendering exactly as designed — cached and CDN-ready.

Under the hood

Zero theme interference — guaranteed

When WordPress would normally load your theme, HTML to Page intercepts and serves your raw file directly from cache.

WordPress Template Routing — html-to-page
// Request arrives: GET /page/my-design/
WordPress identifies custom post type: htp_page
template_redirect hook fires — theme loading intercepted
Cache lookup: htp-cache/[page-hash].html  HIT — serving cached HTML
Security: realpath() guard — path traversal blocked
Response headers: Content-Type: text/html; charset=UTF-8
✓ Raw HTML served. WordPress theme: never loaded.

Admin Tools

A full management suite inside WordPress

Version, edit, automate, and optimise your HTML pages without ever leaving the dashboard.

🗂

Version Control

Every upload creates a versioned snapshot stored in a protected directory. Roll back instantly or export the complete history.

  • 5 automatic snapshots kept per page — oldest auto-pruned
  • One-click restore — revert to any previous upload immediately
  • Version metadata — timestamp and upload type stored per revision
  • Export includes history — full version archive in backup ZIPs
💻

CodeMirror Editor

Edit HTML directly in the browser with a professional-grade code editor. No FTP, no external tools required.

  • Syntax highlighting — full HTML, CSS, and JS support
  • Find & replace — search across the entire document
  • Line numbers & indentation — keeps your code readable
  • Save and publish — directly from within the editor
🔔

Webhook System

React to any page lifecycle event with configurable webhooks — perfect for CI/CD pipelines and automation platforms.

  • Three event types — published, updated, deleted
  • Structured JSON payload — page ID, title, slug, URL, status
  • Multiple endpoint URLs — add as many receivers as you need
  • Non-blocking delivery — fire-and-forget, never slows your site
🚀

Performance & CDN

Server-side caching, optional minification, lazy loading, and CDN auto-purge — all built in, no extra plugins needed.

  • 1-hour HTML cache — auto-invalidated on update, daily cron cleanup
  • Cloudflare & BunnyCDN — native API with auto-purge on save
  • GZip compression — optional response compression toggle
  • Image optimisation — optional lazy load & compression

Technical Specs

Built for scale

100MB
Max ZIP upload size
↑ Configurable per site
50MB
Max HTML file size
↑ Configurable per site
3600s
Cache TTL (1 hour)
→ Auto-invalidated on save
5
Version snapshots kept
→ Oldest auto-pruned

Use Cases

Who uses HTML to Page?

Designers, agencies, developers, and marketers who need to deploy real HTML without fighting WordPress themes.

🎨

Web Designers & Agencies

Deliver pixel-perfect client sites built in Webflow, Figma-to-code tools, or hand-coded — and host them inside WordPress without touching a theme.

  • Deploy Webflow exports directly
  • Host Figma-to-HTML builds
  • Keep client WordPress dashboards
🛬

Landing Page Builders

Publish high-converting landing pages without Elementor or Divi overhead. Zero page builder conflicts, zero performance tax.

  • No page builder dependency
  • Per-page SEO & OG image control
  • Embed inside existing WP posts
⚙️

Developers & DevOps

Automate static site deployments into WordPress via webhooks, REST API, and the bulk import/export system. Built for CI/CD.

  • Webhook on publish/update/delete
  • ZIP package bulk imports
  • PHP template tag API
📊

Marketers & Growth Teams

Launch A/B test variants, promo microsites, and event pages under your WordPress domain — without needing a developer every time.

  • Custom URL slugs per page
  • Inject tracking scripts via custom JS
  • Version rollback for experiments
📚

Documentation & Portals

Host Docusaurus, VuePress, or other static generator builds as rich interactive documentation under your WordPress domain.

  • Serve Docusaurus / VuePress
  • ZIP multi-file package support
  • Embed in WP posts via shortcode
🎮

Interactive & App-Like Pages

Embed Three.js experiences, canvas animations, single-page apps, or any JS-heavy interactive experience — full script execution guaranteed.

  • Full JS execution — no sandboxing
  • External assets served from ZIP
  • Custom JS injection per page

Compatibility

Works with your existing stack

HTML to Page is designed to coexist peacefully with the plugins and services you already use.

☁️
Cloudflare
Native API integration using your Zone ID and API token — automatic cache purge on every page update.
🐰
BunnyCDN
Built-in pull zone support with API key configuration. Cache auto-purges whenever a page is saved.
🔌
REST API
HTML Pages are registered with show_in_rest: true — fully accessible via the WordPress REST API.
Zapier / Make / n8n
Webhook events work out of the box with any HTTP webhook receiver including Zapier, Make, and n8n.
🔒
Security Hardened
Path-traversal guards, .htaccess protection on upload dirs, PHP execution blocked in all HTML storage folders.
🐛
Debug Mode
Optional debug logging to a protected .log file with 1MB auto-rotation — visible only to site admins.
📦
Any HTML Tool
Webflow, Framer, Figma exports, Pinegrow, Bootstrap Studio, hand-coded HTML — any source works perfectly.
🌐
Slug Conflict Detection
Real-time slug conflict checker warns you before publishing if another WordPress post or page uses the same URL.

vs Alternatives

Why HTML to Page wins

See how it stacks up against other methods of getting raw HTML into WordPress.

Capability HTML to Page Elementor / Divi Custom Template iframe Embed
Theme-free page rendering Full isolation Theme always loaded ~ Manual override ~ iframe only
ZIP package support
Version history & rollback 5 versions
In-browser code editor CodeMirror ~ Proprietary builder FTP only
Server-side caching 1hr TTL ~ Via cache plugins ~ Via cache plugins
Webhook events
CDN integration (Cloudflare/Bunny)
Per-page SEO meta Built-in Paid plans ~ Manual code
Import / export all pages
Cost Free forever $49–$199/yr Dev time Free

Pricing

It's completely free.

HTML to Page is GPL-licensed and free forever. No Pro tier. No feature gates. No upsells. Everything listed on this page is included at zero cost.

Download from WordPress.org →
HTML & ZIP upload Theme-free rendering 5-version history CodeMirror editor Smart caching SEO meta per page Webhook events CDN integration Custom CSS & JS Bulk upload Import & export Shortcode embed

Get Started

Install in under 2 minutes

Three steps from zero to your first published HTML page.

01
🔌

Install the Plugin

Go to WordPress Admin → Plugins → Add New and search for "HTML to Page" by Mubashir Hassan, or upload the plugin ZIP directly from your admin panel.

Plugins → Add New → Search "HTML to Page"
02
📂

Create Your First Page

After activation you'll see HTML Pages in the left sidebar. Click Add New, give it a title, upload your HTML or ZIP, then set a URL slug.

Admin Sidebar → HTML Pages → Add New
03
🚀

Publish & Done

Click Publish. Your HTML page is now live at your chosen URL — fully rendered, theme-free, cached, and ready to share.

yoursite.com/page/your-slug/

FAQ

Common questions

No. HTML to Page intercepts WordPress's template routing before the theme ever loads. Your HTML is served as a raw file with a plain text/html header — no WordPress header, footer, sidebar, or stylesheet is ever injected.

You can upload a single .html file (up to 50MB by default) or a .zip package (up to 100MB by default) containing HTML, CSS, JavaScript, images, fonts, and any other assets. Both limits are configurable in the plugin settings.

Every time you upload a new file to an existing HTML Page, the previous version is automatically snapshotted and stored. The plugin keeps the last 5 versions per page. You can:

  • View all available versions in the page editor
  • Restore any previous version with one click
  • Include the full version history in your site's export backup

Yes. Use the shortcode [htp_page id="123"] or [htp_page slug="my-page"] in any post or page. It embeds via a secure iframe with configurable width and height. PHP developers can also use htp_embed_page(123) or htp_get_page_html(123) directly in templates.

Yes. Several security measures are applied automatically on activation:

  • PHP execution is blocked in all upload directories via .htaccess
  • Directory listing is disabled with Options -Indexes
  • All file serving includes a real-path traversal guard — no files outside the allowed directory can be accessed
  • Embedded pages use WordPress nonce tokens for access validation

In the plugin settings, add one or more webhook URLs (one per line). The plugin fires a non-blocking HTTP POST with a JSON payload whenever a page is published, updated, or deleted. The payload includes page ID, title, slug, URL, status, type, and event type.

Yes. The plugin has native integration for both Cloudflare (using your Zone ID and API token) and BunnyCDN (using your pull zone name and API key). When configured, the plugin automatically purges the relevant CDN cache every time a page is saved or updated.

Completely free, GPL v2 licensed, and open source. There is no Pro version, no feature gates, and no subscription. The plugin is developed and maintained by Mubashir Hassan. A review on WordPress.org or a share is always appreciated!

Ready?

Deploy your first HTML page
in two minutes.

Free forever. No account needed. Works with any WordPress 5.0+ site.

⬇ Download from WordPress.org View Documentation →

GPL v2 · No registration · No credit card · WordPress 5.0+ · PHP 7.4+