Use Etherpad to write and collaborate on HTML, CSS, and JavaScript.
Pull request Compare This branch is 8 commits behind hackasaurus:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


By Atul Varma

This is a simple Web application that, for any URL path, serves the contents of an Etherpad with the same path with the MIME type text/html.

For example, if the application is served from and the Etherpad backend it's configured to use is at, then visiting will deliver the contents of as HTML.

This effectively allows people to easily collaborate on writing HTML, and it provides a very fast feedback loop between trying something out, seeing how it looks in the browser, and sharing it with others.


Just run python runserver and open your browser to http://localhost:8000. As you save changes to HTMLpad's source code, the server will automatically apply them, allowing you to iterate quickly.


While HTMLpad is a Django application, you don't need to have Django installed system-wide. That's because running automatically creates a virtual environment, downloads and installs the appropriate version of Django and any other dependencies, and activates the virtual environment for the duration of the script.

However, this can sometimes result in a broken virtual environment, particularly if is aborted while it's still setting things up. If anything goes amiss, try wiping the .virtualenv directory and starting over.


You can run python install to install the htmlpad Django application package into any environment, including virtual ones.

This Django application assumes the following custom settings variables:

  • HTMLPAD_ROOT is the string prefix, including any trailing slash but no leading slash, of the HTMLpad instance on the Web server. It can be an empty string. For example, if a user browses to to access your HTMLpad's root, then the setting's value is 'mypad/'.

  • ETHERPAD_HOST is the Etherpad instance that your HTMLpad delegates to, formatted as a hostname:port string.

See the hackasaurus-puppet-data repository for Puppet deployment files.

Security Considerations

Because the HTMLpad simply delivers universally-writeable Etherpad content as raw HTML, an HTMLpad instance should probably be served on its own dedicated domain.