Privacy-First Survey Platform for JSON-Driven Data Collection and Management

Seamlessly integrate SurveyJS into your React app to build, render, and analyze surveys entirely within your own environment — no external data storage, no third-party servers.

SurveyJS Form Library

SurveyJS Form Library is a free, open-source JavaScript library licensed under MIT. It renders dynamic forms in the browser based on JSON definitions and collects responses. The library supports standard input types such as Text, Number, Date, Email, Dropdown, and Checkboxes, as well as advanced question types including Dynamic Panels, Matrices, Range Sliders, File Upload, Photo Capture, and more. It also includes features such as conditional visibility, auto-population, calculated fields, response carry-forward, real-time data validation, and various navigation options, including a Table of Contents and progress bar. With SurveyJS Form Library, you can capture accurate data, provide guidance to respondents through custom hints and error messages, and adapt the form content dynamically to respondents’ inputs.


import "survey-core/survey-core.min.css";
import { Model } from "survey-core";
import { Survey } from "survey-react-ui";

const surveyJson = {
  // ...
};

export function SurveyComponent() {
    const survey = new Model(surveyJson);
    survey.onComplete.add((sender, options) => {
        // Store data in your data storage
        console.log(
            JSON.stringify(sender.data, null, 3));
    });
    return <Survey model={survey} />;
}
                

SurveyJS Survey Creator

A self-hosted drag-and-drop form builder that automatically generates JSON definition (schemas) of your forms in real time. Create and easily modify forms in-house. Try out a free demo built to evaluate the capabilities of the Survey Creator library. Survey Creator is a self-hosted, open-source form builder with a modern drag-and-drop interface that allows users to design and manage forms without writing code. It generates a JSON schema for rendering using SurveyJS Form Library. The interface is configurable and can be tailored to user needs, including UI localization and custom branding to ensure the form builder blends seamlessly with your application’s design. Survey Creator is fully accessible and animated, it provides a rich Toolbox of question types and supports advanced features such as repeating data sections, calculated fields, conditional logic, custom validators, default values, and more. It enables teams to create complex, interactive JSON-based forms in-house, iterate quickly, and maintain full control over form structure, design, behaviour. A free demo is available to explore its features and functionality


import { SurveyCreator, SurveyCreatorComponent } from "survey-creator-react";
import "survey-core/survey-core.min.css";
import "survey-creator-core/survey-creator-core.min.css";

const creatorOptions = {
  // ...
};

export function SurveyCreatorWidget() {
  const creator = new SurveyCreator(creatorOptions);
  return <SurveyCreatorComponent creator={creator} />;
}
        

SurveyJS Dashboard

SurveyJS Dashboard is a tool for visualising and analysing survey data. It interprets the JSON schema of a survey to identify question types and renders collected responses using interactive charts and tables. The dashboard provides built-in visualisers for standard question types and allows you to create custom visualisers. It also includes a Table View component — a grid-based display of survey responses — with client- or server-side pagination, filtering, and sorting options. With SurveyJS Dashboard, you can review and analyse survey results in a centralized view without having to rely on external reporting tools.


const surveyJson = {
  // ...
};

const survey = new Survey.Model(json);
const allQuestions = survey.getAllQuestions();
const node = document.getElementById("survey-dashboard");

fetch("https://www.example.com/survey-results/")
  .then(response => response.json())
  .then(data => {
    const vizPanel = new SurveyAnalytics.VisualizationPanel(
      allQuestions,
      data
    );
    vizPanel.render(node);
});
                

SurveyJS PDF Generator

SurveyJS PDF Generator is an open-source JavaScript library that converts SurveyJS forms into printable PDF files in the browser. It reproduces the layout and content of forms based on their JSON schema generated in Survey Creator and can create both editable and read-only PDFs. You can pre-fill PDFs with responses collected through SurveyJS Form Library to produce ready-to-share or printable surveys. Together, PDF Generator and Form Library allow you to provide both an interactive web form and a printable PDF from a single form definition. If you want to use existing PDF files and preserve a pixel-perfect design, SurveyJS also provides a plugin (introduced in v2.1.0) that links survey fields to editable fields within your PDF form. Users can enter data through a dynamic SurveyJS interface, and their responses are automatically populated in the corresponding PDF fields.


import { SurveyPDF } from "survey-pdf";

function prepareSurveyPDF() {
  const surveyPDF = new SurveyPDF(json);
  surveyPDF.data = survey.data;
  return surveyPDF;
}
function savePdfAsFile() {
  const surveyPDF = prepareSurveyPDF();
  surveyPDF.save("surveyAsFile.pdf");
}
function savePdfAsBlob() {
  const surveyPDF = prepareSurveyPDF();
  surveyPDF
    .raw("bloburl")
    .then(function (bloburl) {
      const a = document.createElement("a");
      a.href = bloburl;
      a.download = "surveyAsBlob.pdf";
      document.body.appendChild(a);
      a.click();
    });
}
function previewPdf() {
  const surveyPDF = prepareSurveyPDF();
  const oldFrame = document.getElementById("pdf-preview-frame");
  if (oldFrame)
    oldFrame.parentNode.removeChild(oldFrame);
  surveyPDF
    .raw("dataurlstring")
    .then(function (dataurl) {
      const pdfEmbed = document.createElement("embed");
      pdfEmbed.setAttribute("id", "pdf-preview-frame");
      pdfEmbed.setAttribute("type", "application/pdf");
      pdfEmbed.setAttribute("style", "width:100%");
      pdfEmbed.setAttribute("height", 200);
      pdfEmbed.setAttribute("src", dataurl);
      const previewDiv = document.getElementById("pdf-preview");
      previewDiv.appendChild(pdfEmbed);
  });
}
                

