Cross browser rich text editor

Quill Rich Text Editor

Quill is a modern rich text editor built for compatibility and extensibility. It was created by Jason Chen and Byron Milligan and open sourced by Salesforce.com.

To get started, check out the Quill Github Page or jump straight into the demo.

Instantiate a new Quill object with a css selector for the div that should become the editor.

<!-- Create the toolbar container -->
<div id="toolbar">
  <button class="ql-bold">Bold</button>
  <button class="ql-italic">Italic</button>
<!-- Create the editor container -->
<div id="editor">
  <div>Hello World!</div>
<!-- Include the Quill library -->
<script src="http://cdn.quilljs.com/latest/quill.js"></script>
<!-- Initialize Quill editor -->
  var editor = new Quill('#editor');
  editor.addModule('toolbar', { container: '#toolbar' });

There are a number of ways to download the latest or versioned copy of Quill.

  • npm: npm install quill
  • bower: bower install quill
  • tar: https://github.com/quilljs/quill/releases
<link rel="stylesheet" href="//cdn.quilljs.com/0.19.10/quill.snow.css" />
<script src="//cdn.quilljs.com/0.19.10/quill.min.js"></script>

Quill's source is in Coffeescript and utilizes Browserify to organize its files.

npm install -g grunt-cli
npm install
grunt dist - compile and browserify
grunt server - starts a local server that will build and serve assets on the fly

With the local server (grunt server) running you can try out some minimal examples on:

Quill releases also contain these examples as built static files you can try without needing to run the local development server.

grunt test:unit - runs javascript test suite with Chrome
grunt test:e2e - runs end to end tests with Webdriver + Chrome
grunt test:coverage - run tests measuring coverage with Chrome

Tests are run by Karma and Protractor using Jasmine. Check out Gruntfile.coffee and config/grunt/ for more testing options.

Get help or stay up to date.

  • Follow @quilljs on Twitter
  • Ask questions on Stack Overflow (tag with quill)
  • If a private channel is required, you may also email support@quilljs.com

Search through Github Issues to see if the bug has already been reported. If so, please comment with any additional information about the bug.

For new issues, create a new issue and tag with the appropriate browser tag. Include as much detail as possible such as:

  • Detailed description of faulty behavior
  • Affected platforms
  • Steps for reproduction
  • Failing test case

The more details you provide, the more likely we or someone else will be able to find and fix the bug.

We welcome feature requests. Please make sure they are within scope of Quill's goals and submit them in Github Issues tagged with the 'feature' tag. The more complete and compelling the request, the more likely it will be implemented. Garnering community support will help as well!

  1. Please check to make sure your plans fall within Quill's scope (likely through Github Issues).
  2. Fork Quill
  3. Branch off of the 'develop' branch.
  4. Implement your changes.
  5. Submit a Pull Request.

Pull requests will not be accepted without adhering to the following:

  1. Conform to existing coding styles.
  2. New functionality are accompanied by tests.
  3. Serve a single atomic purpose (add one feature or fix one bug)
  4. Introduce only changes that further the PR's singular purpose (ex. do not tweak an unrelated config along with adding your feature).

Important: By issuing a Pull Request you agree to allow the project owners to license your work under the terms of the License.

Swift, for providing the npm package name. If you're looking for his blogging engine see v0.1.5-1.

BSD 3-clause