Download · v0.2.0

Get Writer.

The v0.2.0 ZIP contains everything you need to start: browser bundles, render-only core, examples and the PHP/Python SDKs. No framework, no build step, MIT licensed.

637 KB Browser · PHP · Python MIT offline-ready

Contents

One archive, three ways to use it.

The browser bundles are self-contained. The SDK sources are included so the same document can produce HTML, IR, JSON, text or Markdown from JS, PHP and Python.

Browser

writer.min.js for editor + core, writer-core.min.js for render-only pages. Script tag or Writer.mount().

Web Components · no bundler

PHP

Source, composer.json and README. WriterRender($md)->asHTML() works server-side, with Dompdf once you install it.

PHP 8.1+ · Composer

Python

Package source, pyproject.toml and README. WriterRender(md).as_html(), with ReportLab for PDF.

Python 3.9+ · pip

New in v0.2.0

Production & Trust.

Version 0.2.0 makes Writer safe for untrusted Markdown and ready for server-side use. The full list is in the changelog.

Security by default

Raw HTML is sanitised at the IR boundary, and the same IR feeds HTML and PDF. URLs are checked against one shared allowlist.

sanitised IR

Real PDF

@writer/pdf produces real bytes with embedded fonts for Greek and Cyrillic.

@writer/pdf

Framework-ready

React, Vue and Svelte wrappers, server examples for Express, Laravel and Django, and 32 conformance fixtures.

32 fixtures

Quickstart

From the ZIP to your first render.

Open examples/editor.html or examples/render.html for ready-made pages. The snippets below work with the files in the ZIP.

editor.html
<link rel="stylesheet" href="./browser/writer.css">
<script src="./browser/writer.min.js"></script>

<div id="app"></div>
<script>
  const editor = Writer.mount('#app', {
    value: '# Hello from Writer',
    theme: 'serif-editorial',
  });

  editor.addEventListener('wr-change', () => {
    console.log(editor.getMarkdown());
  });
</script>
render.html
<script src="./browser/writer-core.min.js"></script>
<script>
  const html = Writer.WriterRender(
    '# Hello\n\n**World**'
  ).asHTML();

  document.querySelector('#output').innerHTML = html;
</script>

Files

Individual downloads.

If you do not need the whole ZIP, download just the bundle you need.

FileSizeUseDownload
writer.min.js436 KBFull editor + core.Download
writer.js887 KBUnminified, for debugging.Download
writer-core.min.js321 KBRender-only, without the editor UI.Download
writer.css1.4 KBOptional page-level tokens.Download
manifest.json1.1 KBVersion and hashes of the bundles.Download

The gzip sizes are ≈130 KB for the full bundle and ≈100 KB for the core. The ZIP contains both.

Integrity

Check it before you run it.

SHA-256 for the ZIP and the main browser files. The hashes are also in manifest.json.

sha256
bd6932961df52c5ad78602a03f3cf5a2146e27902a15dbc1cb7e4d36d64fa819  writer-0.2.0.zip
9cd924a0df8a1998a17feb73351b274157d250acccfc89dd0a8475db25f7e56a  writer.min.js
29e166e3f83e3e232003209a401c65924d1f6b9277b0dbbd8c9eaa8179cd32d6  writer-core.min.js
1807b7cb14b136d1de1da2c714a874f55ef0cea5f8c45d37fc5f2f78d9c39556  writer.js
9c632229a27b07c47e18a719fdf6d19afe48ed7380e169f29c5a9e00b0178c70  writer.css

Ready to embed

See it working first.

The editor, IR and renderers are live in the demos — no installation.