Survey management system examples

SurveyJS provides JavaScript UI libraries for Angular, React, Vue 3, and vanilla JS that let you build a full-cycle survey management system on the client side. You can connect these libraries to any server or database to have full control over data storage, user management, and backend logic. With SurveyJS, your users can create, edit, and publish surveys, collect responses, and analyse results using built-in visualisation tools. View examples of such systems for the most popular backend frameworks and CMS:

Node.js

Learn how to integrate SurveyJS components with a Node.js server.

ASP.NET Core

View a demo example of how SurveyJS works with an ASP.NET Core backend.

PHP

Configure client-server interaction of SurveyJS components with a PHP backend.

WordPress

Embed SurveyJS Form Library and Survey Creator in your site using a WordPress plugin.

Domain Model

Generate forms for domain models and edit them in Survey Creator.

Node.js + PostgreSQL

Save forms and user responses in a PostgreSQL database on a Node.js server.

Node.js + MongoDB

Integrate SurveyJS components with a Node.js server that uses a MongoDB database.

Python

Configure client-server interaction of SurveyJS components with a Python backend.

To learn more about how SurveyJS libraries interact with your backend, see the following help topic: Integrate SurveyJS Libraries with Backend .

Still got questions?

Check our FAQ or Contact Us

Why Choose a Self-Hosted Survey System

Data Ownership and Privacy

A self-hosted setup gives you complete control over your survey data and infrastructure. All survey definitions, responses, and user information remain on your servers — not on third-party platforms. This ensures that your data never leaves your environment and makes it easier to comply with internal data security policies and external regulations such as GDPR or HIPAA. You are in charge of your own data retention and encryption practices, set up secure backups, and decide exactly where and how information is stored.

Integration with Internal Systems

Self-hosting makes it easy to integrate your survey solution into existing infrastructure. You can connect it directly to your existing organisation’s authentication system, and use the same credentials and access policies already in place. Surveys can also interact with internal databases, CRMs, or analytics tools without exposing APIs to the outside world. This seamless integration simplifies workflows and keeps all operations within your controlled environment.

Auditability and Transparency

With a self-hosted survey platform, you can implement a complete audit trail to track all key actions and changes. This includes who created, modified, or deleted a survey, when responses were collected or updated, and who accessed particular records. Such detailed logging supports compliance, enhances accountability, and provides transparency for internal reviews or audits. The audit trail can be stored and managed alongside your existing logging systems.

Customisation and Extensibility

Self-hosted deployment allows you to adapt every aspect of the survey experience to your specific needs. You can modify form logic, extend functionality, or build custom question types, validators, and data visualisers. The interface can be fully branded to match your design system, and the workflow can be integrated directly into your own application. This flexibility ensures that your survey tool looks, behaves, and scales exactly as you need it to.

Performance and Scalability

When you host a survey system yourself, you can optimize performance according to your infrastructure and usage patterns. You decide how to configure caching, load balancing, and database performance to ensure stable operation even under high response volumes. The system can scale horizontally with your application and grow as your organisation’s data collection needs expand, without dependency on external service limits.

Cost Efficiency Over Time

Self-hosted survey software such as SurveyJS eliminates the ongoing per-user and per-response fees typical of SaaS platforms. You control hosting and scaling costs directly, which makes long-term operational expenses predictable. Licenses are required only for developers who work with the SurveyJS APIs and handle the integration — and each developer license is a one-time purchase. Once deployed, you can run unlimited surveys and collect as many responses as your infrastructure allows, without worrying about plan restrictions or usage tiers.

Security and Access Control

Self-hosting enables you to enforce your organisation’s own security and access policies. You can manage user permissions, firewall rules, and encryption standards according to your internal guidelines. Fine-grained access levels can be defined for survey creation, editing, response viewing, and data export. This gives your team full control over who can access which data and ensures that all operations align with your security requirements.

Your cookie settings

We use cookies to make your browsing experience more convenient and personal. Some cookies are essential, while others help us analyse traffic. Your personal data and cookies may be used for ad personalization. By clicking “Accept All”, you consent to the use of all cookies as described in our Terms of Use and Privacy Statement. You can manage your preferences in “Cookie settings.”

Your renewal subscription expires soon.

Since the license is perpetual, you will still have permanent access to the product versions released within the first 12 month of the original purchase date.

If you wish to continue receiving technical support from our Help Desk specialists and maintain access to the latest product updates, make sure to renew your subscription by clicking the "Renew" button below.

Your renewal subscription has expired.

Since the license is perpetual, you will still have permanent access to the product versions released within the first 12 month of the original purchase date.

If you wish to continue receiving technical support from our Help Desk specialists and maintain access to the latest product updates, make sure to renew your subscription by clicking the "Renew" button below.