Getting started

  1. How KO works and what benefits it brings
  2. Downloading and installing


  1. Creating view models with observables
  2. Working with observable arrays

Computed observables

  1. Using computed observables
  2. Writable computed observables
  3. How dependency tracking works
  4. Pure computed observables
  5. Reference


Controlling text and appearance

  1. The visible and hidden bindings
  2. The text binding
  3. The html binding
  4. The class and css bindings
  5. The style binding
  6. The attr binding

Control flow

  1. The foreach binding
  2. The if and ifnot bindings
  3. The with and using bindings
  4. The let binding
  5. The component binding
  6. Binding lifecycle events

Working with form fields

  1. The click binding
  2. The event binding
  3. The submit binding
  4. The enable and disable bindings
  5. The value binding
  6. The textInput binding
  7. The hasFocus binding
  8. The checked binding
  9. The options binding
  10. The selectedOptions binding
  11. The uniqueName binding

Rendering templates

  1. The template binding

Binding syntax

  1. The data-bind syntax
  2. The binding context

Creating custom bindings

  1. Creating custom bindings
  2. Controlling descendant bindings
  3. Supporting virtual elements
  4. Custom disposal logic
  5. Preprocessing: Extending the binding syntax


  1. Overview: What components and custom elements offer
  2. Defining and registering components
  3. The component binding
  4. Using custom elements
  5. Advanced: Custom component loaders

Further techniques

  1. Loading and saving JSON data
  2. Extending observables
  3. Deferred updates
  4. Rate-limiting observables
  5. Unobtrusive event handling
  6. Using fn to add custom functions
  7. Microtasks
  8. Asynchronous error handling


  1. The mapping plugin

More information

  1. Browser support
  2. Getting help
  3. Links to tutorials & examples
  4. Usage with AMD using RequireJs (Asynchronous Module Definition)


Get the latest stable production build of Knockout.js:

Also available: debug build. Note: This is only intended to help you understand how Knockout works. Don't use it for normal application development, because it exposes additional unsupported private APIs.


Knockout is available through the Bower package manager. Learn more about using and installing Bower at To add Knockout to your application, you can run:

bower install knockout

Additionally, you can include the --save option to add knockout to your bower.json file.


Simply reference the JavaScript file using a <script> tag somewhere on your HTML pages. For example,

<script type='text/javascript' src='knockout-3.5.1.js'></script>

Of course, update the src attribute to match the location where you put the downloaded file. Next, if you’re new to Knockout, get started with interactive tutorials, see some live examples, or dig into documentation about observables.

Content Delivery Networks (CDNs)

To give your users the fastest download speeds, you might instead prefer to reference knockout.js on one of the following third-party CDNs:

Archive of all versions

  • jquery.tmpl (debug) — the old jQuery Templates plugin sometimes used with older versions of Knockout.js. This approach to templating has been deprecated since Knockout v2.0.0.