Self-hosted service
javahuang/SurveyKing avatar
javahuang/SurveyKing

SurveyKing: a self-hosted survey, exam and question bank system

One command to deploy a more powerful, self‑hosted alternative to SurveyMonkey.

4,015 stars598 forksJavaMIT

At a glance

What is it?
One Java deploy on H2 or MySQL that covers the whole workflow a commercial survey platform sells separately: authoring, publishing, grading, practice and analytics.
Who is it for?
The reason SurveyKing is interesting is that it collapses three products into one deployable system. Survey tooling, an exam engine with automatic grading and a question bank with a practice mode are usually three vendors and three data models, and here they share one question store, which is what makes the reuse scenarios real rather than aspirational.
Can I use it commercially?
Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 43 days ago.
What is it written in?
Mainly Java, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 7, 2026, and from our analysis. They are not legal advice.

Editorial analysis

One Docker command and an embedded database

The quick start is a single detached container:

bash
docker run -d \
+  --name surveyking \
+  -p 1991:1991 \
+  surveyking/surveyking:latest

Port 1991 on the host, then sign in at localhost with the username `admin` and the password `123456`. The README is unusually insistent about the next step: change that password immediately, and note the constraint, since new passwords must be 8 to 16 characters and contain uppercase letters, lowercase letters and digits.

The database story is the part that decides whether this suits you. It starts on H2, embedded in the container, so there is no database to provision before you can see the product. When you are ready for production the documented path is moving to MySQL. That ordering, evaluate on H2 then migrate, is a sensible default for a system holding survey responses.

Three workflows sharing one question bank

The positioning line is owning the workflow and the data, and the table underneath it breaks the product into surveys, exams and question bank practice.

Surveys cover the expected authoring surface: responsive forms, more than 20 question types, conditional logic, themes and publishing controls. Authoring paths are unusually many, from AI, Excel import, plain text and templates through to a visual editor. The response side gives you mobile preview before publishing and live reports afterwards.

Exams reuse question banks rather than duplicating them. You configure answers and scores, can randomize questions or options, attach explanations, and grading is automatic. Practice mode then serves the same bank as self-directed study with sequential, random and incorrect-answer workflows, progress tracking on desktop and mobile, plus favourites, notes and question flags.

That shared bank is the actual design decision. A question written once can appear in a formal exam, in practice, and in the analytics view, which is the workflow commercial platforms usually split across products.

Question types, branching and publishing controls

The capability table is worth reading closely because it shows how far the survey side goes. Question types include single and multiple choice, dropdowns, cascading choices, text input, matrices, NPS, ratings, signatures, file uploads, QR codes and locations.

Logic covers conditional visibility, branching, calculations, text replacement, validation, dynamically required fields and automatic option selection. That last group is what separates a serious form builder from a contact form: text replacement and automatic option selection let one form serve different respondents without duplicating it.

Publishing controls are the part most self-hosted tools leave out. You can protect a survey with a password, an allowlist or a login requirement, schedule it, cap the number of responses, expose a public result lookup, and accept responses through WeChat, which matters if your respondents are in that ecosystem.

The interface ships in English, Simplified Chinese, Traditional Chinese, Japanese, Korean, German, French and Thai. Worth knowing that screenshots in the repository are only partially localized, with editor shots in English and the rest showing Simplified Chinese.

AI authoring that streams into a preview instead of committing

The AI feature is generation with a review step rather than generation on faith. You describe the survey or exam in natural language and the generated structure streams into a live preview, so you can read what was produced before it becomes a project. The README frames it as creating from AI, Excel, plain text, templates or the visual editor, which puts AI on equal footing with the other import paths rather than as a separate flow.

AI also appears in analysis and in study support. Response analysis covers scores, answers, rankings and question-level performance, so the same authoring and question bank that produced an exam also produces the breakdown of where candidates lost marks. On the practice side there are AI-assisted explanations attached to questions.

None of the README explains which model backs these features, whether they need a separate credential, or what happens without them, so treat them as untested from the documentation and check the deployment guide before planning around them.

Where the versions actually live

There is a genuine discrepancy worth flagging, because it affects how you should pin your deployment. The README badge advertises version v1.13.0, while the newest tagged GitHub release is v0.3.0-beta.3 from 2022-02-20, preceded by v0.2.0 and v0.1.0 from late 2021. The last push was 2026-08-26 at 4009 stars, so development has clearly continued; the tags simply have not.

Practically that means the Docker tag is the reliable version handle and a GitHub release asset is not something to expect. There is also an obvious commercial deployment layer, since the README links a dedicated website, a live demo, documentation and a deployment page, which suggests hosted and supported options sit next to the open repository.

The repository itself is MIT licensed and Java, with the tree showing a clear split: `server/` and `client/` for the application, `website/` and `docs/` for the sites and documentation, and `scripts/` for tooling. Translated READMEs exist for German, French, Japanese, Korean, Thai, Simplified and Traditional Chinese, and there is a `.gitee/` directory suggesting the project is developed with Chinese forges in mind as well as GitHub.

Editorial conclusion

The reason SurveyKing is interesting is that it collapses three products into one deployable system. Survey tooling, an exam engine with automatic grading and a question bank with a practice mode are usually three vendors and three data models, and here they share one question store, which is what makes the reuse scenarios real rather than aspirational. Running it is genuinely a minute of work with Docker and an embedded H2 database, and the H2 to MySQL path is the documented upgrade. Two practical notes before you rely on it. The password rule is enforced, eight to sixteen characters with mixed case and digits, so the default credentials will not survive first login anyway. And the version story is worth a look, because the newest tagged GitHub release is v0.3.0-beta.3 from February 2022 while the README badge advertises v1.13.0, which tells you releases moved elsewhere and the Docker tag is the thing to trust.

Frequently asked questions

How do I deploy SurveyKing?

Run the published Docker image detached on port 1991, then open localhost and sign in as admin with the default password. It starts on an embedded H2 database, and the documented upgrade path is moving to MySQL when you need production durability.

Can SurveyKing run exams and not just surveys?

Yes. It has three workflows on one system: surveys, exams with automatic grading, and question bank practice. Exams reuse question banks, support randomization of questions and options, attach explanations and calculate results automatically.

What are the default login credentials?

Username admin with password 123456. You are expected to change it immediately, and the new password must be 8 to 16 characters with uppercase letters, lowercase letters and digits.

Is there a free alternative to SurveyMonkey?

SurveyKing positions itself as a self-hosted option you run yourself, MIT licensed and on GitHub, which means responses stay on infrastructure you control. There is also a hosted website and live demo linked from the README if you would rather not operate it.

Official sources

  1. javahuang/SurveyKing on GitHub
  2. License: MIT
  3. Project website
  4. README
  5. Releases
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/javahuang-surveyking.svg)](https://hysenlabs.com/projects/javahuang-surveyking)