JavaScript Surveys and Forms Library
The most Advanced and Free
developer tool
for the modern web.

Different Web Development
Platforms, Simple Integration
The SurveyJS Library has versions for several popular JavaScript Frameworks. Examples are available for: Angular, jQuery , Knockout , React , and Vue.js
Visit our Service Examples page for different server platforms
(PHP, ASP.Net Core MVC, NodeJS).
Easy to start
We facilitated integrating the survey into your web application. Go to our survey creator page, create a survey, then go to Survey Creator's “Embed Survey” tab and get the code you need to insert into your page. Refer to our Add Survey into your Web Page document for more information.
Right library for many projects and scenarios
We have been developing and supporting our library for several years. We helped hundreds of companies across many industries.
We carefully reviewed every survey and form from our customers to add the necessary functionality that covers all the popular scenarios.
We are confident, that you can build almost everything, that popular cloud services offer, using SurveyJS library.
You can extend our SurveyJS Library and change its behavior.
See SurveyJS in action
Built-in question types
The SurveyJS Library includes all types of questions you’d expect from survey software – from simple text entry and checkboxes to a dynamic matrix with different input types. We implemented a special Panel container so you can easily handle groups of questions as one. The complete list of supported question types is available here.
JavaScript widgets
Integrate your favorite JavaScript widgets
It’s things like these that make it worth using a programming library over an end-user services that are limited to built-in questions. Our library can be extended with your favorite JavaScript widgets. The live example shown here features a range track bar, but it’s easy to imagine other custom widgets – a tree view, a chart, and so on.
Survey Logic
You can change elements visibility, make elements enable/disable and require/unrequire by writting expressions. The expression can be as simple as: "{single} = ‘yes’" or complex with many boolean conditions, arithmetic operations, built-in, or your own, JavaScript functions registered in our Library.
You can validate question answer using regular expression or our expression engine.
Perform operations, change question values, complete the survey, skip to a question, run expression, or change the text for ‘Thank you page’, when a Boolean expression is succeeded.
Our survey library allows you to run JavaScript functions asynchronously. This means you can call a web service, get the result on client, and check it in our expression engine
SurveyJS is a JavaScript library. Its events can be used to change to write the custom JavaScript code, and change the library's behavior.
Design and Bootstrap support
Responsive Web Design
The SurveyJS Library is rendered differently on desktop and on mobile devices, and we created a UI that adapts to different types of devices.
Design and Bootstrap support
SurveyJS allows you to customize every element with CSS, re-use the built-in themes, or apply your site's Bootstrap theme.
Markdown for Text Formatting
Questions and possible answers – you can use markdown to format all the text in your survey. SurveyJS allows you to integrate markdown libraries – and there’s a number of very reliable and popular libraries, including open source solutions with an MIT license. In this example, we used only a few lines of code to add text formatting support via a third-party library.
Survey Results in JSON
Survey Model in JSON
The survey model – the question types, the order, the skipping logic, the answer variants – everything is stored in JSON format. Even if you use WYSIWYG Survey Creator to create the survey, you can use the resulting JSON in the SurveyJS Library. This happens automatically when you use the SurveyJS Service to store and load models.
To create a survey, you can deserialize JSON, create SurveyJS object’s instances in JavaScript, or use JSON and then modify SurveyJS objects in JavaScript.
Survey Results in JSON
It would only be logical to assume that SurveyJS generates results as JSON as well. You can specify when data is obtained: when the survey is completed, when a user navigates to the next page, or picks a value from a list. You can even pre-load a JSON with possible answers.
Dynamic questions
In many cases, the survey question models have to be dynamic when the data comes from different services. SurveyJS allows you to load the data from restful API without writing any code. The survey model can also be changed in code and gives you unlimited possibilities.
Multi-languages support
Localization and Multi-languages support
We understand the importance of product localization. Like many other libraries, we provide translations of SurveyJS strings. What about multi-language support in one survey? What happens if you have to run the same survey, for example, in English and Spanish? With SurveyJS's built-in multi-language support, you do not need to create two different surveys.
Create complex Forms
Using Dynamic Panel Question, Expression Question, supporting built-in and custom functions, you may create complex forms.
Our users created forms with many pages and master-detail relationships between objects in those forms. Here is an example.
Create a Quiz
You may create a survey with a start page, use built-in time management functionality, and of course, compare answers. In other words, you have everything to create a Quiz.
Find out even more
SurveyJS library has functionality, like display mode (for reviewing the results), answers validation, text pre-processing, custom navigation, and more.
If you need additional functionality from the SurveyJS library, create an issue in our support center
and we'll do our best to assist you.