JavaScript Survey.
Made Easy

Create a fully-customizable survey and take advantage of formJS superpowers.
Need only the survey? Try Lite version.


Only 4.9KB ( Lite version 3.7KB ) minified & gzipped

Download Latest Version | All Releases

Browsers Support

surveyJS is compatible with ( desktop & mobile versions ):

* for compatibility with IE, old versions of Edge and/or other old browsers you may need to load some JS polyfills ( from or else ):
Array.from Element.prototype.closest Element.prototype.matches Promise Promise.prototype.finally AbortController fetch CustomEvent

<script src=",Element.prototype.closest,Element.prototype.matches,Promise,Promise.prototype.finally,AbortController,fetch,CustomEvent"></script>


  • 4.0.1
    • Add eslint to dev dependencies
    • Fix issue of not imported dependency in validationEnd
    • Minor improvements
  • 4.0.0
    • Added method "destroy" to Lite version
    • Updated dependency: formJS v5.2.0+ ( full version only )
    • Switched usage of JS Event with CustomEvent
  • 3.0.2
    • Exported main versions as UMD instead of IIFE for better environments compatibility
  • 3.0.1
    • Fixed bug on fetch response not ok on ajax call during initalization
  • 3.0.0
    • Added Lite version
    • Huge refactoring of survey creation and related options
    • Survey class now extends Form class so it inherits all features
    • Updated dependency: formJS v4.3.0+
    • Switched bundler, from Webpack to Rollup and exported lib also as ES & SystemJS Modules
    • Switched "useLocalStorage" with "useWebStorage" option in "options". Now using session storage instead of local storage
    • Removed "hidden-privacy" in JSON data, and added "external": true, to set external questions
    • Removed method "init". It now runs inside instance call and emits event
    • Removed options.fieldOptions.validateOnEvents since it uses formJS default value
    • Removed some props from instance "internals"
    • Removed title and subtitle from JSON data and core functionality ( can be done manually )
    • Minor improvements and bugfixes
  • 2.0.4
    • Updated dev dependencies
  • 2.0.3
    • Updated dependency: formJS 3.3.2 ( new options are available )
    • Minor improvements
  • 2.0.2
    • Minor code improvements.
  • 2.0.1
    • Project published on NPM.
    • Updated webpack config to export library as UMD Module.
    • Updated dependency: formJS 3.1.2
    • Removed "SurveyJS" as alternative namespace.
  • 2.0.0
    • Rewritten with ES6
    • Added possibility to set "subtype" in JSON file to enable "data-subtype" attribute on input fields and take advantage of formJS custom validations.
    • Added possibility to set "validateIfFilled" in JSON file to enable "data-validate-if-filled" attribute on input fields as per formJS spec.
    • Updated dependency: formJS 3.1.0
    • Bugfix and improvements
  • 1.6.1
    • Updated dependency: formJS 2.3.3
  • 1.6.0
    • Updated dependency: formJS 2.3.2 - Survey validation and submit is now automatically handled via formJS initialization.
    • Updated dependency: Bootstrap 4 CSS.
    • Renamed option "setJSONurl" with "url".
    • Added "useLocalStorage" option in "options".
    • Added "cssClasses" in "options".
    • Added support for "maxlength" ( number ) in JSON file. For textareas, the value will make the plugin add maxlength attribute with the specified value.
    • Changed attribute "data-max-check" with "data-checks" ( "checks" in JSON file ) as for new formJS version.
    • Changed some CSS classes in default HTML templates.
    • Changed some CSS classes related to the survey graphic.
    • Moved all ( or almost all ) the template string options in "templates".
    • Moved "beforeSend", "onSubmitComplete", "onSubmitError", "onSubmitSuccess" in "formOptions" as for formJS plugin.
    • Moved "onValidation" in "fieldOptions" as for formJS plugin.
    • Removed "graphicInput" option in "options".
    • Bugfix & many changes under the hood.
  • 1.5.2
    First stable version ( with formJS v1.2.0 )


If you find a bug, please report it here